如何在Browser.apk中循环网址时保持屏幕打开?

时间:2012-03-26 02:34:37

标签: android wakelock

目前我正在使用IntentService在Browser.apk中循环网址。我正在运行它,直到电池耗尽。这是我的脏代码。 =)

@Override
protected void onHandleIntent(Intent intent) {
    int size = intent.getStringArrayExtra("addresses").length;
    int counter = sp.getInt("counter", 0);
    String address = intent.getStringArrayExtra("addresses")[counter];
    Intent i = new Intent(Intent.ACTION_VIEW);

    i.setData(Uri.parse(address));
    i.setFlags(Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);

    counter++;
    if(counter == size) {
        counter = 0;
    }
    spe.putInt("counter", counter);
    spe.commit();
}

我尝试使用唤醒锁,但并非所有设备都保持清醒状态。它正在与摩托罗拉Xoom一起使用,但不适用于Thinkpad平板电脑。

除了使用唤醒锁之外,你知道其他选择吗?或者我应该如何正确实施唤醒锁?

我可以告诉浏览器我应该在加载网址时保持屏幕开启吗?通过使用意图或其他手段。

2 个答案:

答案 0 :(得分:1)

要打开设备屏幕,如果设备处于睡眠模式,请使用以下代码:

       //acquireLock(context);
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
         boolean isScreenOn = pm.isScreenOn();
         Log.e("screen on.................................", ""+isScreenOn);
         if(isScreenOn==false)
         {
              WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MyLock");
              wl.acquire(10000);
              WakeLock wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyCpuLock");
              wl_cpu.acquire(10000);
         }

答案 1 :(得分:0)

此处为最佳解决方案:https://stackoverflow.com/a/2134602/1316372

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}