我正在尝试从资源文件夹播放通知声音,但是当通知触发时,会显示通知但没有播放声音,并且logCat中没有错误或警告。我正在使用此代码创建通知:
builder = new NotificationCompat.Builder(context)
// Set Icon
.setSmallIcon(R.drawable.ic_launcher)
// Set Ticker Message
.setTicker(message)
// Set Title
.setContentTitle(message)
// Set Text
.setContentText(context.getString(R.string.app_name))
// Add an Action Button below Notification
.addAction(R.drawable.share,
context.getString(R.string.share), pendingShare)
// Set PendingIntent into Notification
.setContentIntent(contentIntent)
// Dismiss Notification
.setAutoCancel(true)
.setSound(
Uri.parse("file:///android_assets/"
+ prefs.getString(Constants.NOTIF_SOUND,
"mp3/al_affassi_full.mp3")));
有人可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:1)
将您的mp3文件放在raw
文件夹下。如果你把它放在asset/
下面,那么它将被压缩两次,你就无法使用它。
答案 1 :(得分:0)
创建一个名为' raw'的文件夹。在res下并将你的mp3文件复制到其中。
然后你可以设置,
setSound(Uri.parse(" android.resource://"您的包名" /" + R.raw.your_map3_name);
答案 2 :(得分:0)
Android notifications play sound from raw folder
try
{
int res_sound_id = MainActivity.this.getResources().getIdentifier("sound name", "raw", MainActivity.this.getPackageName());
Uri u= Uri.parse("android.resource://" + MainActivity.this.getPackageName() + "/" +res_sound_id );
Intent intent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
long[] pattern = { 0, 200, 500 };
Notification mNotification = new Notification.Builder(MainActivity.this)
.setContentTitle("Its time to Pray")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(pIntent)
.setSound(u)
.setVibrate(pattern)
.setAutoCancel(true)
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, mNotification);
}
catch(Exception e)
{
e.printStackTrace();
}