使用 Android O 的画中画功能
Using Picture-in-picture feature with Android O
我创建了一个 android 应用程序来检查 Android O 的画中画模式功能。
但是我在 运行 这个应用程序时遇到错误。
setPictureInPictureArgs: 设备不支持画中画模式
java.lang.IllegalStateException: setPictureInPictureArgs: Device doesn't support picture-in-picture mode.
at android.os.Parcel.readException(Parcel.java:1923)
at android.os.Parcel.readException(Parcel.java:1861)
at android.app.IActivityManager$Stub$Proxy.setPictureInPictureArgs(IActivityManager.java:9378)
at android.app.Activity.setPictureInPictureArgs(Activity.java:1984)
at com.example.pip.MainActivity.updatePictureInPictureActions(MainActivity.java:156)
at com.example.pip.MainActivity.onMovieStarted(MainActivity.java:101)
at com.example.pip.widget.MovieView.play(MovieView.java:350)
at com.example.pip.widget.MovieView.onPrepared(MovieView.java:384)
at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3170)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6440)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:746)
此问题在 Android 的稳定版本中不再重现 O.
有时设备 运行在 Android-O 及更高版本上运行但无法 运行 PIP,因为它因 RAM 大小而被设备禁用。
因此,在您的应用使用 PIP 之前,最好通过调用 hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
.
检查功能是否可用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)) {
//your code
}
}
参考:https://developer.android.com/guide/topics/ui/picture-in-picture#best
我创建了一个 android 应用程序来检查 Android O 的画中画模式功能。 但是我在 运行 这个应用程序时遇到错误。
setPictureInPictureArgs: 设备不支持画中画模式
java.lang.IllegalStateException: setPictureInPictureArgs: Device doesn't support picture-in-picture mode.
at android.os.Parcel.readException(Parcel.java:1923)
at android.os.Parcel.readException(Parcel.java:1861)
at android.app.IActivityManager$Stub$Proxy.setPictureInPictureArgs(IActivityManager.java:9378)
at android.app.Activity.setPictureInPictureArgs(Activity.java:1984)
at com.example.pip.MainActivity.updatePictureInPictureActions(MainActivity.java:156)
at com.example.pip.MainActivity.onMovieStarted(MainActivity.java:101)
at com.example.pip.widget.MovieView.play(MovieView.java:350)
at com.example.pip.widget.MovieView.onPrepared(MovieView.java:384)
at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3170)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6440)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:746)
此问题在 Android 的稳定版本中不再重现 O.
有时设备 运行在 Android-O 及更高版本上运行但无法 运行 PIP,因为它因 RAM 大小而被设备禁用。
因此,在您的应用使用 PIP 之前,最好通过调用 hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)) {
//your code
}
}
参考:https://developer.android.com/guide/topics/ui/picture-in-picture#best