С AudioManager Официальная документация
audioManager.setSpeakerphoneOn(boolean)
Включение или выключение громкой связи.
Это означает, что если вы установите false,отключите звук динамика, т. е. воспроизводите его через динамик, и если вы установите значение true, он будет воспроизводиться через динамик.
В вашем случае вы не хотите воспроизводить музыку с внешнего динамика, но при этом используетеam.setSpeakerphoneOn(true);
, который фактически включает внешний динамик.
То есть set am.setSpeakerphoneOn(false);
, чтобы не воспроизводить музыку с внешнего динамика
Вы также можете установить режим (вызов / голосовая связь / музыка и т. Д.) Для AudioManager
audioManager.setMode(AudioManager.STREAM_MUSIC);
Примечание :: Для изменения настроек аудио-менеджера необходимо установить Permission: MODIFY_AUDIO_SETTINGS
в манифесте
добавить эту строку в манифест
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Вдополнительно, это код для проверки, какой тип аудиосоединения
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
PackageManager packageManager = getPackageManager();
if (audioManager.isBluetoothA2dpOn()) {
// Adjust output for Bluetooth.
Log.d("debug","BluetoothA2dpOn");
} else if (audioManager.isBluetoothScoOn()) {
// Adjust output for Bluetooth of sco.
Log.d("debug","BluetoothScoOn");
} else if (audioManager.isWiredHeadsetOn()) {
// Adjust output for headsets
Log.d("debug","WiredHeadsetOn");
} else if (audioManager.isSpeakerphoneOn()) {
// Adjust output for Speakerphone.
Log.d("debug","SpeakerphoneOn");
} else if (packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) {
// Has internal speaker or other form of audio output.
Log.d("debug","Internal Speaker On");
} else {
// No device for audio output.
Log.d("debug","No Audio Device");
}