Riprodurre l’audio con SoundPool

Ho bisogno di riprodurre un suono breve, nella mia applicazione. Ho scritto il seguente codice ma non sento l’audio e strana vibrazione è apparso sul mio telefono Samsung. Ma nello stesso tempo questo codice funziona bene sul mio simulatore di android. Il mio codice è:

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);
    };
}

Mi aiuta a risolvere questo problema, per favore! Vi ringrazio in anticipo! 🙂

Potete controllare se logcat stampe interessanti errori?

OriginaleL’autore lubart | 2011-06-18

One Reply
  1. 7

    Ci potrebbe essere un problema con il controllo del volume o con il file audio viene riprodotto correttamente: se si modifica il Sound() funzione di questo che cosa fa? Se il telefono non è correttamente gestire il R.raw.error formato di file, ma l’emulatore fa, giustamente, che sarebbe MOLTO strano.

    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)+"]");
        };
    Grazie per il tuo replay! Il problema è risolto! 🙂 Ho cambiato il formato di file da *.ogg,*.wav e bingo!!!! 🙂 Grazie per l’aiuto! 🙂
    Ah, il telefono non supporta ogg, ma l’emulatore. Buono a sapersi. Pensato che potrebbe essere il formato del file.
    Il telefono supporta questo formato. Questo file è stato giocato con MediaPlayer, ma solo una volta e dopo che fu silenzio. In ogni caso una buona notizia per me 🙂 Grazie ancora! 🙂
    Ah, il mio errore: SoundPool/traccia audio richiedono dati PCM che è quello che un wav ti dà. MediaPlayer fa la decodifica per il ogg ma SoundPool non.
    Vedo, ora è tutto chiaro!!! Mi prendo questa info in considerazione per il mio lavoro futuro. Grazie. 🙂

    OriginaleL’autore Femi

Lascia un commento