我认为,我在MODE_IN_COMMUNICATION
中发现了一种奇怪的行为。我正在Android 9.0上对其进行测试:
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
设置MODE_IN_COMMUNICATION
后,我们在应用程序中丢失了铃声。对于林顿,我使用的是标准方法:
private void warningSound(Context context) {
try {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(context, notification);
r.play();
} catch (Exception e) {
e.printStackTrace();
}
}
您可以尝试设置其他模式,但是MODE_IN_COMMUNICATION
之后没有帮助-铃声仍然会禁用。
您对解决方案有什么想法吗? (我应该在耳机和扬声器编程之间切换,因为3.5插孔始终连接到设备。)
答案 0 :(得分:1)
private void warningSound(Context context) {
try {
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int currentMode = audioManager.getMode();
audioManager.setMode(AudioManager.MODE_NORMAL);
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(context, notification);
r.play();
new Handler().postDelayed(() -> audioManager.setMode(currentMode), 3000L);
} catch (Exception e) {
e.printStackTrace();
}
}