当前位置: 首页 > 知识库问答 >
问题:

停止使用onAudioFocusChange的其他音乐应用程序

梁丘弘
2023-03-14

我正在尝试创建一个在后台播放音乐的广播应用程序,但我有一个问题与其他音乐应用程序,当我的应用程序和其他音乐应用程序同时播放音乐,为此,我试图使用audiofocus解决这个问题,我的代码下面是工作的,但在一个方向

问题

>

  • (音乐应用程序,例如Google Play Music)播放音乐当我第一次运行我的应用程序时,Google Play Music停止播放音乐,我的应用程序播放音乐(作品)

    我的应用程序在后台播放音乐,当我打开Google Play music时,我的应用程序停止播放音乐和Google Play music播放音乐(作品)

    暂停播放Google Play music中的音乐以允许我的应用程序恢复/开始再次播放音乐(不工作)

    我的代码:

     private AudioManager mAudioManager;
        boolean mAudioFocusGranted = false;
        private AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
    
            @Override
            public void onAudioFocusChange(int focusChange) {
                switch (focusChange) {
                    case AudioManager.AUDIOFOCUS_GAIN:
                        mediaPlayer.start();
                        MusicButton.setChecked(false);
                        break;
                    case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT:
                        mediaPlayer.start();
                        MusicButton.setChecked(false);
                        break;
                    case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:
                        mediaPlayer.start();
                        MusicButton.setChecked(false);
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS:
                        mediaPlayer.pause();
                        MusicButton.setChecked(true);
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                        mediaPlayer.pause();
                        MusicButton.setChecked(true);
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                        mediaPlayer.setVolume(0.2f,0.2f);
                        break;
                }
            }
        };
    SuppressLint({"CommitPrefEdits", "Assert"})
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            MusicButton = findViewById(R.id.toggleButton);
            mAudioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
        if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                mAudioFocusGranted = true;
            } else if (result == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
                MusicButton.setChecked(true);
                mediaPlayer.pause();
            }
        }
    

    请有人帮我解决这个问题*对不起我的英语

  • 共有1个答案

    黎苑博
    2023-03-14

    这是我上面评论的一个总结,如果你想接受它作为回答的话:

    暂停一个应用程序中的音乐/音频通常不会触发焦点改变,从而导致另一个应用程序恢复。应用程序必须调用abandonAudioFocus()或abandonAudioFocusRequest(audioFocusRequest),通常应在响应stop()而不是pause()时调用。

    点击谷歌音乐中的暂停并不会触发你的焦点增益。你对此无能为力。如果用户暂停Google Music并想要恢复应用程序,他们将手动点击应用程序中的播放,或者通过媒体通知(如果仍然可见的话)。

    如果你想要谷歌音乐在你暂停后恢复,你必须在暂停MediaPlayer后调用abandonAudioFocus来放弃焦点。虽然用户并不一定希望暂停按钮会有这样的行为。

     类似资料:
    • ap.stopBackgroundAudio(CALLBACK) 停止播放音乐。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <style>.output{ display:block; max-width: 100%;

    • 我正在用Kotlin开发一个简单的游戏,使用LibGDX在后台播放音乐。在Android上,当用户玩游戏并按下HOME键,然后再次继续游戏时,我的暂停屏幕出现了——音乐继续播放。我想要的是,每当我的暂停屏幕显示时,音乐总是关闭。 当我开始一个新游戏时,每当我按下游戏中的“暂停”按钮,音乐就会按预期停止——然后当我点击游戏中的“继续”按钮时,音乐就会重新开始。这工作得很好。只有在按下HOME键时,我

    • ap.onBackgroundAudioStop(CALLBACK) 监听音乐停止事件。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <style>.output{ display:block; max-width: 1

    • 使用 Adobe Bridge 和 After Effects 使用 Adobe Bridge 可运行动画预设;运行跨产品工作流程自动化脚本;查看和管理文件和文件夹;通过将关键字、标签和等级分配给您的文件来组织这些文件;搜索文件和文件夹;以及查看、编辑和添加元数据。 要从 After Effects 打开 Adobe Bridge,请选择“文件”>“在 Bridge 中浏览”。 要在 Adobe

    • 我正在做一个游戏,里面有背景音乐。我想添加一个启动和停止音乐的静音按钮,但我不知道怎么做。创建音乐的方法是: 我想做的是在按钮的动作处理程序中,我想添加一个静音按钮,如果用户愿意,它可以启动和停止音频。所以它应该是这样的:如果(e.getSource()==muteButton){//启动和停止音乐} 我该怎么做?谢谢你的帮助!

    • 问题内容: 我正在研究android voip应用程序。我想确定是否还有其他应用程序正在使用麦克风。因此,我想防止在使用时从其他应用程序访问麦克风。 请任何人有想法,这将对我非常有帮助。 谢谢, 问题答案: 终于知道我们可以按以下方式检查麦克风的可用性: