【问题标题】:Error "Device doesn't support picture-in-picture mode" entering PIP (picture in picture) mode on Samsung mobile在三星手机上进入 PIP(画中画)模式时出现错误“设备不支持画中画模式”
【发布时间】:2019-08-12 19:19:44
【问题描述】:

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

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

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

【问题讨论】:

  • 嗨,你能找出根本原因并得到任何解决方案吗?
  • 不,不幸的是还是一样。
  • 请看下面我的解决方案。有更好的主意吗?

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


【解决方案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;
}

【讨论】:

  • 感谢您的回答。我认为更好的解决方案是将 try/catch 放在 onUserLeaveHint 中的 enterPictureInPictureMode 周围。它涵盖了所有可能的情况,包括三星特定的情况,如果三星修复了该错误,它将无需更改任何代码即可正常工作。但是,它仍然没有回答有关使其在三星设备上运行的主要问题。
猜你喜欢
  • 2022-07-08
  • 2019-06-29
  • 2020-07-07
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
  • 2019-05-25
相关资源
最近更新 更多