在三星手机上进入PIP(画中画)模式时出现错误“设备不支持画中画模式”

时间:2019-03-21 20:36:16

标签: android samsung-mobile android-picture-in-picture

我在Android O手机(各种三星版本)上使用PIP模式,并且工作正常。但是,如果我打开辅助功能模式,我会得到

java.lang.IllegalStateException·enterPictureInPictureMode: Device doesn't support picture-in-picture mode

进入画中画模式时。在输入PIP之前,请检查PackageManager.FEATURE_PICTURE_IN_PICTURE,是否启用了AppOpsManager.OPSTR_PICTURE_IN_PICTURE(均返回true)。消息“设备不支持画中画模式”显然是误导和错误的,但是在这种情况下是否有任何方法可以检查PIP是否可用?
请注意,这似乎是三星唯一的问题,因为我尝试了各种三星手机和平板电脑(S8,Note 8,Tab S3,Tab S4),它们都崩溃了。 Google Pixel 3手机没有这个问题。

2 个答案:

答案 0 :(得分:0)

如何打开辅助功能模式? (我无法发表评论。)

我认为唯一的方法是尝试/捕获,但是我也想在这里进行测试。

答案 1 :(得分:-1)

我彻底浏览了相关文件的源代码,但是找不到对我们可见的任何API。因此,暂时提供以下解决方案,以防它对您有所帮助。

/**
 * Trying to enter Picture In Picture mode on a Samsung device while an accessibility service
 * that provides spoken feedback would result in an IllegalStateException.
 */

public static boolean isScreenReaderActiveAndTroublesome(Activity activity) {
    final String affectedManufacturer = "samsung";
    final String deviceManufacturer = android.os.Build.MANUFACTURER.toLowerCase();

    if (affectedManufacturer.equals(deviceManufacturer)) {
        final AccessibilityManager am =
                (AccessibilityManager) activity.getSystemService(Context.ACCESSIBILITY_SERVICE);
        final List<AccessibilityServiceInfo> enabledScreenReaderServices =
                am.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_SPOKEN);

        final boolean isScreenReaderServiceActive = !enabledScreenReaderServices.isEmpty();

        if (isScreenReaderServiceActive) {
            Log.e(TAG, "Screen reader is active on this Samsung device, PIP would be disabled");
        }

        return isScreenReaderServiceActive;
    }

    return false;
}