Wakelock仅在连接usb电缆的情况下工作
我有一个相当奇怪的问题。最近,我尝试使用以下代码在应用程序中使用wakelock:Wakelock仅在连接usb电缆的情况下工作,usb,wakelock,android,android-wake-lock,Usb,Wakelock,Android,Android Wake Lock,我有一个相当奇怪的问题。最近,我尝试使用以下代码在应用程序中使用wakelock: /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); PowerManager pm
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
screenLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("Clicked");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!locked)
setKeepScreenOn(WakeupLightActivity.this, true);
else setKeepScreenOn(WakeupLightActivity.this, false);
System.out.println("Screen will stay on");
}
});
}
public void setKeepScreenOn(Activity activity, boolean keepScreenOn) {
if(keepScreenOn) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
this.screenLock.acquire();
}
else {
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
this.screenLock.release();
}
}
wakelock功能完美:按下按钮(并锁定手机)5秒钟后,屏幕将打开。然而,这个测试是在我的手机连接到笔记本电脑进行USB电缆调试时完成的
现在是奇怪的部分。当我没有用USB线连接手机时,wakelock根本不会在屏幕上打开。我使用的设备是HTC的愿望。实际上,我已经在另一个HTC desire上测试了它,它也做了同样的事情。接下来,我在HTC Desire HD上试用了它。猜猜看:它又完美地工作了!我真的很困惑,想知道这个问题是否仅仅是我的手机类型中的一个缺陷,或者我的代码中是否有错误。我能做些什么吗?如果任何手机类型出现故障的潜在客户在购买了我的应用程序后遇到同样的问题,那将是非常尴尬的
请注意,我还尝试了该应用程序,同时使用连接到墙上插头的电缆为手机充电。这导致了与我的手机根本没有连接一样的问题。两款HTC都运行相同的Android版本(2.2.2)。显然,所有这些都是因为我使用了错误的标志。通过使用以下标志创建WakeLock解决了此问题:
PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP