当前位置:  开发笔记 > 编程语言 > 正文

第二次调用setActive(true)时,App不会成为首选的MediaButtonReceiver

如何解决《第二次调用setActive(true)时,App不会成为首选的MediaButtonReceiver》经验,为你挑选了0个好方法。

我试图按照谷歌的谈话实施媒体按钮控制

我将接收器设置为清单:


    
        
    



    
        
    

创建MediaSessionCompatonCreate()服务:

    mediaSession = new MediaSessionCompat(getApplicationContext(), "SOUNDPROCESS");
    mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
    PlaybackStateCompat ps = new PlaybackStateCompat.Builder()
            .setActions(PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_PLAY_PAUSE)
            .build();
    mediaSession.setPlaybackState(ps);
    mediaSession.setCallback(new MediaSessionCompat.Callback() {
        @Override
        public void onPlay() { ...
           }
    });

并处理意图 onStartCommand()

MediaButtonReceiver.handleIntent(mediaSession, intent);

然后,setActive(true);当我获得音频焦点时,然后setActive(false);当我停止播放时,我会打电话.这是第一次,我的应用程序成为首选媒体按钮接收器并接收回调.

但是,如果我在我的应用程序中停止播放,请进入另一个应用程序,如Google Play音乐并开始在那里播放,然后返回我的应用程序并调用setActive(true)Google Play音乐继续接收回调,媒体按钮在我的应用中无效.

根据我的理解,最后一次调用setActive(true)应优先考虑.我已经确认isActive()返回true.我也可以通过MediaSessionCompat每次创建一个新的方法解决这个问题,但这似乎并不理想.

每次打电话时,如何让我的应用程序成为首选的媒体按钮接收器setActive(true)

更新:此处重现问题的最小项目:https://github.com/svenoaks/MediaButtonDemo.git

重现步骤:

    运行应用程序,按PLAY按钮.setActive(true)被调用,MediaButtonReceiver现在是首选的媒体按钮.

    按有线或无线耳机或其他媒体按钮上的播放/暂停按钮.Toast显示回调正在运行.

    在支持媒体按钮的Google Play音乐等其他应用上开始播放.按此应用程序暂停.

    演示应用程序不再是首选的媒体按钮接收器,即使再次按下PLAY按钮,再次呼叫setActive(true) .另一个应用程序始终响应媒体按钮.

这是在Android 6.0上测试的.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有