首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当用户打开相机并开始录制视频时,Android暂停媒体播放器

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

Stack Overflow用户
提问于 2016-03-01 13:31:14
回答 2查看 947关注 0票数 1

我正在开发音乐播放应用程序。当用户将我的应用推到后台时,歌曲播放得很好。现在,如果用户打开相机并开始从摄像机录制视频,我需要暂停从我的应用程序.How播放的歌曲来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-01 13:45:10

我希望负责视频录制的应用程序将要求音频焦点通知其他应用程序,它们应该停止播放。如果是这样的话,您可以这样实现AudioManager.OnAudioFocusChangeListener

代码语言:javascript
运行
复制
@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等的方法。

另请参阅此指南以获得媒体回放。

票数 0
EN

Stack Overflow用户

发布于 2016-03-01 13:49:54

您可以使用方法Camera.open(cameraId)检查它。

创建一个新的相机对象来访问特定的硬件摄像机。如果同一台相机被其他应用程序打开,这将引发一个RuntimeException。

如果打开相机失败,抛出RuntimeException (例如,如果相机被另一个进程或设备策略管理器禁用)。更新:

示例:

代码语言:javascript
运行
复制
public boolean isCameraUsebyApp() {
    Camera camera = null;
    try {
        camera = Camera.open();
    } catch (RuntimeException e) {
        return true;
    } finally {
        if (camera != null) camera.release();
    }
    return false;
}

你可以用这个方法来使用,但是要记住,这个方法首先要获得相机。

如果它获得成功,那么它意味着没有其他应用程序正在使用该相机,并且不要忘记再次释放它,否则您将无法再次获得它。

它的抛出RuntimeException,这意味着相机是由另一个进程或设备策略管理器已禁用相机。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35724297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档