2011-06-18 27 views
11

Necesito reproducir un sonido breve en mi aplicación. Escribí el siguiente código pero no tengo sonido y apareció una extraña vibración en mi teléfono Samsung. Pero al mismo tiempo, este código funciona bien en mi simulador de Android. Mi código es:Reproducir sonido con SoundPool

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

¡Ayúdame a resolver este problema, por favor! ¡Gracias de antemano! :)

+1

¿Puedes verificar si el logcat imprime algún error interesante? – FeatureCreep

Respuesta

7

Puede haber un problema con el control de volumen o con la reproducción correcta del archivo de sonido: si cambia la función Sound(), ¿qué hace? Si su teléfono no está manejando correctamente el formato de archivo R.raw.error, pero el emulador lo está haciendo correctamente, sería MUY extraño.

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)+"]"); 
    }; 
+2

¡Gracias por su repetición! ¡El problema esta resuelto! :) Cambié el formato de archivo de * .ogg a * .wav y bingo !!!! :) ¡Gracias por la ayuda! :) – lubart

+4

Ah, el teléfono no es compatible con ogg, pero el emulador sí. Bueno saber. Pensé que podría ser el formato de archivo. – Femi

+0

El teléfono es compatible con este formato. Este archivo se jugó con MediaPlayer pero solo una vez y luego se silenció. En cualquier caso, buenas noticias para mí :) ¡Gracias de nuevo! :) – lubart

Cuestiones relacionadas