Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
MegaSinner
98 / 94 / 9
Регистрация: 09.04.2010
Сообщений: 746
1

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

22.02.2014, 17:37. Просмотров 675. Ответов 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;
            }
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 17:37
Ответы с готовыми решениями:

Кнопки регулировки громкости
Нужно создать в приложении кнопки, при нажатии на которые будет увеличиваться и...

как правильно раставить кнопки в Table Row?
привет всем. Вот решил написать первую игру на андроид и столкнулся с...

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

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

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 17:37

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

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

Как правильно переназначить кнопки
Может, я не правильно поставил вопрос, но смысл в следующем: Есть код: //...


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

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

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