Android:自定义通知声音未播放

问题描述 投票:0回答:3

我已经尝试了网站上几乎所有可用的答案,但不知何故我无法让通知声音起作用。我正在测试的当前代码是这样的(通知内置在警报接收器中):

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 秒)有关? 谢谢您的帮助!

java android audio notifications
3个回答
6
投票

尝试将 .setSound() 更改为此

.setSound(Uri.parse("android.resource://"
                            + context.getPackageName() + "/"
                            + R.raw.alert))

希望这会起作用


2
投票

请阅读此处如果 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,但仍然不起作用。


0
投票

对于发布版本,必须在 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" />
© www.soinside.com 2019 - 2024. All rights reserved.