当前位置: 移动技术网 > 移动技术>移动开发>Android > android中暂停背景音乐

android中暂停背景音乐

2019年07月24日  | 移动技术网移动技术  | 我要评论

网上有很多暂停背景音乐的例子,最多的就是根据暂停的指令去发广播来暂停音乐。其实这种方式很不靠谱,为什么?因为其他的播放器不一定注册监听了那个广播,所以大多数情况是不起作用的。

下面有一种比较靠谱的方式,是通过触发媒体的按钮来操作播放器状态。

复制代码 代码如下:

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);
  }
 }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网