public class MainActivity extends AppCompatActivity { private MediaPlayer mMediaPlayer; private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { releaseMediaPlayer(); } }; private AudioManager mAudioManager; AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() { public void onAudioFocusChange(int focusChange) { if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT || focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) { // Pause playback && Duck:- Lower the volume, keep playing mMediaPlayer.pause(); mMediaPlayer.seekTo(0); } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { // Your app has been granted audio focus again // Raise volume to normal, restart playback if necessary mMediaPlayer.start(); } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) { releaseMediaPlayer(); } } }; private Button mPlayButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAudioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); mPlayButton = findViewById(R.id.btn); } @Override public void onStop() { super.onStop(); releaseMediaPlayer(); } /** * Clean up the media player by releasing its resources. */ private void releaseMediaPlayer() { // If the media player is not null, then it may be currently playing a sound. if (mMediaPlayer != null) { // Regardless of the current state of the media player, release its resources // because we no longer need it. mMediaPlayer.release(); // Set the media player back to null. For our code, we've decided that // setting the media player to null is an easy way to tell that the media player // is not configured to play an audio file at the moment. mMediaPlayer = null; // Abandon audio focus when playback complete mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener); } } private void playMusic(int position){ // Word word = words.get(position); //Log.v("NumbersActivity", "Current word: " + word.toString()); releaseMediaPlayer(); // Request audio focus for playback int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, // Use the music stream. AudioManager.STREAM_MUSIC, // Request permanent focus. AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { // Start playback int[] msc = {R.raw.click,R.raw.right,R.raw.wrong,R.raw.snd_bg}; mMediaPlayer = MediaPlayer.create(this, msc[position]); mMediaPlayer.start(); mMediaPlayer.setOnCompletionListener(mCompletionListener); } } }
0 Comments