我正在开发音乐播放应用。当用户将我的应用程序推送到背景歌曲时播放正常。现在,如果用户打开相机并开始从相机录制视频,我需要暂停从我的应用程序播放的歌曲。如何做到这一点?
答案 0 :(得分:0)
我希望负责视频录制的应用会请求音频焦点通知其他应用,他们应该停止播放。 如果就是这种情况,
您可以像这样实施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以了解媒体播放。
答案 1 :(得分:-1)
您可以使用方法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意味着相机正在被另一个进程使用,或者设备策略管理器已经禁用了摄像头。