首先从git 上将代码克隆或者下载下来
第一步:
从 github.com/clovisnicol… 下载源码
cmd 或者 mac 终端
git clone https://github.com/clovisnicolas/flutter_screen.git
第二步:
找到 插件的 pubspec.yaml , 找到sdk 版本号进行如下设置
environment:
sdk: ">=2.12.0 <3.0.0"
第三步: 修改 ScreenPlugin.java 代码
将下面代码替换原有文件中的Java 代码
package flutter.plugins.screen.screen;
import android.os.Bundle;
import androidx.annotation.NonNull;
import android.app.Activity;
import android.app.Application;
import android.provider.Settings;
import android.view.WindowManager;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.BinaryMessenger;
public class ScreenPlugin implements FlutterPlugin, MethodChannel.MethodCallHandler {
private MethodChannel mMethodChannel;
private Activity mActivity;
private Application mApplication;
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
mMethodChannel = new MethodChannel(binding.getBinaryMessenger(), "github.com/clovisnicolas/flutter_screen");
mMethodChannel.setMethodCallHandler(this);
initApplicationCallBack((Application) binding.getApplicationContext());
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
}
public void initApplicationCallBack(Application application){
mApplication = application;
/// 这里监听acvitity生命周期来获取 activity
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
mActivity = activity;
}
@Override
public void onActivityStarted(Activity activity) {
// onstarted
}
@Override
public void onActivityResumed(Activity activity) {
// onActivityResumed
}
@Override
public void onActivityPaused(Activity activity) {
// onActivityPaused
}
@Override
public void onActivityStopped(Activity activity) {
// onActivityStopped
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
// onActivitySaveInstanceState
}
@Override
public void onActivityDestroyed(Activity act) {
if (act == mActivity) {
/// 注销监听
mApplication.unregisterActivityLifecycleCallbacks(this);
}
}
});
}
@Override
public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
switch(call.method){
case "brightness":
result.success(getBrightness());
break;
case "setBrightness":
double brightness = call.argument("brightness");
WindowManager.LayoutParams layoutParams = mActivity.getWindow().getAttributes();
layoutParams.screenBrightness = (float)brightness;
mActivity.getWindow().setAttributes(layoutParams);
result.success(null);
break;
case "isKeptOn":
int flags =mActivity.getWindow().getAttributes().flags;
result.success((flags & WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0) ;
break;
case "keepOn":
Boolean on = call.argument("on");
if (on) {
System.out.println("Keeping screen on ");
mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
else{
System.out.println("Not keeping screen on");
mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
result.success(null);
break;
default:
result.notImplemented();
break;
}
}
private float getBrightness(){
float result = mActivity.getWindow().getAttributes().screenBrightness;
if (result < 0) { // the application is using the system brightness
try {
result = Settings.System.getInt(mActivity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS) / (float)255;
} catch (Settings.SettingNotFoundException e) {
result = 1.0f;
e.printStackTrace();
}
}
return result;
}
}
第四步: 导入工程 即可。