0

在我使用 Android AudioManager 将 SCO ON 和扬声器设置为 ON 后,我将其返回到它开始的位置,然后媒体流将保留在听筒而不是手机扬声器上。这是我进行更改以通过 SCO 免提电话路由流的地方(一切都很好)

    if (am2.isBluetoothScoAvailableOffCall()) {
                            am2.startBluetoothSco();
                        }
                        if(!am2.isSpeakerphoneOn()){
                            speakerPhoneWasOn = false;
                            am2.setSpeakerphoneOn(true);
                        }
                        myHash.put(TextToSpeech.Engine.KEY_PARAM_STREAM,
                                String.valueOf(AudioManager.STREAM_VOICE_CALL));
                        am2.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL,
                                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

然后我尝试在阅读我的消息后将其全部更改(我正在使用 TTS)

if(SMSstream == 1){
                if (am2.isBluetoothScoAvailableOffCall()) {
                    am2.stopBluetoothSco();

                }
                if(!speakerPhoneWasOn){
                    am2.setSpeakerphoneOn(false);
                }


            }
            else{

            }
            am2.setMode(OLD_AUDIO_MODE);
            am2.abandonAudioFocus(null);

但在我重新启动之前,它一直与手机听筒而不是扬声器一起使用。我看到一些帖子有相反的问题,但没有一个与这个问题有关。我有一个装有 Android 2.3.4 的 Droid 3。

您可以在此处查看整个项目和源代码:http ://code.google.com/p/a2dpvolume/

4

1 回答 1

1

好的,我终于解决了这个问题。它不漂亮。我相信 AudioManager 中存在某种错误。即使在放弃焦点之后,它也会让设备流一团糟。除非在放弃焦点之前通过音乐流读取最后一个 TTS,否则它将错误地路由流、使流静音等。因此,如果之前在除音乐流之外的任何流上读取了 SMS,我只需让它读取一个周期放弃焦点。在阅读 TTS 后,我还清理了我打电话的顺序,并修复了一些电话模式等。奇怪的是,它似乎运作良好。

于 2011-09-04T04:19:18.500 回答