【问题标题】:Android default media player "start" after "stop" error (com.android.music.musicservicecommand)“停止”错误后的 Android 默认媒体播放器“启动”(com.android.music.musicservicecommand)
【发布时间】:2014-01-31 23:04:05
【问题描述】:

当我发送到默认播放器时

Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "play");
ACTIVITY.sendBroadcast(i);

开始播放。当我发送时

Intent i = new Intent("com.android.music.musicservicecommand");
        i.putExtra("command", "stop");
        ACTIVITY.sendBroadcast(i);

它停止了。但是当我再次尝试播放时,它不会播放。它只播放一秒钟,然后再次停止。我在日志上看到我有两个意图。

intent.getBooleanExtra("playing", false);

第一次是“真”,然后是“假”。当我尝试“切换暂停”时,这不会发生。我还注意到,当我发送播放时,Android 音乐应用和 Google Play 音乐都会启动。

我发现是 Google Play 音乐造成的。显然,这两个应用程序都获得了意图,当我发送播放时,音乐播放器会回复 isPlaying = true 和 Google Play 音乐 isPlaying = false。如何解决该问题或如何仅从默认播放器发送或接收?

【问题讨论】:

    标签: android android-intent android-mediaplayer media-player default


    【解决方案1】:

    有点晚,但为正在搜索此内容的其他人发布。您可以通过向系统发送已按下和释放媒体按钮的有序广播来控制默认媒体播放器。以下代码将根据当前状态播放或暂停音乐:

      long eventtime = SystemClock.uptimeMillis(); 
      Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null); 
      KeyEvent downEvent = new KeyEvent(eventtime, eventtime, 
      KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0); 
      downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent); 
      sendOrderedBroadcast(downIntent, null); 
    
      Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null); 
      KeyEvent upEvent = new KeyEvent(eventtime, eventtime, 
      KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0); 
      upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent); 
      sendOrderedBroadcast(upIntent, null); 
    

    您可以用同样的方式提醒系统下一首或上一首曲目按钮已被按下。

    【讨论】:

    • 我刚刚尝试过,但按键始终不起作用。有时他们工作有时他们不工作。每次按下按钮时,我都会显示一条日志消息。日志显示“播放”和“暂停”消息,但音乐不会停止。也许如果我推它几次它就会停止。你知道为什么会这样吗?
    • 它非常适合我,我在很多手机上都试过了。以防万一......尝试为按钮向上事件添加延迟。 KeyEvent upEvent = new KeyEvent(eventtime+100, eventtime+100, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);告诉我进展如何。
    • 好的,谢谢!这是我的错误,我只发送了 downevent 或 upevent。现在有了它。你知道如何发送下一个/上一个吗?我也需要成对发送吗?
    • 同样的事情,只是改了key code。 KEYCODE_MEDIA_NEXT 或 KEYCODE_MEDIA_PREVIOUS
    • @Anonymous : 如何使用默认播放器播放特定文件。 stackoverflow.com/questions/44363026/…
    【解决方案2】:

    您是否尝试过“暂停”而不是发出“停止”命令?

       Intent i = new Intent("com.android.music.musicservicecommand");
       i.putExtra("command", "pause");
    

    似乎可以根据需要多次调用暂停/播放,然后重新启动就好了。

    【讨论】:

    • 如何使用默认播放器播放特定文件
    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多