Android4.0.4 屏幕熄屏后保持外接设备正常工作的方法

       最近一个项目中需要实现屏幕熄屏后保持外接设备正常工作,经过一些列的调查,发现有下面2中方法可以实现,不敢独享,现公布于众。

方法一:在app中实现

代码如下:

import android.os.PowerManager;
import android.os.PowerManager.WakeLock;

private WakeLock wakeLock = null;

	private void acquireWakeLock() {
        if (wakeLock == null) {
        	Log.d(TAG, "acquireWakeLock");
            PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
            wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass()
                    .getCanonicalName());
            wakeLock.acquire();
        }
    }            
    
    
    
	private void releaseWakeLock() {
		if (wakeLock != null && wakeLock.isHeld()) {
			Log.d(TAG, "releaseWakeLock");
			wakeLock.release();
			wakeLock = null;
		}
	}

添加权限

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

最后,别忘了加系统签名。


方法二:驱动中实现

驱动程序的API

驱动程序可以通过添加wakelock变量的状态,并调用wake_lock_init如下面的片段所示,使用wakelockAPI

  struct state {
  struct wakelock wakelock;
  }
  init() {
  wake_lock_init(&state->wakelock, WAKE_LOCK_SUSPEND, "wakelockname");
  }
  Before freeing the memory, wake_lock_destroy must be called:
  uninit() {
  wake_lock_destroy(&state->wakelock);
  }
  

当驱动程序确定它需要运行(通常在一个中断处理程序),它调用wake_lock

  wake_lock(&state->wakelock);
  

当它不再需要运行,它调用wake_unlock

  wake_unlock(&state->wakelock);
  

它也可以调用wake_lock_timeout拖延后释放wakelock

  wake_lock_timeout(&state->wakelock, HZ);


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值