如何在原始文件夹中播放mp3文件作为android中的通知声音警报

San*_*ndo 12 android

我将自己的音频文件放在资源文件夹内的原始文件夹中.我想将其设置为通知声音警报.我该怎么办?

Nik*_*hil 12

当您在BroadcastReceiver中收到通知时,请使用下面的代码,然后在代码下方使用的活动类中调用活动,以便播放声音文件.

mMediaPlayer = MediaPlayer.create(this, R.raw.sound1);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)

快乐编码..


小智 11

这通常是使用MediaPlayer实现的,但这不是一个理想的解决方案,因为它独立于通知运行一点,因此会以意想不到的方式表现静音,阻塞模式和其他各种事情.为了保持一致性和兼容性,应使用通知本身的音频机制播放声音.这可以通过设置适当的URI来实现,其方式如下:

NotificationCompat.Builder builder = new NotificationCompat.Builder(
    this).setSmallIcon(R.drawable.ic_myicon)
    .setContentTitle(title).setAutoCancel(true);
Uri alarmSound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
                    + "://" + getPackageName() + "/raw/mymp3");
builder.setSound(alarmSound);
...
builder.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager)
    getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(1, builder.build());
Run Code Online (Sandbox Code Playgroud)

关键部分是:

Uri alarmSound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
                    + "://" + getPackageName() + "/raw/mymp3");
Run Code Online (Sandbox Code Playgroud)

mp3文件存储在/ res/raw文件夹中.