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

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

Войти
Регистрация
Восстановить пароль
 
MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
#1

Листенер на кнопки громкости. Как правильно? - Программирование Android

22.02.2014, 17:37. Просмотров 600. Ответов 0
Метки нет (Все метки)

Цель: определение и различие нажатий кнопок Громче/Тише, даже если увеличивать/уменьшать некуда и должно работать при свернутом приложении.
Начал вот с этого кода, но в нем сразу два бага:
1) при разовом нажатии кнопки громкости, событие срабатывает 4 раза, а при быстром двойном - шесть
2) если громкость увеличивать или уменьшать уже некуда, то нажатие не обрабатывается.

Java
1
2
SettingsContentObserver mSettingsContentObserver = new SettingsContentObserver(this,new Handler());
        getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, mSettingsContentObserver );
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
    public class SettingsContentObserver extends ContentObserver {
        int previousVolume;
        Context context;
 
        public SettingsContentObserver(Context c, Handler handler) {
            super(handler);
            context=c;
 
            AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            previousVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
        }
 
        @Override
        public boolean deliverSelfNotifications() {
            return super.deliverSelfNotifications();
        }
 
 
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            Button btn = (Button)findViewById(R.id.button);
            AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            int currentVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
 
            int delta=previousVolume-currentVolume;
            cnter++;
            btn.setText(cnter+"");
            if(delta>0)
            {
                previousVolume=currentVolume;
            }
            else if(delta<0)
            {
                previousVolume=currentVolume;
            }
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 17:37     Листенер на кнопки громкости. Как правильно?
Посмотрите здесь:

как правильно раставить кнопки в Table Row? - Программирование Android
привет всем. Вот решил написать первую игру на андроид и столкнулся с проблемой. Вообще есть 4 кнопки, на них меняется текст, и когда текст...

Как получить уровень громкости звука? - Программирование Android
Как получить уровень громкости звука(использую android studio)?

Как получить уровень громкости на Android - Программирование Android
Как определить включен или выключен звук на Android?

Изменение громкости системы - Программирование Android
Здравствуйте! Уже облазил весь интернет, но не нашёл как изменить кромкость динамика через java. Знаю, это возможно, но как это...

Android studio определение громкости микрофона - Программирование Android
Android Studio. Нужно определить когда юзер дует в микрофон, в документации функций определения громкости микрофона не нашел. Как это...

Обработка нажатий клавиш громкости непосредственно Service (Activity уже закрыто) - Программирование Android
Уважаемые форумчане! Буду благодарен за любую помощь. Написал добрую часть приложения для Android, состоящего из Активности и...

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

Как растянуть 3 кнопки по ширине layout? - Программирование Android
Вот 3 кнопки, которые нужно растнуть? чтоб они были одинаковой ширины и заняли всю ширину layout Где и какой параметр...

Как создать кнопку по нажатию кнопки? - Программирование Android
Здравствуйте! Меня интересует как создать новый объект (в нашем случае кнопку) по нажатию другой кнопки? Я создал дополнительный класс и...

Как правильно парсить? - Программирование Android
У меня есть следующая строка: Как с помощью JSON-парсера считать значение number с объекта order со значением 0 не перебирая их?...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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