Руководство по Android SoundPool - PullRequest
0 голосов
/ 19 мая 2018

Я только что наткнулся на эту функциональность "SoundPool", которая звучит довольно круто.Но после нескольких часов изучения документации и примеров по Android я ничего не могу получить.Я не уверен, что я что-то пропустил вообще.Компилятор (Android Studio) не сообщил об ошибке.Просто когда я нажимаю кнопку для воспроизведения звука, звук не воспроизводится.Пожалуйста, помогите.

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

public class MainActivity extends AppCompatActivity {

    Button btnPlay;
    AudioAttributes audioAttributes;
    SoundPool sp;
    TextView tvNote;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnPlay = (Button) findViewById(R.id.btnPlay);
        tvNote = (TextView) findViewById(R.id.tvNote);


    }

    public void playClicked(View v) {
        audioAttributes = new AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                .setUsage(AudioAttributes.USAGE_MEDIA)
                .build();
        sp = new SoundPool.Builder()
                .setMaxStreams(4)
                .setAudioAttributes(audioAttributes)
                .build();
        int soundId = sp.load(getApplicationContext(), R.raw.piano_c3, 1);
        sp.play(soundId, 1, 1, 1, 0, 1f);

        tvNote.setText("piano_c3");

    }

Пожалуйста, дайте мне знать, что я пропустил.Спасибо.

1 Ответ

0 голосов
/ 20 июня 2018
soundPool.play(soundID,leftVolume,rightVolume,priority,loop,rate);

Это атрибуты, необходимые для воспроизведения звукового пула

leftVolume, rightVolume, priority установлены на 1, что в порядке

и оценивается, если 1fи это тоже хорошо, это означает, что как быстро вы хотите воспроизвести свой звук, чем выше число, тем выше скорость

Но вы сохранили цикл на «0», поэтому он не воспроизводит звук, вот что отличаетсятипы среднего числа

0: - играть 0 раз

1: - играть 1 раз

-1: - играть бесконечное число раз в цикле

попробуйте изменить его в соответствии с вашими настройками

...