android.media.AudioManager#AUDIOFOCUS_LOSS_TRANSIENT源码实例Demo

下面列出了android.media.AudioManager#AUDIOFOCUS_LOSS_TRANSIENT 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
public void onAudioFocusChange(int focusChange) {
    switch (focusChange) {
        case AudioManager.AUDIOFOCUS_LOSS:
            LogUtil.d(TAG, "VR AUDIOFOCUS_LOSS");
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            LogUtil.d(TAG, "VR AUDIOFOCUS_LOSS_TRANSIENT");
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            LogUtil.d(TAG, "VR AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
            break;
        case AudioManager.AUDIOFOCUS_GAIN:
            LogUtil.d(TAG, "VR AUDIOFOCUS_GAIN");
            break;
        default:
            break;
    }
}
 
源代码2 项目: Dashchan   文件: AudioPlayerService.java
@Override
public void onAudioFocusChange(int focusChange) {
	switch (focusChange) {
		case AudioManager.AUDIOFOCUS_LOSS: {
			pause(true);
			break;
		}
		case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: {
			boolean playing = mediaPlayer.isPlaying();
			pause(false);
			if (playing) {
				pausedByTransientLossOfFocus = true;
			}
			break;
		}
		case AudioManager.AUDIOFOCUS_GAIN: {
			if (pausedByTransientLossOfFocus) {
				play(false);
			}
			break;
		}
	}
}
 
public void onAudioFocusChange(int focusChange) {
  AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  switch (focusChange) {
    case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK):
      // Lower the volume while ducking.
      mediaPlayer.setVolume(0.2f, 0.2f);
      break;
    case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT):
      mediaPlayer.pause();
      break;
    case (AudioManager.AUDIOFOCUS_LOSS):
      mediaPlayer.stop();
      am.abandonAudioFocus(this);
      break;
    case (AudioManager.AUDIOFOCUS_GAIN):
      // Return the volume to normal and resume if paused.
      mediaPlayer.setVolume(1f, 1f);
      mediaPlayer.start();
      break;
    default:
      break;
  }
}
 
源代码4 项目: chromadoze   文件: AudioFocusHelper.java
@Override
public void onAudioFocusChange(int focusChange) {
    switch (focusChange) {
        case AudioManager.AUDIOFOCUS_LOSS:
            // For example, a music player or a sleep timer stealing focus.
            NoiseService.stopNow(mContext, R.string.stop_reason_audiofocus);
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            // For example, an alarm or phone call.
            mVolumeListener.setDuckLevel(SampleShuffler.VolumeListener.DuckLevel.SILENT);
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            // For example, an email notification.
            mVolumeListener.setDuckLevel(SampleShuffler.VolumeListener.DuckLevel.DUCK);
            break;
        case AudioManager.AUDIOFOCUS_GAIN:
            // Resume the default volume level.
            mVolumeListener.setDuckLevel(SampleShuffler.VolumeListener.DuckLevel.NORMAL);
            break;
    }
}
 
@Override
public void onAudioFocusChange(int focusChange) {
    switch (focusChange) {
        case AudioManager.AUDIOFOCUS_LOSS:
            MsgHandlerCenter.dispatchMessage(CommonParams.VR_AUDIOFOCUS_LOSS);
            LogUtil.d(TAG, "VR AUDIOFOCUS_LOSS");
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            MsgHandlerCenter.dispatchMessage(CommonParams.VR_AUDIOFOCUS_LOSS_TRANSIENT);
            LogUtil.d(TAG, "VR AUDIOFOCUS_LOSS_TRANSIENT");
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            MsgHandlerCenter.dispatchMessage(CommonParams.VR_AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK);
            LogUtil.d(TAG, "VR AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
            break;
        case AudioManager.AUDIOFOCUS_GAIN:
            MsgHandlerCenter.dispatchMessage(CommonParams.VR_AUDIOFOCUS_GAIN);
            LogUtil.d(TAG, "VR AUDIOFOCUS_GAIN");
            break;
        default:
            break;
    }
}
 
public void onAudioFocusChange(int focusChange) {
  AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  switch (focusChange) {
    case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) :
      // Lower the volume while ducking.
      mediaPlayer.setVolume(0.2f, 0.2f);
      break;
    case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) :
      mediaPlayer.pause();
      break;
    case (AudioManager.AUDIOFOCUS_LOSS) :
      mediaPlayer.stop();
      am.abandonAudioFocus(this);
      break;
    case (AudioManager.AUDIOFOCUS_GAIN) :
      // Return the volume to normal and resume if paused.
      mediaPlayer.setVolume(1f, 1f);
      mediaPlayer.start();
      break;
    default: break;
  }
  updatePlaybackState();
}
 
