Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过扬声器播放声音,同时通过耳机播放音乐_Android_Soundpool_Android Audiomanager_Audiotrack - Fatal编程技术网

Android 通过扬声器播放声音,同时通过耳机播放音乐

Android 通过扬声器播放声音,同时通过耳机播放音乐,android,soundpool,android-audiomanager,audiotrack,Android,Soundpool,Android Audiomanager,Audiotrack,我有一个通过耳机播放的音频曲目。我必须只向内置扬声器发送声音池,而不中断通过耳机播放的音轨。有黑客吗?许多Android设备使用AudioFlinger/audio HAL中的一个输出线程进行所有本地播放(耳机、扬声器、有线耳机/耳机),使得两个曲目的不同路由同时不可能实现(这就是为什么在许多设备上,如果播放通知并连接有线耳机,媒体流会被强制静音;否则,在播放通知时,您会听到扬声器中的音乐) 在某些设备上,如果您设法执行设置forceuse(对于媒体,FORCE\u扬声器)并使用音乐流类型播放您

我有一个通过耳机播放的
音频曲目
。我必须只向内置扬声器发送
声音池
,而不中断通过耳机播放的
音轨
。有黑客吗?

许多Android设备使用AudioFlinger/audio HAL中的一个输出线程进行所有本地播放(耳机、扬声器、有线耳机/耳机),使得两个曲目的不同路由同时不可能实现(这就是为什么在许多设备上,如果播放通知并连接有线耳机,媒体流会被强制静音;否则,在播放通知时,您会听到扬声器中的音乐)

在某些设备上,如果您设法执行
设置forceuse(对于媒体,FORCE\u扬声器)
并使用
音乐
流类型播放您想在扬声器中播放的内容,使用
语音呼叫
流类型播放您想在有线耳机中播放的内容,则可能会实现您想要的功能。
不过,我不确定应用程序是否有任何方法可以执行
setForceUse
调用。也许你可以通过反射获得
AudioService
类的
handleMessage
方法,并向它发送
MSG\u SET\u forceu\u USE
消息。我自己从未尝试过,因此可能会失败


编辑:我现在已经测试了setForceUse在实际设备上连接有线耳机时将媒体流强制传输到扬声器的方法,它确实可以工作(尽管我不能保证它可以在所有设备上工作)。实现与我上面描述的略有不同。有关我使用的代码,请参见我的答案。

因此声音池与音轨是分开的,对吗?AudioManager mAudioMgr=(AudioManager)getSystemService(Context.AUDIO_SERVICE);mAudioMgr.SetPeakerPhone(true);mAudioMgr.setMode(AudioManager.MODE_IN_COMMUNICATION);使用STREAM_RING有助于将声音重定向到扬声器,即使耳机已连接。但是,在耳机上播放的声音(AudioTrack)暂停,直到此流\u环完成,然后继续。我的优先级是不间断地播放耳机流。是的,流\u环遵循声音路由策略,这将触发我在回答的第一段中描述的行为。我已验证强制扬声器播放的音乐流+语音呼叫流有线耳机在XPeria P上正常工作,但我还没有在任何其他设备上测试过。迈克,很抱歉,我给你施加了太大的压力,但是,我已经在S2和HTC One X上测试过了。他们都暂停了耳机上的音频。我的是一个信号,一旦中断连续性就会破坏系统的工作过程。你告诉我们了哪些流类型e?由于我前面解释过的原因,这种组合不起作用。我唯一能让它起作用的组合是音乐+语音通话。