1

聲音打我試圖打的通知從資產文件夾中的聲音,但是當觸發通知顯示通知,但不播放聲音並沒有在logcat中沒有錯誤或警告。我正在使用此代碼來創建通知:Android通知從資產文件夾

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

有人可以幫我解決這個問題嗎? 謝謝!

回答

1

把你的MP3文件raw文件夾下。如果你把它放在asset/之下,它會被壓縮兩次,你不能使用它。

0

在res下創建一個名爲'raw'的文件夾,並在其中複製你的mp3文件。

那麼你可以設置,

setSound(Uri.parse( 「android.resource://」 你的包名 「/」 + R.raw.your_map3_name);

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