2016-10-31 16 views
0

特別な状況で空白を表示するアプリケーションを開発しています 運行なしでMainActivityクラスを使用して空想サービスを開始する適切な方法をどこからでも検索しました。アクティビティからDayDreamサービスを開始および停止する適切な方法

現在、私はdaydreamを開始するために次のコードを使用していますが、実際には動作しますが、私は白昼夢を止める方法を提供するより良い解決策が必要です。

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 */ } 
} 

答えて

0

私は同じ方法で起動していますが、公式な方法やデイドリームを止めるつもりは見つかりませんでした。

ただし、活動によってフォーカスを取り戻すことで、空想を止めることができます。この目的のために、サービスを作成し、空想を止めたいときは、サービスからあなたの活動への意図を送信してください。副作用として、あなたの活動は、それがバックグラウンドであった場合、インテントを受け取ったときに前面に来るでしょう。このアプローチは、少なくとも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(); 
関連する問題