Подтвердить что ты не робот

Как отключить звуковые эффекты по умолчанию для всех моих приложений или действий

В моем приложении я использую звуковой пул для звукового эффекта нажатия кнопки. Проблема в том, что если в настройках устройства будет отмечен "Звуковой отбор", тогда мои кнопки будут воспроизводить два звука: одно и то же, и одно в одно время.

Похоже, что если в свойствах каждой кнопки я устанавливаю значение "Звуковые эффекты включены" в false, системный звук больше не слышен. Но у меня много кнопок по десяткам действий, плюс я добавляю матрицу кнопок в коде, поэтому довольно сложно установить "Звуковые эффекты включены" ложно вручную для каждого из них. Не уверен, как я это делаю в коде.

Есть ли более глобальный способ остановить "Звуковой отбор" в моем приложении или, по крайней мере, для одного действия?

4b9b3361

Ответ 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

Вы также можете пойти дальше и узнать, какой новый пользовательский звук должен воспроизводиться.