0

こんにちは、ご協力ありがとうございます。

次のような状況があります。

ユーザーがそれをタップすると、アプリウィジェットがいくつかのタスクを実行します(それ自体を更新します)。

ポイントは、電話がスリープ モードのときにユーザーがアプリ ウィジェットをタップすると、アプリ ウィジェットは更新されますが、アプリ ウィジェット自体は表示されないということです。

したがって、ユーザーがロック画面ウィジェットをタップしたときにデバイスをウェイクアップする必要があります-そして、デバイスが再びスリープ状態になった後:-)-

したがって、私は使用できます:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "bbbb");
wl.acquire();

AppWidgetProvider で。ポイントは、デバイスがスリープ状態に戻るように「release()」を呼び出すにはどうすればよいかということです。

私が行った場合:

    PowerManager pm = (PowerManager) ctxt.getSystemService(Context.POWER_SERVICE);
    WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "bbbb");
    wl.acquire();
    wl.release();

AppWidgetProvider では、単にデバイスが起動することはありません。

どんな提案でも大歓迎です!

ありがとう!!

4

1 に答える 1

0

さて、私は Handler を使って呼び出しました

wl.release()

60 秒後:

public class AppWidget extends AppWidgetProvider {

@Override
public void onUpdate(Context ctxt, AppWidgetManager mgr, int[] appWidgetIds) {
    ComponentName thisWidget = new ComponentName(ctxt, AppWidget.class);
    int[] allWidgetIds = mgr.getAppWidgetIds(thisWidget);
    Intent i = new Intent(ctxt, UpdateService.class);
    i.putExtra("widgetsids", allWidgetIds);
    ctxt.startService(i);

    PowerManager pm = (PowerManager) ctxt
            .getSystemService(Context.POWER_SERVICE);
    final WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
            | PowerManager.ACQUIRE_CAUSES_WAKEUP, "bbbb");
    wl.acquire();
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            wl.release();
        }
    }, 60000);

}
于 2013-06-04T15:39:42.437 に答える