Android(安卓)使用MediaPlayer播放assets或者raw目录的音频文件
16lz
2021-01-26
不废话,需求:当接收到推送消息时,播放apk自带的声音,怎么办?
首先接入极光推送,我前几篇文章已经讲了,不会的自己去看。在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); }
/** * 打开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(); }
还有使用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(); } }
更多相关文章
- Android(安卓)使用ExoPlayer视频播放 (一)
- [Android(安卓)Pro] Android异步任务处理之AsyncTaskLoader的使
- AIDL/IPC Android(安卓)AIDL/IPC 进程通信机制——超详细讲解及
- android全功能音乐播放器、基于MVP-Clean + Weex + RxJava2 + Re
- Android复习笔记(6) -BrodCastReceiver (广播接收者
- Android(安卓)手机拍照
- 完美实现音乐播放器锁屏页
- android 弹出Dialog的时候播放声音!
- Android开机时桌面Widget的载入流程