2016-10-31 1 views
0

특별한 상황에서 백일몽을 표시해야하는 응용 프로그램을 개발 중입니다. 내 MainActivity 클래스를 통해 나의 백일몽 서비스를 시작하는 적절한 방법을 찾기 위해 어디에서나 수색했습니다.활동에서 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

나는 같은 방식으로 시작하지만 공식 방법이나 백일몽을 멈추려는 의도는 찾지 못했습니다.

그러나 액티비티로 포커스를 다시 가져와 백일몽을 멈출 수는 있습니다. 이 목적을 위해 서비스를 만들고 백일몽을 멈추고 자 할 때 서비스의 의도를 활동에 보내십시오. 부작용으로 귀하의 활동은 배경에있을 때 의도를받을 때 앞으로옵니다. 이 접근법은 적어도 안드로이드 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();