首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -启动视频时暂停音乐播放器

Android -启动视频时暂停音乐播放器
EN

Stack Overflow用户
提问于 2012-07-16 20:12:25
回答 1查看 1.1K关注 0票数 0

我有一个音频播放器和视频播放器的应用程序。我希望当音频播放器在后台播放而我启动视频时,音频播放器会自动停止播放。

我可以通过广播接收器轻松地实现这一点,方法是在打开视频时发送意图,并在音频播放器中侦听该意图,然后在onReceive()中停止该意图。

但是,我想将此功能不仅扩展到我的音频播放器,而且扩展到所有音频播放器。所以我在想,当视频播放器打开时,是否有发送的标准意图?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-16 20:25:07

为此,您应该使用audio focus。Cf RandomMusicPlayer示例安卓项目:

代码语言:javascript
复制
public class AudioFocusHelper {
    AudioManager mAM;
    MusicFocusable mFocusable;

    private final AudioManager.OnAudioFocusChangeListener listener = new AudioManager.OnAudioFocusChangeListener() {

        @Override
        /** 
         * Called by AudioManager on audio focus changes. We implement this by calling our
         * MusicFocusable appropriately to relay the message.
         */
        public void onAudioFocusChange(int focusChange) {
            if (mFocusable == null) return;
            switch (focusChange) {
                case AudioManager.AUDIOFOCUS_GAIN:
                    mFocusable.onGainedAudioFocus();
                    break;
                case AudioManager.AUDIOFOCUS_LOSS:
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                    mFocusable.onLostAudioFocus(false);
                    break;
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                    mFocusable.onLostAudioFocus(true);
                    break;
                 default:
            }
        }
    };;

    public AudioFocusHelper(Context ctx, MusicFocusable focusable) {
        mAM = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE);
        mFocusable = focusable;
    }

    /** Requests audio focus. Returns whether request was successful or not. */
    public boolean requestFocus() {
        return AudioManager.AUDIOFOCUS_REQUEST_GRANTED ==
            mAM.requestAudioFocus(listener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
    }

    /** Abandons audio focus. Returns whether request was successful or not. */
    public boolean abandonFocus() {
        return AudioManager.AUDIOFOCUS_REQUEST_GRANTED == mAM.abandonAudioFocus(listener);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11504056

复制
相关文章

相似问题

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