Browse Source

增加了调节亮度的方法

Caijinglong 6 years ago
parent
commit
793478f104

+ 26 - 0
android/src/main/java/top/kikt/ijkplayer/IjkplayerPlugin.kt

@@ -2,6 +2,7 @@ package top.kikt.ijkplayer
 
 import android.content.Context
 import android.media.AudioManager
+import android.view.WindowManager
 import io.flutter.plugin.common.MethodCall
 import io.flutter.plugin.common.MethodChannel
 import io.flutter.plugin.common.MethodChannel.MethodCallHandler
@@ -60,6 +61,18 @@ class IjkplayerPlugin(private val registrar: Registrar) : MethodCallHandler {
                 val volume = getSystemVolume()
                 result.success(volume)
             }
+            "setSystemBrightness" -> {
+                val target = call.argument<Float>("brightness")
+                if (target != null) setBrightness(target)
+                result.success(true)
+            }
+            "getSystemBrightness" -> {
+                result.success(getBrightness())
+            }
+            "resetBrightness" -> {
+                setBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE)
+                result.success(true)
+            }
             else -> result.notImplemented()
         }
     }
@@ -98,6 +111,19 @@ class IjkplayerPlugin(private val registrar: Registrar) : MethodCallHandler {
     private val audioManager: AudioManager
         get() = registrar.activity().getSystemService(Context.AUDIO_SERVICE) as AudioManager
 
+    private fun setBrightness(brightness: Float) {
+        val window = registrar.activity().window
+        val lp = window.attributes
+        lp.screenBrightness = brightness
+        window.attributes = lp
+    }
+
+    private fun getBrightness(): Float {
+        val window = registrar.activity().window
+        val lp = window.attributes
+        return lp.screenBrightness
+    }
+
     fun MethodCall.getLongArg(key: String): Long {
         return this.argument<Int>(key)!!.toLong()
     }

+ 6 - 3
example/ios/Runner.xcodeproj/project.pbxproj

@@ -392,8 +392,9 @@
 					"$(inherited)",
 					"$(PROJECT_DIR)/Flutter",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.example.ijkplayerExample;
+				PRODUCT_BUNDLE_IDENTIFIER = top.kikt.ijkplayerExample;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				VALID_ARCHS = "arm64 arm64e";
 				VERSIONING_SYSTEM = "apple-generic";
 			};
 			name = Profile;
@@ -518,8 +519,9 @@
 					"$(inherited)",
 					"$(PROJECT_DIR)/Flutter",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.example.ijkplayerExample;
+				PRODUCT_BUNDLE_IDENTIFIER = top.kikt.ijkplayerExample;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				VALID_ARCHS = "arm64 arm64e";
 				VERSIONING_SYSTEM = "apple-generic";
 			};
 			name = Debug;
@@ -542,8 +544,9 @@
 					"$(inherited)",
 					"$(PROJECT_DIR)/Flutter",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.example.ijkplayerExample;
+				PRODUCT_BUNDLE_IDENTIFIER = top.kikt.ijkplayerExample;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				VALID_ARCHS = "arm64 arm64e";
 				VERSIONING_SYSTEM = "apple-generic";
 			};
 			name = Release;

+ 11 - 0
ios/Classes/IjkplayerPlugin.m

@@ -90,6 +90,17 @@ static IjkplayerPlugin *__sharedInstance;
         } else if ([@"hideSystemVolumeBar" isEqualToString:call.method]) {
             [self hideSystemVolumeBar];
             result(@YES);
+        } else if ([@"setSystemBrightness" isEqualToString:call.method]) {
+            NSDictionary *params = [call arguments];
+            CGFloat target = [params[@"brightness"] floatValue];
+            [[UIScreen mainScreen] setBrightness:target];
+            result(@YES);
+        } else if ([@"getSystemBrightness" isEqualToString:call.method]) {
+            CGFloat brightness = [UIScreen mainScreen].brightness;
+            result(@(brightness));
+        } else if ([@"resetBrightness" isEqualToString:call.method]) {
+//            CGFloat brightness = [UIScreen mainScreen].brightness;
+            result(@YES);
         } else {
             result(FlutterMethodNotImplemented);
         }

+ 14 - 0
lib/src/engine/manager.dart

@@ -38,4 +38,18 @@ class IjkManager {
       return _globalChannel.invokeMethod("hideSystemVolumeBar");
     }
   }
+
+  static Future<void> setSystemBrightness(double brightness) async {
+    await _globalChannel.invokeMethod("setSystemBrightness", <String, dynamic>{
+      "brightness": brightness,
+    });
+  }
+
+  static Future<double> getSystemBrightness() async {
+    return _globalChannel.invokeMethod("getSystemBrightness");
+  }
+
+  static Future<void> resetBrightness() async {
+    await _globalChannel.invokeMethod("resetBrightness");
+  }
 }