源代码7 项目: GSYVideoPlayer   文件: MultiSampleVideo.java
@Override
protected void init(Context context) {
    super.init(context);
    mCoverImage = (ImageView) findViewById(R.id.thumbImage);
    if (mThumbImageViewLayout != null &&
            (mCurrentState == -1 || mCurrentState == CURRENT_STATE_NORMAL || mCurrentState == CURRENT_STATE_ERROR)) {
        mThumbImageViewLayout.setVisibility(VISIBLE);
    }
    onAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
        @Override
        public void onAudioFocusChange(int focusChange) {
            switch (focusChange) {
                case AudioManager.AUDIOFOCUS_GAIN:
                    break;
                case AudioManager.AUDIOFOCUS_LOSS:
                    //todo 判断如果不是外界造成的就不处理
                    break;
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                    //todo 判断如果不是外界造成的就不处理
                    break;
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                    break;
            }
        }
    };
}
 
源代码8 项目: iGap-Android   文件: MusicPlayer.java
@Override
public void onAudioFocusChange(int focusChange) {
    latestAudioFocusState = focusChange;
    if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT || focusChange == AudioManager.AUDIOFOCUS_LOSS) {
        pauseOnAudioFocusChange = true;
        if (mp != null && mp.isPlaying()) pauseSound();
    } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
        if (pauseOnAudioFocusChange) {
            pauseOnAudioFocusChange = false;
            //playSound(); // commented this line because after receive incoming call and end call, this listener will be called and sound will be played!!!
        }
    }
}
 
源代码9 项目: Rey-MusicPlayer   文件: MusicService.java
@Override
public void onAudioFocusChange(int focusChange) {
    if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
        try {
            stopPlaying();
            mAudioManagerHelper.setHasAudioFocus(false);
        } catch (Exception e) {
            e.printStackTrace();
        }

    } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
        mAudioManagerHelper.setAudioDucked(true);
        mAudioManagerHelper.setTargetVolume(5);
        mAudioManagerHelper.setStepDownIncrement(1);
        mAudioManagerHelper.setCurrentVolume(mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC));
        mAudioManagerHelper.setOriginalVolume(mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC));
        mHandler.post(duckDownVolumeRunnable);

    } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
        if (mAudioManagerHelper.isAudioDucked()) {
            mAudioManagerHelper.setTargetVolume(mAudioManagerHelper.getOriginalVolume());
            mAudioManagerHelper.setStepUpIncrement(1);
            mAudioManagerHelper.setCurrentVolume(mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC));
            mHandler.post(duckUpVolumeRunnable);
            mAudioManagerHelper.setAudioDucked(false);
        } else {
            mAudioManagerHelper.setHasAudioFocus(true);
        }
    } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
        if (mMediaPlayer1 != null) {
            stopPlaying();
        }
        mAudioManagerHelper.setHasAudioFocus(false);
    }

}
 
源代码10 项目: android-MediaRouter   文件: MainActivity.java
@Override
public void onAudioFocusChange(int focusChange) {
    if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
        Log.d(TAG, "onAudioFocusChange: LOSS_TRANSIENT");
    } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
        Log.d(TAG, "onAudioFocusChange: AUDIOFOCUS_GAIN");
    } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
        Log.d(TAG, "onAudioFocusChange: AUDIOFOCUS_LOSS");
    }
}
 
