当用户打开相机并开始录制视频时,Android暂停媒体播放器

时间:2016-03-01 13:31:14

标签: android camera media-player

我正在开发音乐播放应用。当用户将我的应用程序推送到背景歌曲时播放正常。现在,如果用户打开相机并开始从相机录制视频,我需要暂停从我的应用程序播放的歌曲。如何做到这一点?

2 个答案:

答案 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意味着相机正在被另一个进程使用,或者设备策略管理器已经禁用了摄像头。