Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
#1

Отловить блокировку экрана - Программирование Android

14.07.2016, 14:50. Просмотров 333. Ответов 11
Метки нет (Все метки)

Добрый день!
Хотелось бы отловить блокировку экрана и, например, запустить активность. Т.е когда устройство разблокируется, первым что увидит пользователь - это открытая активность...
Как это сделать? Если через ресиверы то как?
Буду благодарен за ответ.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2016, 14:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отловить блокировку экрана (Программирование Android):

Отключить блокировку экрана при бездействии - Программирование Android
Как можно отключить блокировку экрана, если приложение активно, но пользователь долгое время не совершал никаких действий?

Определить взаимную блокировку (диагностика) - Программирование Android
как правильно определить причину взаимной блокировки в большом приложении, в большом проекте? Как правильно собрать дамп потоков и его...

Программно включить экран не отключая блокировку - Программирование Android
Добрый вечер! Появилась нужда во включении экрана (включении подсветки) не выходя из режима блокировки(Keyguard). К примеру, чтобы через...

Отловить нажатие кнопки Done - Программирование Android
Activity имеет элемент EditText ( android:inputType="number") подскажите как отловить нажатие DONE?

Отловить изменение в EditText - Программирование Android
Как узнать символы, которые пользователь ввел в edittext? Т.е например, пользователь ввел "яндекс" И нужно каждый символ нужно приравнять...

Отловить изменение в EditText - Программирование Android
Какой реактор и как повесить на EditText? (там их много - я запутался) С редакторами пока не работал. Надо засечь сам факт изменения...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
petruchodd
14.07.2016, 16:31
  #2

Не по теме:

попахивает опять вирусняком или рекламой

0
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
14.07.2016, 19:01  [ТС] #3
petruchodd, локскрином...
0
Pablito
2485 / 1930 / 602
Регистрация: 12.05.2014
Сообщений: 6,782
Завершенные тесты: 1
14.07.2016, 19:08 #4
Цитата Сообщение от den_droid Посмотреть сообщение
Т.е когда устройство разблокируется
если после разблокировки будет показан локскрин, то чем тогда устройство было заблокировано до этого?
0
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
14.07.2016, 19:38  [ТС] #5
Паблито, блокировка устройства допустим снята. Подойдем к вопросу с другой стороны. Как отловить отключение экрана?
0
Pablito
2485 / 1930 / 602
Регистрация: 12.05.2014
Сообщений: 6,782
Завершенные тесты: 1
14.07.2016, 19:46 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Notification и выключенный экран
1
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
14.07.2016, 19:50  [ТС] #7
Паблито, спасибо огромное! Сейчас протестирую
0
vxg
Модератор
3162 / 1965 / 220
Регистрация: 13.01.2012
Сообщений: 7,523
14.07.2016, 19:54 #8
den_droid, что мешает отреагировать на подсветку экрана)?
0
Pablito
2485 / 1930 / 602
Регистрация: 12.05.2014
Сообщений: 6,782
Завершенные тесты: 1
14.07.2016, 19:54 #9
Java
1
2
где-то в сервисе или активити
registerReceiver(receiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
код из примера немного переделать и все
0
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
14.07.2016, 20:51  [ТС] #10
Паблито,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
BroadcastReceiver receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                Toast.makeText(context.getApplicationContext(), action, Toast.LENGTH_SHORT).show(); // не выводит
                if (action.equals(Intent.ACTION_SCREEN_ON)) {
                    Toast.makeText(context.getApplicationContext(), "On", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(context.getApplicationContext(), "Off", Toast.LENGTH_SHORT).show();
                }
            }
        };
        registerReceiver(receiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
Чет не выводит... Простите меня за мой идиотизм, но может быть еще что-то в манифесте писать надо? Например:
XML
1
2
3
4
5
<receiver android:name=".receiver">  
            <intent-filter>  
                <action android:name="android.intent.action.ACTION_SCREEN_OFF" />  
            </intent-filter>  
        </receiver>
Добавлено через 33 минуты
Как не пробую - не работает...

Добавлено через 7 минут
Решил проблему. Вот решение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
                onoff = true;
                Toast.makeText(context.getApplicationContext(), ""+onoff, Toast.LENGTH_SHORT).show();
            } else {
                onoff = false;
                Toast.makeText(context.getApplicationContext(), ""+onoff, Toast.LENGTH_SHORT).show();
            }
        }
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        
        registerReceiver(receiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
        registerReceiver(receiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
    }
0
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
16.07.2016, 22:34  [ТС] #11
Паблито, блин, помогите пожалуйста. Уже не знаю что делать. Не работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class LockscreenService extends Service {
    boolean lockOnOff;
    boolean activated = false;
    int type;
    
    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
                if ( 5 == 5 ) {
                    //activated = true;
                    Toast.makeText(context.getApplicationContext(), "Starting...", Toast.LENGTH_SHORT).show();
                    context.startActivity(new Intent(context, MainActivity.class));
                }
            } else {
                Toast.makeText(context.getApplicationContext(), "Starting2...", Toast.LENGTH_SHORT).show();
                startActivity(new Intent(context, MainActivity.class));
            }
        }
    };
    
    @Override
    public IBinder onBind(Intent p1) {
        return null;
    }
 
    @Override
    public void onCreate() {
        try {
            JSONArray ja = new JSONArray(new DenDroidTools().readFile(Environment.getExternalStorageDirectory() + "/example/Lockscreen/settings.tsf"));
            lockOnOff = ja.getBoolean(0);
            type = ja.getInt(1);
        } catch (JSONException e) {}
        
 
        if (lockOnOff) {
            Toast.makeText(getApplicationContext(), "Register... " + lockOnOff, Toast.LENGTH_SHORT).show();
            registerReceiver(receiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
            registerReceiver(receiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
        }
        super.onCreate();
    }
    
    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        
    }
 
    @Override
    public void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }
}
0
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
17.07.2016, 22:45  [ТС] #12
Все проблемы решены кроме одной. Как получить системные обои?)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2016, 22:45
Привет! Вот еще темы с ответами:

Поворот куба сначала вокруг оси y с.к. экрана потом вокруг оси x с.к. экрана - Программирование Android
Предыстория: Я пишу 3D игру и там соответственно нужно производить поворот тела в пространстве. нужно делать 2 поворота по горизонтали и...

AsyncTask, отловить нажатие кнопки - Программирование Android
Здравствуйте! Есть такой код class RequestTaskT extends AsyncTask&lt;String, Void, String&gt; { protected void onPreExecute() { ...

Отловить нажатие кнопки Home - Программирование Android
Всем привет! Как отловить нажатие кнопки Home. В onKeyDown не получается.... Какие ещё варианты?

Как отловить longclick у AppWidgetHostView - Программирование Android
Всем привет! Делаю свой лаунчер. Вроде все не плохо, только вот проблема с сабжем. У некоторых виджетов работает, но только по нажатию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.07.2016, 22:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru