【问题标题】:Android 4.4 - Play default music playerAndroid 4.4 - 播放默认音乐播放器
【发布时间】:2013-11-10 14:06:54
【问题描述】:

谁能告诉我为什么这不再适用于 Kitkat 以及如何解决它?

    private Intent player;
    player = new Intent(Intent.ACTION_MEDIA_BUTTON);
    synchronized (this) {
        player.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY));
        sendOrderedBroadcast(player, null);

        player.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY));
        sendOrderedBroadcast(player, null);
    }

【问题讨论】:

    标签: android android-4.4-kitkat


    【解决方案1】:

    API 级别 19 中有专门为此目的创建的新方法 AudioManager.dispatchMediaKeyEvent(KeyEvent)。

    http://developer.android.com/reference/android/media/AudioManager.html#dispatchMediaKeyEvent(android.view.KeyEvent)

    此代码适用于 KitKat:

    AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    
    long eventtime = SystemClock.uptimeMillis() - 1;
    KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
    am.dispatchMediaKeyEvent(downEvent);
    
    eventtime++;
    KeyEvent upEvent = new KeyEvent(eventtime,eventtime,KeyEvent.ACTION_UP,KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);         
    am.dispatchMediaKeyEvent(upEvent);
    

    【讨论】:

    • 这是适用于 android 4.4 及更高版本的工作代码。谢谢@samfromlv
    • 奇怪的是,在 6.0 中,AudioManager 方式不再起作用了。
    【解决方案2】:

    我不知道你为什么认为代码首先是可靠的。不要求任何应用程序对这些特定的广播进行任何响应。

    除此之外,Android 还在继续打击发送此类虚假系统广播的应用,例如 Android 4.4 blocking apps sending ACTION_MEDIA_MOUNTED broadcasts。我会检查 LogCat,看看你是否有任何关于你滥用此广播的警告或任何内容。

    【讨论】:

    • a 尝试了几个代码来运行默认音乐播放器,这是唯一一个在 Android 4.3 上正常工作的代码。你知道更好的方法吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多