我正在开发 VoIP 应用程序,当用户拔下耳机然后设备自动切换到扬声器时遇到问题,但我希望设备切换到普通扬声器。有什么办法可以将其更改为普通扬声器吗?
最佳答案
棘手的事情,尤其是多个设备、不同的场景。
我曾开发过一款 VoIP 应用程序,所以我才知道这一点。您所面临的可能是因为在请求焦点后正在手动处理音频管理器模式和/或流。您需要做的是将控制权转移到调用流,以便在调用进行时,
耳机的连接和断开、转接至手机听筒等均由操作系统自动处理
您可能会执行所有这些操作或组合执行...
使用AudioManager { .setMode(int mode) } - 使用MODE_IN_COMMUNICATION ,推荐用于 VoIP 或 MODE_IN_CALL
另外,请检查STREAM_VOICE_CALL
你在使用吗 -isSpeakerphoneOn()和 setSpeakerphoneOn(boolean) -isBluetoothScoOn() , setBluetoothScoOn(boolean) ?
需要针对设备或耳机型号的特定问题尝试解决所有这些问题。
有用的东西:
Even if a SCO connection is established, the following restrictions apply on audio output streams so that they can be routed to SCO headset:
- the stream type must be STREAM_VOICE_CALL
- the format must be mono
- the sampling must be 16kHz or 8kHz
关于java - 如何在Android中设置默认模式耳机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44410837/