AndroidBroadcastReceiver 千万不要做耗时的操作,如果有耗时的操作,请让OnReceive 中调用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();
}
}
接到订单播放提示语音,发现有时候不能播放出来!!
后来改写到service中
 
@Overridepublic 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 中调用service
 
Toast.makeText(context, "收到了通知", Toast.LENGTH_SHORT).show();Intent serviceIntent = new Intent(context, PlayMediaService.class);context.startService(serviceIntent);


更多相关文章

  1. Android中的内存储、外存储概念、文件操作与PC端的有些不同
  2. 如何为sqlite操作构建更有效的设计
  3. javascript 操作流——回调的回调
  4. java操作ftp实现文件的上传下载(适用于图片文档服务器)
  5. JAVA实现二进制和16进制之间的互相转换,8进制同理,附带异或操作实
  6. 使用js模仿java的实体类对类/对象进行get操作
  7. java中jcom操作excel
  8. Java操作Sqlite数据库
  9. java入门---数据结构操作实例之获取链表的元素

随机推荐

  1. androidの获取android手机信息
  2. Android 修改默认USB模式
  3. android adb端口被占用解决方案
  4. Android(安卓)Studio:Unable to instanti
  5. Android(安卓)锁屏(设备管理)
  6. Android最简单的使用数组的适配器Adapter
  7. Android数据库组件Room
  8. Android(安卓)Apk加固(安全专项)
  9. 屏蔽应用报错弹框和无响应弹框
  10. android githubf地址