Tengo un código para reproducir un archivo de audio .ogg
, que descargué de Internet. No tengo errores, para que pueda ejecutarlo, pero luego la aplicación se bloquea:¿Cómo reproduzco un archivo de audio en Android?
package play.my.sound;
import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
public class PlaySound2Activity extends Activity {
private SoundPool soundPool;
private int soundID;
boolean loaded = false;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View view = findViewById(R.id.textView1);
view.setOnClickListener((OnClickListener) this);
// Set the hardware buttons to control the music
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// Load the sound
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
loaded = true;
}
});
soundID = soundPool.load("sound1.ogg", 1);
}
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// Getting the user sound settings
AudioManager audioManager = (AudioManager) getSystemService (AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume/maxVolume;
// Is the sound loaded already?
if (loaded) {
soundPool.play(soundID, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
}
return false;
}
}
creo que tengo dos problemas:
pongo esto en el archivo
main.xml
:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="Click on the screen to start playing" android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="fill_parent"></TextView> </LinearLayout>
Y yo no sé si es correctoPuse el archivo
sound1.ogg
en la carpetaworkspace->SoundPlay2
porque en la carpeta res tuve problemas, y también, traté de ponerlo en las dos carpetas de res que existen.
Esto es de mi consola:
[2012-01-04 19:38:16 - PlaySound2] Failed to install PlaySound2.apk on device 'emulator-5554': timeout
[2012-01-04 19:38:16 - PlaySound2] Launch canceled!
[2012-01-04 19:47:33 - PlaySound2] Error in an XML file: aborting build.
[2012-01-04 19:52:34 - PlaySound2] res\layout\main.xml:0: error: Resource entry main is already defined.
[2012-01-04 19:52:34 - PlaySound2] res\layout\main.out.xml:0: Originally defined here.
[2012-01-04 19:52:34 - PlaySound2] C:\Users\Natalia\workspace\PlaySound2\res\layout\main.out.xml:1: error: Error parsing XML: no element found
Tomé este ejemplo de "Android Sounds - Tutorial". Quiero reproducir un archivo de audio, más específicamente, un archivo .wav
.
No sé dónde puedo encontrar información sobre los archivos permitidos en la clase MediaPlayer y sus características (duración, frecuencia de muestreo ...) ¿Podría decirme dónde puedo encontrar esto?
Este es el último error que tengo en mi log cat: E/AndroidRuntime (739): java.lang.RuntimeException: no se puede iniciar la actividad ComponentInfo {play.my.sound/play.my.sound.PlaySound2Activity}: java .lang.ClassCastException: play.my.sound.PlaySound2Activity no se puede convertir a android.view.View $ OnClickListener –
¿por qué no simplemente busca en google para encontrar respuestas simples. una búsqueda simple de "Formatos de audio admitidos" en google arrojó http://developer.android.com/guide/appendix/media-formats.html. http://developer.android.com/guide/topics/media/mediaplayer.html – manjusg