MediaPlayer cutting off playback too early on Lollipop when Screen is off

后端 未结 2 1868
情歌与酒
情歌与酒 2021-01-03 05:15

I\'ve been running into an issue with the MediaPlayer on Lollipop devices. Basically when the device screen is off (i.e. user locked the device) the playback continues, but

相关标签:
2条回答
  • 2021-01-03 06:06

    Update: Setting a partial wake lock on the MediaPlayer resolves this problem:

    playerToPrepare.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);

    A partial wake lock shouldn't have too big of an impact, and it seems like MediaPlayer itself cleans this up when playback completes.

    -- Original Answer ---

    I'm cross-posting my answer from here Prevent my audio app using NuPlayer on Android Lollipop 5.x?, until there's a fix out for NuPlayer, the best you can do is to detect when NuPlayer is enabled and take the user to the Developer Settings.

    This approach checks Android's system properties values to see if the user have enabled the use of AwesomePlayer or not under Developer Settings. Since Lollipop have NuPlayer on by default, if this value is disabled, we know NuPlayer will be used.

    Drop SystemProperties.java into your project for access to read the system properties, do not change its package name from android.os (it calls through to its corresponding JNI methods, so needs to stay the same).

    You can now check if the phone is Lollipop/5.0, if AwesomePlayer is enabled, and act accordingly if it's not (e.g. by opening the Developer Settings):

    public void openDeveloperSettingsIfAwesomePlayerNotActivated(final Context context) {
        final boolean useAwesome = SystemProperties.getBoolean("persist.sys.media.use-awesome", false);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !useAwesome) {
            final Intent intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
            context.startActivity(intent);                
        }
    }
    
    0 讨论(0)
  • 2021-01-03 06:19

    Ok it looks like the issue is Android 5.0.1's experimental MediaPlayer called NuPlayer. NuPlayer is being enabled by default on all Android 5.0.1 devices and is only disabled through Developer Options. I've filed a bug against Android here: https://code.google.com/p/android/issues/detail?id=94069&thanks=94069&ts=1420659450

    Here's a sample email you can send your users when they face issues with Media playback on Android 5.0.1 devices:

    It looks like this might be a bug on Android's new experimental MediaPlayer called NuPlayer. To fix this, please follow these steps:

    1. Go to Android Settings
    2. Go to "About Phone"
    3. Scroll down to "Build Number" and tap the Build number 7 times.
      • You'll see a message saying "you are now X steps away from being a developer".
      • After tapping it 7 times it will say "You are now a developer!"
    4. Go back to the main settings screen and you'll see a new option called "Developer Options" right above "About Phone"
    5. Go into Developer Options and Unselect "Use NuPlayer (experimental)" under the Media section.
    0 讨论(0)
提交回复
热议问题