瀏覽代碼

Fix check for OS variant in droid

Neeraj Gupta 1 年之前
父節點
當前提交
c5113974f8
共有 2 個文件被更改,包括 19 次插入7 次删除
  1. 2 0
      lib/main.dart
  2. 17 7
      lib/utils/device_info.dart

+ 2 - 0
lib/main.dart

@@ -43,6 +43,7 @@ import 'package:photos/services/user_service.dart';
 import 'package:photos/ui/tools/app_lock.dart';
 import 'package:photos/ui/tools/lock_screen.dart';
 import 'package:photos/utils/crypto_util.dart';
+import "package:photos/utils/device_info.dart";
 import 'package:photos/utils/file_uploader.dart';
 import 'package:photos/utils/local_settings.dart';
 import 'package:shared_preferences/shared_preferences.dart';
@@ -161,6 +162,7 @@ Future<void> _init(bool isBackground, {String via = ''}) async {
   Computer.shared().turnOn(workersCount: 4, verbose: kDebugMode);
   CryptoUtil.init();
   await NetworkClient.instance.init();
+  initDeviceSpec().ignore();
   await Configuration.instance.init();
   await UserService.instance.init();
   await EntityService.instance.init();

+ 17 - 7
lib/utils/device_info.dart

@@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart';
 import 'package:logging/logging.dart';
 
 DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
+bool disableMediaKit = false;
 
 // https://gist.github.com/adamawolf/3048717
 final Set<String> iOSLowEndMachineCodes = <String>{
@@ -30,6 +31,21 @@ final Set<String> iOSLowEndMachineCodes = <String>{
   "iPhone10,5", //  iPhone 8
 };
 
+Future<void> initDeviceSpec() async {
+  if (Platform.isAndroid) {
+    // Note: The current version of media_kit crashes while playing video when
+// hardware malloc is enabled. Users either need to disable the hardware
+// malloc for our app or we need to disable the media_kit for these devices.
+// Currently, we have disabled the media_kit for these devices. and in the
+// future if needed we can add a setting.
+    final androidInfo = await deviceInfoPlugin.androidInfo;
+    disableMediaKit = androidInfo.toString().contains('graphene') ||
+        androidInfo.toString().contains('divest');
+  } else {
+    disableMediaKit = false;
+  }
+}
+
 Future<bool> isLowSpecDevice() async {
   try {
     if (Platform.isIOS) {
@@ -53,11 +69,5 @@ Future<bool> isAndroidSDKVersionLowerThan(int inputSDK) async {
 }
 
 bool isCompatibleWithMediaKit() {
-  final os = Platform.operatingSystem.toLowerCase();
-  if (os.contains("graphene") || os.contains("divest")) {
-    Logger("device_info").info("os is $os, using video_player for videos");
-    return false;
-  }
-  Logger("device_info").info("os is $os, using media_kit for videos");
-  return true;
+  return disableMediaKit == false;
 }