为了账号安全,请及时绑定邮箱和手机立即绑定

唤醒Android设备

唤醒Android设备

波斯汪 2019-10-08 10:43:49
嘿,我需要在特定时间唤醒我正在睡眠的android设备。有什么建议么?PS唤醒:打开显示屏,甚至可以解锁手机
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

我找到了一种方法,它并不那么复杂...适用于任何API版本。


您需要使用PowerManager.userActivity(l, false)方法并将您的活动注册为针对SCREEN_OFF意向的广播:


在您的活动中,OnCreate放置了以下内容:


mReceiver = new BroadcastReceiver() {

    @Override

    public void onReceive(Context context, Intent intent) {

        Log.v(TAG, "Screen OFF onReceive()");

        screenOFFHandler.sendEmptyMessageDelayed(0, 2000L);

    }

};

屏幕关闭事件2秒后,它将启动处理程序。


在您的onResume()方法中注册接收者:


IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);

registerReceiver(mReceiver, filter);

Log.i(TAG, "broadcast receiver registered!");

创建一个类似于以下内容的处理程序:


private Handler screenOFFHandler = new Handler() {


    @Override

    public void handleMessage(Message msg) {


        super.handleMessage(msg);

        // do something

        // wake up phone

        Log.i(TAG, "ake up the phone and disable keyguard");

        PowerManager powerManager = (PowerManager) YourActivityName.this

                .getSystemService(Context.POWER_SERVICE);

        long l = SystemClock.uptimeMillis();

        powerManager.userActivity(l, false);//false will bring the screen back as bright as it was, true - will dim it

    }

};

在清单文件中请求权限:


<uses-permission android:name="android.permission.WAKE_LOCK" />

完成后,不要忘记注销广播接收器。例如,您可以在onDestroy()中这样做(不保证)


unregisterReceiver(mReceiver);

Log.i(TAG, "broadcast UNregistred!");


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 458 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信