自定义Android通知声音

2024-03-16

我正在尝试在我的应用程序中实现自定义通知声音。 我编写了以下代码,但应用程序仅播放默认声音,而不播放我在原始文件夹中添加的自定义声音。收到通知后,日志甚至不会抛出任何错误或异常来说明为什么不播放自定义声音。我尝试在网上搜索并尝试采用不同的方法但无济于事。 请让我知道我哪里出错了。

编辑:有人可以发布它的代码吗,我似乎找不到任何有效的东西

Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button = findViewById(R.id.notify);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel("MyCuS Notification", "My Notification", NotificationManager.IMPORTANCE_HIGH);
        NotificationManager manager = getSystemService(NotificationManager.class);
        AudioAttributes.Builder audioAttributes = new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE);
        channel.setSound(Uri.parse("android.resources://" + getPackageName() + "/" + R.raw.bg_reminder_alarm),audioAttributes.build());
        manager.createNotificationChannel(channel);
    }

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this, "MyCuS Notification");
            builder.setContentTitle("MyTitle");
            builder.setContentText("TESTING");
            builder.setSmallIcon(R.drawable.ic_launcher_background);
            builder.setAutoCancel(true);
            builder.setSound(Uri.parse("android.resources://" + getPackageName() + "/" + R.raw.bg_reminder_alarm));
            NotificationManagerCompat managerCompat = NotificationManagerCompat.from(MainActivity.this);
            managerCompat.notify(1, builder.build());
        }
    });
}

编辑2:我尝试删除现有频道并发送通知来创建新频道,当新创建频道的描述在发送第二个通知后发生变化时,就好像该频道被覆盖或删除并创建了新的默认频道。


从 Android Oreo / 8 开始,Notificationsound 来自频道,并且只能在您第一次通过 channel.setSound() 添加频道时进行设置。 如果您想稍后更改它,您需要删除该频道,然后将其重新添加到系统中。不过,用户会收到有关该行为的警告(应用程序删除频道 X 次)。https://developer.android.com/guide/topics/ui/notifiers/notifications#ManageChannels https://developer.android.com/guide/topics/ui/notifiers/notifications#ManageChannels

如果您希望每次都有自定义声音,则需要一个不带 Channelsound 的 ForegroundService 作为其前台通知 (setSound(null)),然后使用通知流上的 MediaPlayer 来播放自定义声音。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义Android通知声音 的相关文章