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

Воспроизведение звука с помощью SoundPool

Мне нужно воспроизвести короткий звук в моем приложении. Я написал следующий код, но у меня нет звука и странной вибрации, появившейся на моем телефоне Samsung. Но в то же время этот код хорошо работает на моем симуляторе Android. Мой код:

package com.samplers;

import android.app.Activity;
import android.media.SoundPool;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class FixVibroActivity extends Activity {
    /** Called when the activity is first created. */

    private Button white;
    private SoundPool spool;
    private int soundID;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
        spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
        soundID = spool.load(this, R.raw.error, 1);

        white = (Button)findViewById(R.id.whiteBtn);
        white.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Sound();
            }
        });
    }

    public void Sound(){
        AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        spool.play(soundID, volume, volume, 1, 0, 1f);
    };
}

Помогите мне решить эту проблему, пожалуйста! Заранее спасибо!:)

4b9b3361

Ответ 1

Там может быть проблема с вашим регулятором громкости или с правильным звуковым файлом: если вы измените функцию Sound() на это, что она делает? Если ваш телефон неправильно обрабатывает формат файла R.raw.error, но эмулятор делает это правильно, это было бы очень странно.

public void Sound(){
        AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        android.util.Log.v("SOUND","["+volume+"]["+spool.play(soundID, volume, volume, 1, 0, 1f)+"]");
    };