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

时间:2014-12-20 15:17:51

标签: android android-notifications android-resources android-assets

我正在尝试从资源文件夹播放通知声音,但是当通知触发时,会显示通知但没有播放声音,并且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")));
有人可以帮我解决这个问题吗? 谢谢!

3 个答案:

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