当前位置:   article > 正文

Android从熄屏唤醒屏幕_android 唤醒屏幕

android 唤醒屏幕

方案一、使用Android唤醒aip

1、加入权限

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

2、进行初始化

  1. /**
  2. * 唤醒
  3. * 屏幕
  4. */
  5. private PowerManager pm;// init powerManager
  6. private Context cnt;
  7. private void wakeUpScreen() {
  8. if (cnt != null) {
  9. pm = (PowerManager) cnt.getSystemService(POWER_SERVICE);
  10. mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |
  11. PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK |
  12. PowerManager.ON_AFTER_RELEASE, "target"); // this target for tell OS which app control screen
  13. }
  14. }

3、强制亮屏

  1. mWakelock.acquire(1000L);

4、取消强制亮屏,释放控制

 mWakelock.release();

这里需要注意的是acquire和release必须成对使用

常亮方法

1、推荐使用,此法最为简单,无需修改代码

android:keepScreenOn="true" 

只要是控件基本都有这个属性,代码同样也可以设置

2、在程序中用代码实现。代码如下:

把这段代码加在setContentView(R.layout.main)之前即可,这种方法,安装时,不会提示安装人是否允许使用禁止休眠功能

想要那个界面保持长亮就把这句话添加到那个界面类中,没添加此语句的界面类不会保持长亮。最实用的的方法

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


方案二、使用代码点击应用屏幕(app退出无效)

  1. public class AutoTouch {
  2. public int width = 0;
  3. public int height = 0;
  4. /**
  5. * 传入在屏幕中的比例位置,坐标左上角为基准
  6. *
  7. * @param act 传入Activity对象
  8. * @param ratioX 需要点击的x坐标在屏幕中的比例位置
  9. * @param ratioY 需要点击的y坐标在屏幕中的比例位置
  10. */
  11. public void autoClickRatio(Activity act, final double ratioX, final double ratioY) {
  12. width = act.getWindowManager().getDefaultDisplay().getWidth();
  13. height = act.getWindowManager().getDefaultDisplay().getHeight();
  14. new Thread(new Runnable() {
  15. @Override
  16. public void run() {
  17. // 线程睡眠0.1s
  18. try {
  19. Thread.sleep(100);
  20. } catch (InterruptedException e) {
  21. e.printStackTrace();
  22. }
  23. // 生成点击坐标
  24. int x = (int) (width * ratioX);
  25. int y = (int) (height * ratioY);
  26. // 利用ProcessBuilder执行shell命令
  27. String[] order = {"input", "tap", "" + x, "" + y};
  28. try {
  29. new ProcessBuilder(order).start();
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. }
  33. }
  34. }).start();
  35. }
  36. /**
  37. * 传入在屏幕中的坐标,坐标左上角为基准
  38. *
  39. * @paramact传入Activity对象
  40. * @param x 需要点击的x坐标
  41. * @param y 需要点击的x坐标
  42. */
  43. public void autoClickPos(final double x, final double y) {
  44. // width = act.getWindowManager().getDefaultDisplay().getWidth();
  45. // height = act.getWindowManager().getDefaultDisplay().getHeight();
  46. new Thread(new Runnable() {
  47. @Override
  48. public void run() {
  49. // 线程睡眠0.1s
  50. try {
  51. Thread.sleep(100);
  52. } catch (InterruptedException e) {
  53. e.printStackTrace();
  54. }
  55. // 利用ProcessBuilder执行shell命令
  56. String[] order = {"input", "tap", "" + x, "" + y};
  57. try {
  58. new ProcessBuilder(order).start();
  59. } catch (IOException e) {
  60. e.printStackTrace();
  61. }
  62. }
  63. }).start();
  64. }
  65. }

使用

  1. 初始化对象
  2. private static AutoTouch autoTouch = new AutoTouch();//自动点击屏幕
  3. 调用
  4. autoTouch.autoClickPos( 840, 580);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/619596
推荐阅读
相关标签
  

闽ICP备14008679号