Android BroadcastReceiver中播放提示语音有时失效问题
生活随笔
收集整理的這篇文章主要介紹了
Android BroadcastReceiver中播放提示语音有时失效问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Android?BroadcastReceiver 千萬不要做耗時的操作,如果有耗時的操作,請讓OnReceive 中調(diào)用service。
@Override public void onReceive(Context context, Intent intent) { try {afd = assetManager.openFd("notify.wav");mAm.requestAudioFocus(null,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);MediaPlayer player = new MediaPlayer();player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());player.prepare();player.start();player.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){@Override public void onCompletion(MediaPlayer mp) {mAm.abandonAudioFocus(null);}}); } catch (IOException e) {e.printStackTrace(); } } 接到訂單播放提示語音,發(fā)現(xiàn)有時候不能播放出來!! 后來改寫到service中 @Override public int onStartCommand(Intent intent, int flags, int startId) {AssetManager assetManager = getApplicationContext().getAssets();AssetFileDescriptor afd = null;try {afd = assetManager.openFd("notify.wav");mAm.requestAudioFocus(null,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);MediaPlayer player = new MediaPlayer();player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());player.prepare();player.start();player.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){@Override public void onCompletion(MediaPlayer mp) {mAm.abandonAudioFocus(null);}});} catch (IOException e) {e.printStackTrace();}return START_STICKY;然后在Onreceive 中調(diào)用service Toast.makeText(context, "收到了通知", Toast.LENGTH_SHORT).show(); Intent serviceIntent = new Intent(context, PlayMediaService.class); context.startService(serviceIntent);
總結(jié)
以上是生活随笔為你收集整理的Android BroadcastReceiver中播放提示语音有时失效问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 元气骑士锻造台怎么用
- 下一篇: 比较 J2EE,eclipse adt扩