源代码11 项目: TigerVideo   文件: VideoPlayerView.java
/************************ 音频焦点获取与释放 ********************************/

    @Override
    public void onAudioFocusChange(int focusChange) {

        switch (focusChange) {
            case AudioManager.AUDIOFOCUS_GAIN:
                if(PlayerManager.getInstance().getState() == PlayState.STATE_PAUSE) {
                    PlayerManager.getInstance().play();
                }
                break;
            case AudioManager.AUDIOFOCUS_LOSS:
                //长时间失去Focus
                PlayerManager.getInstance().stop();
                Utils.log("AudioManager.AUDIOFOCUS_LOSS");
                break;
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                //短时间失去Focus
                if (PlayerManager.getInstance().isPlaying()) {
                    PlayerManager.getInstance().pause();
                }
                Utils.log("AudioManager.AUDIOFOCUS_LOSS_TRANSIENT");
                break;
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                break;
        }
    }
 
源代码12 项目: LyricHere   文件: LocalPlayback.java
/**
 * Called by AudioManager on audio focus changes.
 * Implementation of {@link android.media.AudioManager.OnAudioFocusChangeListener}
 */
@Override
public void onAudioFocusChange(int focusChange) {
    LogUtils.d(TAG, "onAudioFocusChange. focusChange=", focusChange);
    if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
        // We have gained focus:
        mAudioFocus = AUDIO_FOCUSED;

    } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS ||
            focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
            focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
        // We have lost focus. If we can duck (low playback volume), we can keep playing.
        // Otherwise, we need to pause the playback.
        boolean canDuck = focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK;
        mAudioFocus = canDuck ? AUDIO_NO_FOCUS_CAN_DUCK : AUDIO_NO_FOCUS_NO_DUCK;

        // If we are playing, we need to reset media player by calling configMediaPlayerState
        // with mAudioFocus properly set.
        if (mState == PlaybackStateCompat.STATE_PLAYING && !canDuck) {
            // If we don't have audio focus and can't duck, we save the information that
            // we were playing, so that we can resume playback once we get the focus back.
            mPlayOnFocusGain = true;
        }
    } else {
        LogUtils.e(TAG, "onAudioFocusChange: Ignoring unsupported focusChange: ", focusChange);
    }
    configMediaPlayerState();
}
 
源代码13 项目: MusicPlus   文件: LocalMusicPlayService.java
@Override
public void onAudioFocusChange(int focusChange) {
	switch (focusChange) {
    case AudioManager.AUDIOFOCUS_GAIN:
        if (mMediaPlayer == null){
        	return;
        }else if (!mMediaPlayer.isPlaying()) {
        	mMediaPlayer.start();
        }
        mMediaPlayer.setVolume(0.5f, 0.5f);
        break;

    case AudioManager.AUDIOFOCUS_LOSS:
        if (mMediaPlayer.isPlaying()) 
        	mMediaPlayer.stop();
        mMediaPlayer.release();
        break;
    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
        if (mMediaPlayer.isPlaying()) 
        	mMediaPlayer.pause();
        break;

    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
        if (mMediaPlayer.isPlaying()) 
        	mMediaPlayer.setVolume(0.1f, 0.1f);
        break;
	}

}
 
源代码14 项目: HaoReader   文件: AudioFocusManager.java
@Override
public void onAudioFocusChange(int focusChange) {
    switch (focusChange) {
        // 重新获得焦点
        case AudioManager.AUDIOFOCUS_GAIN:
            if (isPausedByFocusLossTransient) {
                // 通话结束,恢复播放
                onFocusGainFromFocusLossTransient();
            }else {
                // 恢复音量
                onFocusGain();
            }
            isPausedByFocusLossTransient = false;
            Logger.d(TAG, "重新获得焦点");
            break;
        // 永久丢失焦点,如被其他播放器抢占
        case AudioManager.AUDIOFOCUS_LOSS:
            onFocusLoss();
            abandonAudioFocus();
            Logger.d(TAG, "永久丢失焦点,如被其他播放器抢占");
            break;
        // 短暂丢失焦点,如来电
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            onFocusLossTransient();
            isPausedByFocusLossTransient = true;
            Logger.d(TAG, "短暂丢失焦点,如来电");
            break;
        // 瞬间丢失焦点,如通知
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            // 音量减小为一半
            onFocusLossTransientCanDuck();
            Logger.d(TAG, "瞬间丢失焦点,如通知");
            break;
        default:
            break;
    }
}
 
