我正试图覆盖通知声音并播放我自己的通知声音。 目前的代码是:
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());
但原始通知覆盖(通过声音)我的声音。 这有什么办法吗?
修改
当我试图播放声音时,两种声音都在播放。有时原始声音是第一个,并且首先播放自定义声音。
我想只听到自定义声音。
答案 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
无效,所以请看一下。