Как настроить звук нажатия кнопки для управления системой Android AudioManager - PullRequest
0 голосов
/ 13 июля 2020

Мне интересно, нужно ли что-то сделать, чтобы нажатие кнопки контролировалось Android MediaPlayer. Я обнаружил, что даже когда на телефоне установлен режим вибрация или беззвучный и нажата кнопка, он все равно издает неконтролируемый звук.

public void onBtnClick()
    {
        Log.v(TAG, "Initializing sounds...");
        final MediaPlayer mp = MediaPlayer.create(this, R.raw.sound_btn3);

        myButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mBrandNewDesc2.setVisibility((mBrandNewDesc2.getVisibility() == View.VISIBLE)
                        ? View.GONE : View.VISIBLE);
                Log.v(TAG, "Playing sound...");
                mp.start();

            }
        });

Это то, что я сделал, но не сработало

Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 1);
        v.playSoundEffect(SoundEffectConstants.CLICK);

1 Ответ

0 голосов
/ 17 июля 2020

У меня есть ответ. Я потратил время, чтобы понять, что установка звука для кнопки в onClickListener путем вызова mp.start только не сохраняет пользовательские настройки. Я также обнаружил, что многократное нажатие кнопки тайно увеличивает громкость аудиоменеджера без согласия пользователя.

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

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

Ниже приведен наиболее правильный способ реализации нажатия кнопки звуковой код

public void onBtnClick()
{
    Log.v(TAG, "Initializing sounds...");
    final MediaPlayer mp = MediaPlayer.create(this, R.raw.sound_btn);

    myButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            v.playSoundEffect(SoundEffectConstants.CLICK);
            mBrandNewDesc2.setVisibility((mBrandNewDesc2.getVisibility() == View.VISIBLE)
                    ? View.GONE : View.VISIBLE);
            Log.v(TAG, "Playing sound...");
            mp.start();

        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...