源代码15 项目: blade-player   文件: PlayerMediaPlayer.java
@Override
public void onAudioFocusChange(int focusChange)
{
    switch(focusChange)
    {
        case AudioManager.AUDIOFOCUS_GAIN:
            if(playOnAudioFocus && !isPlaying()) play();
            else if(isPlaying()) setVolume(MEDIA_VOLUME_DEFAULT, MEDIA_VOLUME_DEFAULT);
            playOnAudioFocus = PLAY_ON_AUDIOFOCUS;
            break;

        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            //setVolume(MEDIA_VOLUME_DUCK, MEDIA_VOLUME_DUCK);
            /* we don't want to 'duck' for now, so take the same action as AUDIOFOCUS_LOSS_TRANSIENT */
            if(isPlaying()) {playOnAudioFocus = true; pause();}
            break;

        /* We only lost audiofocus for a small ammount of time, relaunch player just after */
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            if(isPlaying()) {playOnAudioFocus = true; pause();}
            break;

        /* We lost audiofocus definetely ; maybe another player was started or ... */
        case AudioManager.AUDIOFOCUS_LOSS:
            if(isPlaying()) pause();
            break;
    }
}
 
源代码16 项目: DKVideoPlayer   文件: AudioFocusHelper.java
private void handleAudioFocusChange(int focusChange) {
    final VideoView videoView = mWeakVideoView.get();
    if (videoView == null) {
        return;
    }
    switch (focusChange) {
        case AudioManager.AUDIOFOCUS_GAIN://获得焦点
        case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT://暂时获得焦点
            if (mStartRequested || mPausedForLoss) {
                videoView.start();
                mStartRequested = false;
                mPausedForLoss = false;
            }
            if (!videoView.isMute())//恢复音量
                videoView.setVolume(1.0f, 1.0f);
            break;
        case AudioManager.AUDIOFOCUS_LOSS://焦点丢失
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT://焦点暂时丢失
            if (videoView.isPlaying()) {
                mPausedForLoss = true;
                videoView.pause();
            }
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK://此时需降低音量
            if (videoView.isPlaying() && !videoView.isMute()) {
                videoView.setVolume(0.1f, 0.1f);
            }
            break;
    }
}
 
源代码17 项目: apollo-DuerOS   文件: ModeService.java
/**
 * 1. called when audio focus changed
 * <p>
 * 2. only change status of mIsMachinePause
 * 
 * @param audioFocusStatus
 * 
 * @return <p>
 *         false:can resume/can not pause;
 *         <p>
 *         true:can pause/can not resume;
 */

public boolean getMode(int audioFocusStatus) {
    switch (audioFocusStatus) {
        // On HU side, VR and telephone may lead to audio focus loss transient, in this case HU will
        // actively pause the music playing back by sending Module Control command
        // and after that, HU need resume music playing when audio focus gained
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            if (getIsVRWorking()) {
                return false;
            }

            if (!getIsUserPause()) {
                // Set flag to indicate music paused by HU due to audio focus loss
                setIsMachinePause(true);
                return true;
            } else {
                return false;
            }

        case AudioManager.AUDIOFOCUS_GAIN:
            if (!getIsUserPause()) {
                if (getIsMachinePause()) {
                    setIsMachinePause(false);
                    return false;
                }
            } else {
                return true;
            }

        default:
            break;
    }

    return true;
}
 
源代码18 项目: CodenameOne   文件: Audio.java
@Override
public void onAudioFocusChange(int focusChange) {
    switch (focusChange) {
        case AudioManager.AUDIOFOCUS_GAIN:
            // resume playback
            if (!isPlaying() && player != null && pausedDueToExternal) {
                player.start();
                fireMediaStateChange(State.Playing);
                if(tempVolume > -1) {
                    setVolume(tempVolume);
                    tempVolume = -1;
                }
            }
            pausedDueToExternal = false;
            break;

        case AudioManager.AUDIOFOCUS_LOSS:
            // Lost focus for an unbounded amount of time: stop playback and release media player
            cleanup();
            break;

        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            Log.d("CN1", "AUDIOFOCUS_LOSS_TRANSIENT");
            // Lost focus for a short time, but we have to stop
            // playback. We don't release the media player because playback
            // is likely to resume
            if (isPlaying()) {
                pause();
                pausedDueToExternal = true;
                fireMediaStateChange(State.Paused);
            }
            break;

        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            // Lost focus for a short time, but it's ok to keep playing
            // at an attenuated level
            if (isPlaying()) {
                tempVolume = getVolume();
                setVolume(10);
            }
            break;
    }
}
 
