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

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

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

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

22.02.2014, 17:37. Просмотров 602. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Листенер на кнопки громкости. Как правильно? (Программирование Android):

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

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

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

Как после подключения освободить листенер? - C#
Пробовал закрывать сокеты - этого недостаточно, при повторном коннекте пишет, что порт занят: public void ListenInAnotherThread()...

Как сделать листенер буффера обмена в Java? - Java
Есть ли способ отслеживать изменение буффера обмена в Java&amp;

Не работают сенсор, кнопки питания и регулирования громкости на планшете, что делать? - Windows 10
Дал Планшет Irbis tw43 на Windows 10 брату в общагу. Он его завирусовал и с флешки переустановил windows10, скаченного с инета. Проблема в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 17:37
Привет! Вот еще темы с ответами:

Можно ли сделать регулятор громкости полностью синхронным с системным регулятором громкости - Visual Basic .NET
Ну во первых всех С Новым Годом!!! и всех благ. Теперь вопрос можно ли сделать регулятор громкости полностью синхронным с системным...

Как правильно делать лейблы и кнопки? - Python
Написала маленькую программу. Но вообще не знаю, как должна работать программа с графическим интерфейсом. Правильно ли так добавлять или...

Телевизор EVGO ET-2185 - не работают кнопки на панели и горит инд. громкости даже если отключить эту панельку - Телевизоры
Пульта нет. Включается кнопкой на нём. При включении горит синий экран без каких-либо знаков, кроме громкости (она на нуле). ...

как правильно почистить десигнер после удаления кнопки с формы? - C#
удалил кнопку, ругается на код в десигнере // toolStripMenuItem8 // this.toolStripMenuItem8.Name =...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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