我正在开发音乐播放应用程序。当用户将我的应用程序推送到背景歌曲时,播放正常。现在,如果用户打开相机并开始从相机录制视频,我需要暂停从我的应用程序播放的歌曲。怎么做?
我希望负责视频录制的应用程序将请求音频焦点以通知其他应用程序它们应该停止播放。如果是这种情况,您可以像这样实现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
等的方法。
另请参阅此媒体播放指南。
您可以使用方法Camera.open(cameraId)进行检查。
创建新的 Camera 对象以访问特定的硬件相机。如果同一相机由其他应用程序打开,这将引发运行时异常。
抛出运行时异常如果打开相机失败(例如,如果相机正由另一个进程使用或设备策略管理器已禁用相机)。更新:
例:
public boolean isCameraUsebyApp() {
Camera camera = null;
try {
camera = Camera.open();
} catch (RuntimeException e) {
return true;
} finally {
if (camera != null) camera.release();
}
return false;
}
您可以使用此方法使用 as,但请记住,此方法首先获取相机。
如果成功获取,则意味着没有其他应用程序使用此相机,并且不要忘记再次释放它,否则您将无法再次获取它。
它抛出运行时异常,这意味着相机正被另一个进程使用,或者设备策略管理器已禁用相机。