这两个都要输出声音,混在一起就是噪音了。
音乐播放器几乎都可在后台播放,假定媒体播放器也可在后台运行。
如果音乐播放器已经在后台出声了,媒体播放器又开始(只说播视频文件),如何做到让音乐播放器暂停或静音。
反过来也是,媒体播放器在后台了(这时只出声音不出图),又启动音乐播放器开播,如何让媒体播放暂停或静音。
系统有没有提供统一的方法来调度?还是这两个播放器之间要用私有消息?假如这两个播放器是分别两家做的,是否就无法协调了?求方法。

解决方案 »

  1.   

    呵呵,我也遇到了,相同的问题,android中也没有可以监听有两个mediaplay在播放的方法,如果这两个播放器都是你自己开发的,那还可以,用广播进行管理,挺简单,但是,如果,是不同的开发的应用,根本就不能监听,嗯,可以这样,当一个播放器在前台时,那另一个在后台把,在onpause方法中,停止后台播放器的播放。
      

  2.   

    google的音乐播放器在播放音乐的时候,会使用广播接收器接收广播,使用如下的广播,可以控制播放器:
        public static final String TOGGLEPAUSE_ACTION = "com.android.music.musicservicecommand.togglepause";
        public static final String PAUSE_ACTION = "com.android.music.musicservicecommand.pause";
        public static final String PREVIOUS_ACTION = "com.android.music.musicservicecommand.previous";
        public static final String NEXT_ACTION = "com.android.music.musicservicecommand.next";
    我想别的第三方公司在开发音乐播放器的时候,也应该会监听这几个广播。
      

  3.   

    那如果别人不用这些action字段呢?自己定义的怎么办啊(这样是完全可以的啊),你还有没有其他思路?
      

  4.   

    是啊,这几个消息google player发出了,第三方播放器可能不都学着这样做。
    看来google没有强制规定所有弄出声音的应用都必须要满足一个规范,而常用的播放器大多是独立的第三方的,似乎都不去考虑声音的重叠,只管自己播。
    不需要互斥的一个典型的例子就是后台音乐播放,而前台游戏时不时有点声音冒出来。
    在视频输出资源(屏幕!)的共享方面,google和各家os都考虑得很深透,对音频输出资源(喇叭)的共享却是没有规则啊。另外,回复2楼:
    思考了一下,如果用onpause,home操作可能会弄得本该继续播放的音乐被停止掉,会不会呢?。谢谢两位的回复。
    其它做过类似要求声音互斥的,还有没有更多的思路可供学习呢?
      

  5.   

    android有音频互斥的机制  建议可以利用 AudioFocus来实现
      

  6.   

    它就是专门用来协调声音的吗?好消息啊!
    楼上能否简要介绍下AudioFocus的原理,谢谢。