Кнопка mute для android-додатки
Так, я розібрався, і готовий продемонструвати своє рішення цієї проблеми відвідувачам Хабра. Тим більше, що рад з даного питання тут отримано не було (все-таки субота, нормальні люди відпочивають).
Отже, про все по порядку:
Що я хотів зробити?
А хотів я зробити в своєму додатку кнопку включення і виключення звуку, яка при натисканні на неї відключає звук, а при повторному натисканні включає. Багато хто скаже, що таке краще робити за допомогою RadioButton, але я зробив це по-тупому по-своєму за допомогою двох елементів ImageView (в ході викладу я буду називати їх Button, тому що ои по суті виконують функцію кнопок), зрозуміло видимим в поточний момент часу на екрані повинен бути тільки один з цих View, в залежності від того, який рівень гучності встановлено «нуль» або «більше нуля». При цьому я хотів також врахувати можливі маніпуляції користувача з гойдалкою гучності, щоб не вийшло такої ситуації: користувач апаратної кнопкою volume_up збільшив гучність, а на екрані в даний момент доступна кнопка її збільшення (хоча куди далі збільшувати) ... і навпаки.
Файл розмітки містить дві кнопки: stop_sound (яку користувач повинен бачити, коли гучність не дорівнює нулю, тобто щось грає) і кнопка play_sound (яку користувач повинен бачити, коли гучність дорівнює нулю, тобто нічого не грає)
Ось так ці View виглядають окремо (Малював їх сам в AdobeFlash):
Кнопка MUTE_btn:
id = sound_stop
Кнопка UNMUTE_btn:
id = sound_play
У коді нашої діяльності (Activity) пишемо наступне:
підсумок:
Вуаля, все працює як треба (Перевірено на моєму GalaxyNexus). Тепер, якщо користувач захоче він може змінювати гучність натисканням на розроблену нами «кнопку», зображення якої буде оповіщати про наявність чи відсутність звуку. А якщо раптом, користувач буде змінювати гучність апаратними клавішами, то і в цьому випадку зображення кнопки буде відповідати ситуації.
Сподіваюся, описане вище зможе кому-небудь допомогти в непростій справі розробки Android-додатків. Свої пропозиції та варіанти реалізації можете писати нижче. Мій же код точно не тягне на кращу реалізацію, тому що я не маю великий досвід розробки.