Как отключить звуковые эффекты по умолчанию для всех моих приложений или действий
В моем приложении я использую звуковой пул для звукового эффекта нажатия кнопки.
Проблема в том, что если в настройках устройства будет отмечен "Звуковой отбор", тогда мои кнопки будут воспроизводить два звука: одно и то же, и одно в одно время.
Похоже, что если в свойствах каждой кнопки я устанавливаю значение "Звуковые эффекты включены" в false, системный звук больше не слышен. Но у меня много кнопок по десяткам действий, плюс я добавляю матрицу кнопок в коде, поэтому довольно сложно установить "Звуковые эффекты включены" ложно вручную для каждого из них. Не уверен, как я это делаю в коде.
Есть ли более глобальный способ остановить "Звуковой отбор" в моем приложении или, по крайней мере, для одного действия?
Ответы
Ответ 1
Создайте файл темы "res/values /styles.xml"
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppBaseTheme" parent="android:Theme.Black.NoTitleBar">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:soundEffectsEnabled">false</item>
</style>
</resources>
И затем ссылайтесь на него в своем "AndroidManifest.xml"
<application
...
android:theme="@style/AppTheme" >
Ответ 2
У меня была такая же проблема для моего приложения. Я смог отключить звуковую обратную связь по всему миру, разместив android:soundEffectsEnabled=false
в теме.
Ответ 3
Вы можете создать свой собственный класс Button и использовать его в файлах макета XML...
package com.mycompany.myApp
public class MyButton extends Button {
public MyButton (Context context, AttributeSet attrs) {
this.setSoundEffectsEnabled(false);
}
}
Затем в файлах макета XML используйте...
<com.mycompany.myApp.MyButton
...
</com.mycompany.myApp.MyButton>
... для ваших кнопок.
Ответ 4
Вы можете создать настраиваемое представление, которое продолжается от Button. Затем просто установите для параметра Sound Effect Enabled значение false при его создании.
http://developer.android.com/guide/topics/ui/custom-components.html
Вы также можете пойти дальше и узнать, какой новый пользовательский звук должен воспроизводиться.