源代码19 项目: YCAudioPlayer   文件: AudioFocusManager.java
/**
 * 当音频焦点发生变化的时候调用这个方法,在这里可以处理逻辑
 * 欢迎访问我的GitHub:https://github.com/yangchong211
 * 如果可以的话,请star吧
 * @param focusChange       焦点改变
 */
@Override
public void onAudioFocusChange(int focusChange) {
    int volume;
    switch (focusChange) {
        // 重新获得焦点
        case AudioManager.AUDIOFOCUS_GAIN:
            if (!willPlay() && isPausedByFocusLossTransient) {
                // 通话结束,恢复播放
                mPlayService.playPause();
            }
            //获取音量
            volume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
            if (mVolumeWhenFocusLossTransientCanDuck > 0 && volume ==
                    mVolumeWhenFocusLossTransientCanDuck / 2) {
                // 恢复音量
                mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                        mVolumeWhenFocusLossTransientCanDuck, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
            }

            isPausedByFocusLossTransient = false;
            mVolumeWhenFocusLossTransientCanDuck = 0;
            break;
        // 永久丢失焦点,如被其他播放器抢占
        case AudioManager.AUDIOFOCUS_LOSS:
            // 失去audio focus很长一段时间,必须停止所有的audio播放,清理资源
            if (willPlay()) {
                forceStop();
            }
            break;
        // 短暂丢失焦点,比如来了电话或者微信视频音频聊天等等
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            // 暂时失去audio focus,但是很快就会重新获得,在此状态应该暂停所有音频播放,但是不能清除资源
            if (willPlay()) {
                forceStop();
                isPausedByFocusLossTransient = true;
            }
            break;
        // 瞬间丢失焦点,如通知
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            // 暂时失去 audio focus,但是允许持续播放音频(以很小的声音),不需要完全停止播放。
            // 音量减小为一半
            volume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
            if (willPlay() && volume > 0) {
                mVolumeWhenFocusLossTransientCanDuck = volume;
                mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                        mVolumeWhenFocusLossTransientCanDuck / 2,
                        AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
            }
            break;
        default:
            break;
    }
}
 
源代码20 项目: VCL-Android   文件: PlaybackService.java
@TargetApi(Build.VERSION_CODES.FROYO)
private OnAudioFocusChangeListener createOnAudioFocusChangeListener() {
    return new OnAudioFocusChangeListener() {
        private boolean mLossTransient = false;
        private boolean mLossTransientCanDuck = false;

        @Override
        public void onAudioFocusChange(int focusChange) {
            /*
             * Pause playback during alerts and notifications
             */
            switch (focusChange) {
                case AudioManager.AUDIOFOCUS_LOSS:
                    Log.i(TAG, "AUDIOFOCUS_LOSS");
                    // Stop playback
                    changeAudioFocus(false);
                    stop();
                    break;
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                    Log.i(TAG, "AUDIOFOCUS_LOSS_TRANSIENT");
                    // Pause playback
                    if (mMediaPlayer.isPlaying()) {
                        mLossTransient = true;
                        mMediaPlayer.pause();
                    }
                    break;
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                    Log.i(TAG, "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
                    // Lower the volume
                    if (mMediaPlayer.isPlaying()) {
                        mMediaPlayer.setVolume(36);
                        mLossTransientCanDuck = true;
                    }
                    break;
                case AudioManager.AUDIOFOCUS_GAIN:
                    Log.i(TAG, "AUDIOFOCUS_GAIN: " + mLossTransientCanDuck + ", " + mLossTransient);
                    // Resume playback
                    if (mLossTransientCanDuck) {
                        mMediaPlayer.setVolume(100);
                        mLossTransientCanDuck = false;
                    }
                    if (mLossTransient) {
                        mMediaPlayer.play();
                        mLossTransient = false;
                    }
                    break;
            }
        }
    };
}