Android Audiomanager中的MODE_IN_COMMUNICATION中的错误?

时间:2019-06-26 09:52:50

标签: java android

我认为,我在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插孔始终连接到设备。)

1 个答案:

答案 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();
    }
}