Android 使用MediaPlayer播放assets或者raw目录的音频文件

作者: cnbzlj 发布时间: 2019-09-19 浏览: 3584 次 编辑

不废话,需求:当接收到推送消息时,播放apk自带的声音,怎么办?

1,首先接入极光推送,我前几篇文章已经讲了,不会的自己去看。在MyReceiver里的public void onReceive(Context context, Intent intent)判断消息类型,然后使用MediaPlayer播放assets或者raw目录的音频文件。

if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
            Log.e(TAG, "[MyReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));
            Log.e(TAG, "[MyReceiver] 接收到推送下来的通知");
            int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
            Log.e(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId);
 
            openRawMusicS(context);
 
        }

2,打开raw目录下的音乐mp3文件

/**
     * 打开raw目录下的音乐mp3文件
     */
    private void openRawMusicS(Context context) {
//        mediaPlayer1 = MediaPlayer.create(this, R.raw.please_get_close);
        mediaPlayer1 = MediaPlayer.create(context, R.raw.weige);
 
        //用prepare方法,会报错误java.lang.IllegalStateExceptio
        //mediaPlayer1.prepare();
        mediaPlayer1.start();
    }

3,还有使用MediaPlayer播放assets目录下的媒体文件:

/**
     * 打开assets下的音乐mp3文件
     */
    private void openAssetMusics() {
 
        try {
            //播放 assets/a2.mp3 音乐文件
            AssetFileDescriptor fd = getAssets().openFd("identification_success.mp3");
            mediaPlayer = new MediaPlayer();
            mediaPlayer.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength());
            mediaPlayer.prepare();
            mediaPlayer.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


————————————————

版权声明:本文为CSDN博主「暴走邻家」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/bzlj2912009596/article/details/90314857