繁体   English   中英

android audiomanager 中 MODE_IN_COMMUNICATION 中的错误?

[英]Bug in the MODE_IN_COMMUNICATION in android audiomanager?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM