android中暂停背景音乐
程序员文章站
2022-08-17 18:11:35
网上有很多暂停背景音乐的例子,最多的就是根据暂停的指令去发广播来暂停音乐。其实这种方式很不靠谱,为什么?因为其他的播放器不一定注册监听了那个广播,所以大多数情况是不起作用的...
网上有很多暂停背景音乐的例子,最多的就是根据暂停的指令去发广播来暂停音乐。其实这种方式很不靠谱,为什么?因为其他的播放器不一定注册监听了那个广播,所以大多数情况是不起作用的。
下面有一种比较靠谱的方式,是通过触发媒体的按钮来操作播放器状态。
复制代码 代码如下:
sendmediabutton(context,<span style="font-size:9pt;line-height:1.5;color:#2b91af;">keyevent</span><span style="font-size:9pt;line-height:1.5;">.keycode_media_pause);</span>
复制代码 代码如下:
private static void sendmediabutton(context context, int keycode) {
keyevent keyevent = new keyevent(keyevent.action_down, keycode);
intent intent = new intent(intent.action_media_button);
intent.putextra(intent.extra_key_event, keyevent);
context.sendorderedbroadcast(intent,null);
keyevent = new keyevent(keyevent.action_up, keycode);
intent = new intent(intent.action_media_button);
intent.putextra(intent.extra_key_event, keyevent);
context.sendorderedbroadcast(intent,null);
}
网友实现的另一种方法
简约写下流程
{ private visualizer visualizer = null;//频谱测试器 private byte [] mrawvizdata;//频谱容器 //实例化 visualizer 对象 visualizer = new visualizer(0); mrawvizdata = new byte[128]; //对象的初始化 if(visualizer != null) { if (visualizer.getenabled()) { visualizer.setenabled(false); } visualizer.setcapturesize(mrawvizdata.length);//一定要在频谱false状态使用 visualizer.setenabled(true);//开启频谱获取 }
下面是开一个线程进行循环获取频谱信息,我只把获取给贴出来
int status = visualizer.error; if(visualizer != null) { //音乐频谱获取 status = visualizer.getfft(mrawvizdata);//获取波形图 if(status != visualizer.success) { log.i("answer", "getwavefail"); } else { int j = 0; for(int i = 0; i < 128; i++) { if(mrawvizdata[i] == 0) { j++; } } log.i("answer", "getwave j = " + j); } } }