Android解锁屏幕,然后重新锁定屏幕(Nook Simple Touch)

时间:2014-12-27 19:56:45

标签: android sdk nook

我的目标是创建一个简单的程序,每隔X秒获取一次图像URL的内容,将其写入/ media / screensavers / Messages目录,然后解锁并重新锁定设备(Nook Simple Touch),以便新下载显示img。

警报会在应该播放并且图像下载时触发​​(我可以通过Android Studio logcat查看)。问题是角落没有解锁。 (屏幕不更新)。

这是来自AlarmReceiver.java的代码

@Override
public void onReceive(Context context, Intent intent) {

    // Log to logcat
    Log.i("AlarmReceiver", "onReceive() -- onReceive fired! ");

    // Create the dummy image url
    String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
    String imgPath = new String();
    imgPath = "http://dummyimage.com/600x800/fff/000.jpg&text=" + currentDateTimeString ;
    imgPath = imgPath.replaceAll(" ", "+");

    // Download and save the image (works great)
    new DownloadImageTask().execute(imgPath);

    // Now how do I a) unlock the device, then b) put it back to sleep?

}

我从How to programmatically dismiss the screensaver/lock screen on Android (Nook Simple Touch)

尝试了这段代码
Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

但是getWindow()是RED(无法解析方法)。

我尝试过使用context.getWindow(),但也有错误。如何从onReceiver上下文中访问getWindow?

目标:通过

刷新“屏幕保护程序”图像
  1. 下载图片(完成)
  2. 将图像写入目录(完成)
  3. 解锁设备
  4. 锁定devive
  5. 谢谢!

1 个答案:

答案 0 :(得分:0)

我不得不切换到使用Activity作为意图,而不是接收者。

一旦我这样做,我将以下代码放入警报活动中:

KeyguardManager km = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);
        final KeyguardManager.KeyguardLock kl = km.newKeyguardLock("MyKeyguardLock");
        kl.disableKeyguard();

        PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);

        PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                | PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
        wakeLock.acquire(1000);

上面的代码解锁了Nook! 请注意,带有标志的getWindow()方法似乎不适用于角落触摸。不知道为什么。