1

私は特別な状況で空想を表示する必要があるアプリケーションを開発しています.MainActivityクラスを介して空想サービスを開始する適切な方法を見つけるためにあらゆる場所を検索しましたが、うまくいきませんでした.

現在、次のコードを使用して空想を開始していますが、実際には機能しますが、空想を停止する方法を提供するより良いソリューションが必要です。

 public void startDayDream(){
    final Intent intent = new Intent(Intent.ACTION_MAIN);
    try {
        // Somnabulator is undocumented--may be removed in a future version...
        intent.setClassName("com.android.systemui",
                "com.android.systemui.Somnambulator");
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
    } catch (Exception e) { /* Do nothing */ }
}
4

1 に答える 1

2

私は同じ方法で始めていますが、空想を止める公式の方法や意図は見つかりませんでした.

ただし、活動によって集中力を取り戻すことで、空想を止めることができます。この目的のために、サービスを作成し、空想を止めたいときにサービスからアクティビティにインテントを送信します。副作用として、アクティビティがバックグラウンドにある場合、インテントを受け取るとアクティビティが前面に出てきます。このアプローチは、少なくとも Android 4.4 から 5.1 で機能します。

Android 6 の場合、夢を見るのをやめるには、起床をシミュレートするだけで十分です。

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "WakeUpLock");
    if (wakeLock.isHeld())
      wakeLock.release();
    wakeLock.acquire();
    wakeLock.release();
于 2016-11-04T20:19:01.197 に答える