jwisp在测试耳机使用的过程中, 发现了一个奇怪的现象.
插入耳机状态, 播放音乐后, 至于后台播放, 然后进入设置铃声的界面使铃声响起,
此时会在耳机和Speaker中同时播放铃声, 但后台播放的音乐却没有了声音,
此时音乐播放器还在播放状态.
最初jwisp设想应该是铃声将音乐的播放的声道给占住了.
但jwisp试验, 若不插入耳机状态, 当音乐和铃声同时启动后, 两个声音都能听到.
看来不是声道切换抢占的问题了.
下面jwisp将自己解决这个问题的过程分享给大家.
该类负责声音流输出的策略
当播放音乐时对应的是STRATEGY_MEDIA 路由策略, 如果没有耳机, 则输出设備为Speaker, 插入耳机则输出设备是耳机
当铃声响起时, 对应的路由策略是STRATEGY_PHONE,没有耳机时, 相应的输出设备是Speaker, 插入耳机时, 相应的输出设备是耳机和Speaker.
铃声響起时需要切换路由策略,这时就变成STRATEGY_PHONE相应输出设备也需要更新
在其代码中, 我们可用看到非常重要的一块:
这段代码从 android已经说得很明白叻, 如果耳机和Speaker同时播放时, 则使音频流静音.
而铃声和闹钟都是会使耳机和Speaker同时播放的策略.
所以这个若想解决这个问题, 想让音乐和铃声闹钟等哃时响起, 只需把上面几行代码注释掉即可.
发布了14 篇原创文章 · 获赞 12 · 访问量 5万+