Android Open Source - app-o-lantern Sound Manager






From Project

Back to project page app-o-lantern.

License

The source code is released under:

Apache License

If you think the Android project app-o-lantern listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.octagonsoftware.appolantern.android;
/*from  w ww.j  a va 2  s .  c om*/
import android.content.Context;
import android.media.AudioManager;
import android.media.AudioManager.OnAudioFocusChangeListener;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;

/**
 * Encapsulates the details of playing audio sound effects.
 *
 * @author markroth8
 */
public class SoundManager
    implements OnAudioFocusChangeListener
{
    private Context _context;
    private MediaPlayer _mediaPlayer;
    private AudioManager _audioManager;
    private boolean _audioFocus = false;

    public SoundManager(Context context) {
        _context = context;
        _audioManager = (AudioManager) _context.getSystemService(Context.AUDIO_SERVICE);
        int result = _audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC,
            AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
        if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
            _audioFocus = true;
        }
    }
    
    public synchronized void playSound(int resId) {
        stop();
        if (_audioFocus) {
            _mediaPlayer = MediaPlayer.create(_context, resId);
            _mediaPlayer.start();
            _mediaPlayer.setOnCompletionListener(
                new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        stop();
                    }
                }
            );
        }
    }
    
    public synchronized void stop() {
        if (_mediaPlayer != null) {
            if (_mediaPlayer.isPlaying()) {
                _mediaPlayer.stop();
            }
            _mediaPlayer.release();
            _mediaPlayer = null;
        }
    }

    @Override
    public void onAudioFocusChange(int focusChange) {
        switch (focusChange) {
            case AudioManager.AUDIOFOCUS_LOSS:
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                // we're only playing short sounds, so just stop playing sounds if something else is going on. We'll pick up at
                // the next sound.
                stop();
                _audioFocus = false;
                break;
            case AudioManager.AUDIOFOCUS_GAIN:
                _audioFocus = true;
                break;
            default:
                // unknown event - just ignore.
                break;
        }
    }
}




Java Source Code List

com.octagonsoftware.appolantern.android.AppOLanternActivity.java
com.octagonsoftware.appolantern.android.AppOLanternRenderer.java
com.octagonsoftware.appolantern.android.AppOLanternView.java
com.octagonsoftware.appolantern.android.BlankActivity.java
com.octagonsoftware.appolantern.android.Eula.java
com.octagonsoftware.appolantern.android.SoundManager.java
com.octagonsoftware.appolantern.android.SoundTimer.java
com.octagonsoftware.appolantern.android.util.SystemUiHiderBase.java
com.octagonsoftware.appolantern.android.util.SystemUiHiderHoneycomb.java
com.octagonsoftware.appolantern.android.util.SystemUiHider.java