Flutter唤醒屏幕(Android)

本文介绍如何使用Flutter的MethodChannel实现Dart与Android平台之间的通信。通过创建MethodChannel并定义频道名称,可以在Dart侧发起调用并在Android侧进行响应处理。

本篇有用到混合开发,我不懂原生,粗略带过。。。
本篇使用java作为Android语言,不是Flutter官方的Kotlin

这里写目录标题

Dart部分

  1. 创建MethodChannel与Andorid平台建立通信(频道名称可以自定义,但是要与android对应)
    /// 创建频道
    static const platform = const MethodChannel('samples.flutter.dev/test');
    
  2. 使用MethodChannel发出任务
    Future<void> _test() async {
    // 十秒后执行任务,因为我是使用button触发,所以要时间手动关闭屏幕
      Timer(
        Duration(seconds: 10),
        () async {
          // 发送频道测试方法
          await platform.invokeMethod<String>('test');
        },
      );
    }
    

Android部分

  1. 使用android studio以安卓方式打开项目的android目录,等待加载完成

    gradle默认使用jcenter仓库下载,如果加载缓慢可以先切换为淘宝镜像
    android studio打开项目Gradle Download:https://jcenter加载慢

  2. 添加权限
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    
  3. 编码(别忘了开始加上你的包名)
    import android.os.PowerManager;
    import androidx.annotation.NonNull;
    import io.flutter.embedding.android.FlutterActivity;
    import io.flutter.embedding.engine.FlutterEngine;
    import io.flutter.plugin.common.MethodChannel;
    
    public class MainActivity extends FlutterActivity {
    	// 定义频道名称
        private static final String CHANNEL = "samples.flutter.dev/test";
    
        @Override
        public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
            super.configureFlutterEngine(flutterEngine);
            new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
                    .setMethodCallHandler(
                            (call, result) -> {
                                PowerManager powerManager = (PowerManager) this.getSystemService(POWER_SERVICE);
                                PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP , "test:tag");
                                wakeLock.acquire(60*1000L);
                                result.success("success");
                            }
                    );
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值