2013-11-23 7 views
4

Я нашел post с двух лет назад, что кто-то сказал, что это невозможно. Я также обнаружил, что могу использовать ACTION_USER_PRESENT для обнаружения, когда пользователь разблокирует экран, но могу ли я определить, когда пользователь включает экран (любым действием)?Можно ли определить, когда экран включается пользователем (Android)?

EDIT: Я хочу знать, когда пользователь нажмите любую кнопку или сделать что-нибудь еще, что может повернуться на экране

+0

См. Http://stackoverflow.com/a/9478013/362298 –

+0

Это действие используется для определения того, когда экран включен \ выкл. Я хочу знать, когда пользователь включает экран –

ответ

1

Я начал писать это как комментарий, но это оказалось слишком большим.

Я тоже ничего не нашел. Вы can't have a key listener on services, и вы, по-видимому, не можете зарегистрировать широковещательный приемник для кнопки питания, only for media buttons. Может быть, вы можете сделать это на широковещательном приемнике для включения экрана и проверить, какая текущая активность)? Like this, например:

ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE); 
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
ComponentName componentInfo = taskInfo.get(0).topActivity; 
Log.d(WebServiceHelper.TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()+" Package Name : "+ componentInfo.getPackageName()); 

Если вы можете получить обнаружить, что активность с фокусом является Lockscreen, вы увеличиваете шансы быть пользователь, который включил его/ее телефон. Может быть, альтернативный метод на вещательном приемнике to detect if the phone is locked, но я предполагаю, что это будет, как правило, делом независимо от того, отображается текущая активность:

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
boolean locked = km.inKeyguardRestrictedInputMode(); 

Надеется, что это может как-то помочь. Это интересный вопрос.

-1

Вы ищете это?

@Override 
public void onConfigurationChanged (Configuration newConfig) 

и поставить это в манифесте для каждого вида деятельности, что вы хотите уведомление ориентации:

android:configChanges="orientation" > 
+0

Я не хочу менять ориентацию , Я хочу знать, когда пользователь нажимает любую кнопку или делает что-нибудь еще, что может включить экран –

+0

о, извините. Я неправильно читаю «включается» как «повороты». –

4

Система будет транслировать Intent.ACTION_SCREEN_ON, которую вы можете использовать, чтобы поймать событие при включении экрана.

public class MyReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      // your code here 

     } 
    } 
} 

Обратите внимание, что вы не можете транслировать это событие самостоятельно.

+0

Это не то, что я просил –

 Смежные вопросы

  • Нет связанных вопросов^_^