# 为什么在 Android 设备上切换到其他 App 会改变音频路由？ (/zh-CN/reference/faq/integration/android_audio_routing_change)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

## 问题描述 [#问题描述]

在 Android 设备上使用集成了声网 RTC SDK 的 App （以下简称 SDK App）进行实时音视频互动，切换到其他有音频输入或输出的 App，再切换回 SDK App 之后 SDK 的音频路由发生改变。

例如，用户在 SDK App 中通话并启用扬声器，通话过程中用听筒模式接听了 QQ 语音电话，结束 QQ 语音电话后返回 SDK App 通话，音频仍然通过听筒播放。

## 问题原因 [#问题原因]

在 Android 设备上从 SDK App 切换到其他 App 时，其他 App 可能会修改 SDK 的音频路由。由于 SDK 没有权限检测其他 App 对音频路由的修改，也无法判断是否已从其他 App 切换回来，因此切换回 SDK App 后仍然使用其他 App 的音频路由设置。

## 解决方案 [#解决方案]

在安卓原生方法 `onResume` 中检测当前的音频路由，然后调用 `setEnableSpeakerphone` 方法重新设置音频路由。可参考以下示例代码。

```java
@Override

    protected void onResume() {
        super.onResume();
        AudioManager am = getAudioManager();
        if (am.isSpeakerphoneOn()) {
            Log.d("LOG:", "AUDIO_ROUTE_SPEAKERPHONE");
        } else if (am.isBluetoothScoOn() || am.isBluetoothA2dpOn()) {
            Log.d("LOG:", "AUDIO_ROUTE_HEADSETBLUETOOTH");
        } else if (am.isWiredHeadsetOn()) {
            Log.d("LOG:", "AUDIO_ROUTE_HEADSET");
        } else {
            Log.d("LOG:", "AUDIO_ROUTE_EARPIECE");
            // 在此处调用 setEnableSpeakerphone 方法，设置音频路由为听筒或扬声器
        }
    }

    public AudioManager getAudioManager() {
        Context context = this.getApplicationContext();
        if (context == null) {
            return null;
        }

        return (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    }
```

## 相关链接 [#相关链接]
[为什么 iOS 或 Android 设备连接蓝牙设备后不能通过蓝牙设备接电话？](/zh-CN/reference/faq/quality/ios_bluetooth)
