Używam następujący kod w BroadcastReceiver (telefon państwowej słuchacza), aby włączyć głośnik:Korzystanie Audiomanager zakłóca połączenia dźwięku
final Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
}
}, 500);
Dzieje się tak, gdy nowe połączenie wychodzące inicjowane jest przez mój aplikacji. Kiedy połączenie zostanie rozłączone, zwracam głośnomówiący off:
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(false);
To wszystko wydaje się działać dobrze ... po raz pierwszy. Potem strumienie audio mojego telefonu wydają się zaplątane w bałagan. Kolejne połączenia są dziwnie ciche, nawet połączenia wykonywane poza kodem mojej aplikacji (tam, gdzie powyższe ustawienia nie są wyzwalane). Mogę odebrać dźwięk odsłuchowy pozornie losowo, ale nie jestem pewien, co powoduje jego powrót.
Wszelkie pomysły na temat tego, co mogę zrobić źle? Czy istnieje błąd Androida, którego nie znam? Jak mogę uniknąć wyciszania dźwięku dla kolejnych połączeń?
EDYTOWANIE: Testuję na Galaxy S4.
Dzięki za odpowiedź. Kiedy skończyłem rozwiązywać własne problemy, twoja odpowiedź zachęciła mnie we właściwym kierunku. Dobra robota. –