覆盖通知声音Android

时间:2016-07-23 15:17:08

标签: android audio notifications

我正试图覆盖通知声音并播放我自己的通知声音。 目前的代码是:

NotificationCompat.Builder mBuilder =
    new NotificationCompat.Builder(context)
    .setSmallIcon(R.drawable.ic_notifications_white_24dp)
    .setContentTitle(text)
    .setColor(context.getResources().getColor(R.color.colorAccent))
    .setSound(soundUri);
// Sets an ID for the notification
int mNotificationId = 2580;

// Gets an instance of the NotificationManager service
NotificationManager mNotifyMgr =
    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Builds the notification and issues it.
mNotifyMgr.notify(mNotificationId, mBuilder.build());

但原始通知覆盖(通过声音)我的声音。 这有什么办法吗?

修改

当我试图播放声音时,两种声音都在播放。有时原始声音是第一个,并且首先播放自定义声音。

我想只听到自定义声音。

2 个答案:

答案 0 :(得分:0)

创建res/raw文件夹并将通知声音放入此文件夹

试试这个

notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysound);

答案 1 :(得分:0)

在提供自定义通知声音时,您应该记住一些事项。

  • 声音Uri
    您的soundUri必须是这样的:

    Uri soundUri = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.yourSound);

  • 通知默认值
    确保您没有使用.setDefaults(DEFAULT_SOUND | DEFAULT_ALL);
    许多开发人员发现使用.setDefaults()而不使用DEFAULT_SOUND以某种方式覆盖你的自定义声音。因此,请完全删除.setDefaults()

  • 声音文件长度由于声音文件太长,我听说没有声音播放的报告。尝试将其限制为5秒。

根据您发布的代码,唯一可能的错误可能是由于soundUri无效,所以请看一下。