gpt4 book ai didi

java - Android 8.1 通知显示但不发出任何声音

转载 作者:行者123 更新时间:2023-11-29 02:31:52 25 4
gpt4 key购买 nike

我有一项在前台运行的服务,其中包括一个秒表。当服务启动时,通知出现,当它结束时,我用声音和一些表明它已完成的文本更新它。问题是这在 api 25 之前一直有效,但是对于 26 和 27,它可以正确更新通知,但没有声音。相关代码如下:

在服务中创建通知:

mBuilder = new NotificationCompat.Builder(context, "Main")
.setSmallIcon(R.drawable.ic_notification_temp)
.setContentTitle(step.getDescription())
.setContentText(getString(R.string.notification_text))
.setVisibility(VISIBILITY_PUBLIC)
.setOngoing(true);
.setDeleteIntent(deletePendingIntent);
.setContentIntent(contentPendingIntent);
.addAction(R.drawable.ic_stop_red_24dp, getString(R.string.cancel),finnishPendingIntent);

mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(mId, mBuilder.build());

“工作”完成后通知生成器的更新:

mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));        
mBuilder.setVibrate(new long[]{0, 300, 0, 400, 0, 500});
mBuilder.setOngoing(false);
mBuilder.setAutoCancel(true);
mBuilder.setContentText(getString(R.string.notification_finished_text));

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mBuilder.setChannelId("Sound");
mBuilder.setCategory(NotificationCompat.CATEGORY_ALARM);
}
mNotificationManager.notify(mId, mBuilder.build());

在应用启动时为 api 26 或更高版本创建的 2 个 channel :

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Create the normal NotificationChannel
CharSequence name = getString(R.string.app_name);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel channel = new NotificationChannel("Main", name, importance);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = (NotificationManager) getSystemService(
NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);

// Create theNotificationChannel with sound
importance = NotificationManager.IMPORTANCE_HIGH;
name = getString(R.string.notification_channel_sound);
NotificationChannel sound = new NotificationChannel("Sound", name, importance);
sound.enableVibration(true);
sound.setVibrationPattern(new long[]{0, 300, 0, 400, 0, 500});
AudioAttributes aa = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setLegacyStreamType(AudioManager.STREAM_NOTIFICATION)
.setUsage(AudioAttributes.USAGE_NOTIFICATION_EVENT)
.build();
sound.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION), aa);
notificationManager.createNotificationChannel(sound);
}

这就是我现在所处的位置。我试图不使用 setsound() 因为我读过通知应该只播放具有适当重要性的默认声音(当然我什至在尝试正确更新 channel 设置之间卸载了应用程序)但没有似乎适用于 api 26,我只是不知道我做错了什么。

最佳答案

我的大多数模拟器 AVD 都遇到了完全相同的问题。以下为我修复了它:

  • 启动受影响的 AVD
  • 长按 AVD 的电源按钮
  • 重启AVD

之后它应该会再次工作。

关于java - Android 8.1 通知显示但不发出任何声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49232892/

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