Android 当用户打开相机并开始录制视频时暂停媒体播放器
Android pause media player when user opens the camera and start recording video
我正在开发音乐播放应用程序。当用户将我的应用程序推送到背景歌曲时播放正常。现在,如果用户打开相机并开始从相机录制视频,我需要暂停从我的应用程序播放的歌曲。如何做到这一点?
我希望负责视频录制的应用程序会请求音频焦点以通知其他应用程序停止播放。 如果是这样的话,
你可以像这样实现 AudioManager.OnAudioFocusChangeListener
:
@Override
public void onAudioFocusChange(int focusChange)
{
if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT)
{
// pause playback
}
else if (focusChange == AudioManager.AUDIOFOCUS_LOSS)
{
((AudioManager)getSystemService(Context.AUDIO_SERVICE)).abandonAudioFocus(this);
doStopPlayback();
}
// else if... listen to other types of audio focus loss/ gain
}
其中 doStopPlayback()
是您释放 MediaPlayer
等的方法
另请参阅此 guide 以了解媒体播放。
您可以使用方法 Camera.open(cameraId).
进行检查
创建一个新的 Camera 对象以访问特定的硬件相机。如果其他应用程序打开同一个摄像头,则会抛出 RuntimeException。
抛出 RuntimeException
如果打开相机失败(例如,如果相机正在被另一个进程使用或设备策略管理器已禁用相机)。
更新:
示例:
public boolean isCameraUsebyApp() {
Camera camera = null;
try {
camera = Camera.open();
} catch (RuntimeException e) {
return true;
} finally {
if (camera != null) camera.release();
}
return false;
}
你可以使用这个方法来使用,但是要记住这一点,这个方法首先获取相机。
如果获取成功,说明没有其他应用在使用这个摄像头,不要忘记再次释放,否则将无法再次获取。
它抛出 RuntimeException,这意味着相机正在被另一个进程使用或设备策略管理器已禁用相机。
我正在开发音乐播放应用程序。当用户将我的应用程序推送到背景歌曲时播放正常。现在,如果用户打开相机并开始从相机录制视频,我需要暂停从我的应用程序播放的歌曲。如何做到这一点?
我希望负责视频录制的应用程序会请求音频焦点以通知其他应用程序停止播放。 如果是这样的话,
你可以像这样实现 AudioManager.OnAudioFocusChangeListener
:
@Override
public void onAudioFocusChange(int focusChange)
{
if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT)
{
// pause playback
}
else if (focusChange == AudioManager.AUDIOFOCUS_LOSS)
{
((AudioManager)getSystemService(Context.AUDIO_SERVICE)).abandonAudioFocus(this);
doStopPlayback();
}
// else if... listen to other types of audio focus loss/ gain
}
其中 doStopPlayback()
是您释放 MediaPlayer
等的方法
另请参阅此 guide 以了解媒体播放。
您可以使用方法 Camera.open(cameraId).
进行检查创建一个新的 Camera 对象以访问特定的硬件相机。如果其他应用程序打开同一个摄像头,则会抛出 RuntimeException。
抛出 RuntimeException 如果打开相机失败(例如,如果相机正在被另一个进程使用或设备策略管理器已禁用相机)。 更新:
示例:
public boolean isCameraUsebyApp() {
Camera camera = null;
try {
camera = Camera.open();
} catch (RuntimeException e) {
return true;
} finally {
if (camera != null) camera.release();
}
return false;
}
你可以使用这个方法来使用,但是要记住这一点,这个方法首先获取相机。
如果获取成功,说明没有其他应用在使用这个摄像头,不要忘记再次释放,否则将无法再次获取。
它抛出 RuntimeException,这意味着相机正在被另一个进程使用或设备策略管理器已禁用相机。