不废话,需求:当接收到推送消息时,播放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