Tôi đang sử dụng đoạn mã sau vào một BroadcastReceiver (nghe nhà nước điện thoại) để kích hoạt loa ngoài:Sử dụng AudioManager can thiệp với âm thanh cuộc gọi
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);
Điều này xảy ra khi một cuộc gọi đi mới được tiến hành thông qua ứng dụng của tôi. Khi cuộc gọi bị ngắt kết nối, tôi tắt loa ngoài:
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(false);
Điều này dường như hoạt động tốt ... lần đầu tiên. Sau đó, các dòng âm thanh của điện thoại của tôi dường như bị rối tung thành một mớ hỗn độn. Các cuộc gọi tiếp theo là im lặng lạ thường, ngay cả các cuộc gọi được thực hiện từ bên ngoài mã của ứng dụng của tôi (nơi các cài đặt ở trên không được kích hoạt). Tôi có thể nhận được âm thanh cuộc gọi trở lại dường như ngẫu nhiên, nhưng tôi không chắc chắn những gì làm cho nó trở lại.
Bất kỳ ý tưởng nào về những gì tôi có thể làm sai? Có lỗi Android nào mà tôi không biết? Làm cách nào để tránh im lặng âm thanh của tôi cho các cuộc gọi tiếp theo?
EDIT: Tôi đang thử nghiệm trên Galaxy S4.
Cảm ơn câu trả lời của bạn. Trong khi tôi kết thúc giải quyết vấn đề của riêng tôi, câu trả lời của bạn thúc đẩy tôi đi đúng hướng. Làm tốt lắm. –