模拟器没有通知声音

9
我在处理 Android 的 notifications 问题上遇到了困难:当我在开发项目时,突然模拟器在 API 26 及以上版本上不再播放通知声音,例如需要一个通道的 API。 当然,我已经设置了通道,并且之前一直很好用!我已经重新安装了应用程序,删除了通道,甚至使用 API 27 设置了另一个 AVD,但结果相同:没有声音!(通知会弹出) 显然,我已经检查过是否启用了通知声音,特别是对于这个特定的通道,一切看起来都没问题,只是没有声音。 如果我使用以下测试进行播放:
RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)).play();

它按照正常工作,因此没有硬件问题。 在低于26的APIs中,您不需要通道即可播放声音。

有人遇到了同样的问题吗?

//make the channel
//The Config class is imported and the constants resolved, not the problem


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            NotificationChannel channel = new NotificationChannel(
                    Config.CHANNEL_1_ID,
                    Config.CHANNEL_1_NAME,
                    NotificationManager.IMPORTANCE_HIGH);

            channel.setDescription(Config.CHANNEL_1_DESC);
            channel.enableLights(true);
            channel.enableVibration(true);
            channel.setShowBadge(true);

          NotificationManager manager = getSystemService(NotificationManager.class);
            manager.createNotificationChannel(channel);
}

// send notification
 NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(context, Config.CHANNEL_1_ID)
                    .setSmallIcon(R.drawable.ic_notifications_black_24dp)
                        .setContentTitle(title)
                        .setContentText(body)
                        .setAutoCancel(false)
                        .setColor(context.getResources().getColor(R.color.colorPrimary))
                        .setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_SOUND | Notification.FLAG_SHOW_LIGHTS)
                        .setPriority(NotificationCompat.PRIORITY_HIGH);

        NotificationManagerCompat mNotificationMgr = NotificationManagerCompat.from(context);
        mNotificationMgr.notify(1, mBuilder.build());

发布代码... - Samuel Robert
就像我之前所说的,通知代码没有被修改,但是突然间停止工作了。在此之前一直都能正常运行。同时,当我在应用程序处于后台状态时通过Firebase发送通知时,系统会处理通知而不是应用程序。同样的问题:没有声音。我还下载了一些通知渠道的通用示例项目,但是也没有声音。我认为这个模拟器可能出了一些问题。 - Bob
4个回答

16

看起来我找到了答案:我需要在模拟器上完成“完成设置Android SDK”的向导。 对于所有内容,都单击“跳过”,现在似乎又可以正常工作了。 奇怪的是,最初我没有这样做,通知仍然按预期工作...哎呀!


1
这确实是在Android Studio 3.3.2上使用Pixel API 28(带有Google Play的Android 9)AVD时的情况。 - Transfusion
5
哦天哪。为了这种无意义的问题调试了几个小时... - neobie
希望每个教程都包含这个关键步骤,那就太好了。我一整天都在处理这个问题。谢谢! - Tronald

3
在Pie 9.0(api 28)上,您需要完成设置过程。完成后,通知通道的声音会正常运行。这适用于模拟器和实体设备。如果您还没有完成设置,设备上所有通知都将静音运行,无论其重要性级别如何。"Original Answer"翻译成"最初的回答"。

你好,感谢您的回答。请详细说明“设置过程”。您指的是什么?该过程包括哪些步骤? - Ananth
3
您将看到此通知,它显示向导以完成设置:
  1. https://i.ibb.co/ctXHw6P/Screenshot-1563463541.png
  2. https://i.ibb.co/gVKxnNy/Screenshot-1563463524.png
- Hà Mã Tím

2

您可能需要检查工具->SDK 管理器->外观和行为->通知的“播放声音”复选框,以便在“Android 模拟器”和“Android”上获得通知声音(即当其他声音正常工作时,但没有通知声音)。


0
对我来说,问题在于模拟器上的铃声音量。显然,默认情况下它是零,并且顶部栏没有指示。而且,当按下音量键时,它会打开媒体音量而不是铃声音量!我必须通过Android设置增加铃声音量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接