简体   繁体   English

Android 通知播放资产文件夹中的声音

[英]Android notifications play sound from assets folder

I'm trying to play notifications sound from the assets folder, but when notification triggers the notification is shown but no sound is played and there is no error or warning in the logCat.我正在尝试从资产文件夹播放通知声音,但是当通知触发时会显示通知但没有播放声音并且 logCat 中没有错误或警告。 I'm using this code for creating notifications:我正在使用此代码创建通知:

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")));

can someone help me solve this issue?有人可以帮我解决这个问题吗? Thanks!谢谢!

Put your mp3 file under raw folder.将您的 mp3 文件放在raw文件夹下。 If you put it under asset/ it's going to be compressed twice and you can't use it.如果你把它放在asset/它会被压缩两次,你不能使用它。

Create a folder named raw under res , and copy your mp3 file into that folder.res下创建一个名为raw的文件夹,然后将您的 mp3 文件复制到该文件夹​​中。

Then you can set,然后你可以设置,

setSound(Uri.parse("android.resource://"your package name"/"
                    + R.raw.your_map3_name);

And it should work.它应该工作。

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();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM