gpt4 book ai didi

java - 通过 setSound() 设置自定义通知声音(和振动)不起作用

转载 作者:行者123 更新时间:2023-11-30 10:17:31 24 4
gpt4 key购买 nike

尝试在我的应用程序中创建通知时,设置自定义通知声音不起作用,使用系统默认声音。另外,我正在尝试在我的通知中启用振动,但它也不起作用。

我正在尝试按如下方式设置声音(相关 fragment ,请参阅下面的完整代码):

Uri sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bell);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this, channelId);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId,
"Order notifications", NotificationManager.IMPORTANCE_MAX);
notificationManager.createNotificationChannel(channel);

channel.setSound(sound,
new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.build()
);
channel.setVibrationPattern(new long[]{0, 500});
} else {
notificationBuilder
.setVibrate(new long[]{0, 500})
.setSound(sound);
}

notificationManager.notify(0, notificationBuilder.build());

我的自定义声音是一秒长的声音 fragment ,以 44.1 kHz 采样,存储为 res/raw/bell.wav。我还尝试将 fragment 转换为不同的其他格式,我尝试了 mp3ogg 但没有成功。关于振动: list 中包含 android.permission.VIBRATE

我不知道我做错了什么。以下是创建和发布通知的 sendNotification() 函数的完整代码。

private void sendNotification(String messageBody) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);

String channelId = getString(R.string.default_notification_channel_id);
Uri sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bell);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.ic_launcher_web)
.setContentTitle("New order")
.setContentText(messageBody)
.setAutoCancel(true)
.setContentIntent(pendingIntent);

NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

// Since android Oreo notification channel is needed.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId,
"Order notifications",
NotificationManager.IMPORTANCE_MAX);
notificationManager.createNotificationChannel(channel);

AudioAttributes att = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.build();

channel.setSound(sound, att);
channel.setVibrationPattern(new long[]{0, 500});
} else {
notificationBuilder
.setVibrate(new long[]{0, 500})
.setSound(sound);
}

notificationManager.notify(0, notificationBuilder.build());
}

最佳答案

创建 NotificationChannel 后,您无法更改灯光、声音和振动等内容。也许这就是问题所在。要查看更改,您需要先删除该应用并重新安装。

关于java - 通过 setSound() 设置自定义通知声音(和振动)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49677119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com