我已经尝试了网站上几乎所有可用的答案,但不知何故我无法让通知声音起作用。我正在测试的当前代码是这样的(通知内置在警报接收器中):
public class AlarmReceiver extends BroadcastReceiver {
private static final int NOTIFICATION_ID = 0;
@Override
public void onReceive(Context context, Intent intent) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentTitle(context.getString(R.string.app_name))
.setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity_.class), 0))
.setContentText("temporary text")
.setAutoCancel(true)
.setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
+ "://" + context.getPackageName() + "/raw/alert"))
.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.ic_stat_notification);
Notification notification = builder.build();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, notification);
但是声音可以通过 MediaPlayer 播放,因此格式不是这里的问题。 是否与声音的长度(30 秒)有关? 谢谢您的帮助!
尝试将 .setSound() 更改为此
.setSound(Uri.parse("android.resource://"
+ context.getPackageName() + "/"
+ R.raw.alert))
希望这会起作用
请阅读此处如果 Mukesh 的正确答案不适合您!!
Mukesh 发布的答案是正确的,但对我来说,直到我发现我配置的通知错误为止,它才起作用! (或者是安卓有BUG)
此片段不起作用
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder( context )
.setDefaults( DEFAULT_VIBRATE | FLAG_SHOW_LIGHTS )
.setContentTitle( title )
.setContentText( message )
.setSound( "android.resource://"
+ context.getPackageName() + "/"
+ R.raw.alert)).build();
-
此片段有效
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder( context )
.setContentTitle( title )
.setContentText( message )
.setSound( "android.resource://"
+ context.getPackageName() + "/"
+ R.raw.alert)).build();
-
.setDefaults( DEFAULT_VIBRATE | FLAG_SHOW_LIGHTS )
观察: 就像你看到上面的行一样,我没有使用常量 DEFAULT_SOUND,但仍然不起作用。
对于发布版本,必须在 raw 文件夹中创建 keep.xml。 包含以下内容的 keep.xml 将在 2024 年 10 月完成工作
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@raw/soundFileNameWithoutExtention" />