2011-04-12 11 views
6

Actualmente tengo la necesidad de implementar una aplicación en el dispositivo Android que pueda abrir transmisiones de audio en vivo y reproducirlas para el usuario. Esto no es gran cosa, y he configurado con éxito un servidor de transmisión y lo he hecho funcionar para un archivo. Mi pregunta es, sin embargo, ¿cómo puedo reproducir y reproducir múltiples archivos de audio a la vez?Android - Audio múltiple y simultáneo Streaming

Cuando abro más de una secuencia (usando MediaPlayer) y preparo y reproduzco cada archivo, solo escucho el audio de un archivo. No estoy seguro de que esto sea posible en la actualidad, pero espero que sí.

Analicé el uso de SoundPool, pero parece ser solo para medios locales y DEBO tener esta transmisión ya que es importante para la velocidad de reproducción (sin tiempo de espera, etc.).

¡Cualquier ayuda o idea es muy apreciada! ¡Gracias por adelantado!

+1

pero ¿por qué u quería jugar con ellos al mismo tiempo .......? – viv

+1

He creado una aplicación para componer documentos multimedia y si el usuario desea reproducir varios archivos de audio a la vez, me hubiera gustado permitirlo. Por ejemplo, atenuar una canción cuando se desvanece otra canción. –

+0

No he intentado con audio múltiple ... pero ¿usaste MediaPlayer.create() o el nuevo MediaPlayer()? – viv

Respuesta

1

Estaba jugando con una aplicación anteriormente y tuve un problema similar y pude solucionarlo, excepto que no estaba transmitiendo el audio. Espero que esto puede ayudar, tendrá que modificarlo para sus propósitos:

import android.media.AudioManager; 
import android.media.SoundPool; 
import android.media.SoundPool.OnLoadCompleteListener; 
import android.util.SparseIntArray; 

instancias de un soundpool y una SparseIntArray estoy usando archivos de sonido aquí, tendrá que modificar esta parte.

private static SoundPool soundPool; 
private static SparseIntArray soundPoolMap; 
public static final int S1 = R.raw.good_1, S2 = R.raw.bad_1, 
     P1 = R.raw.power_1, 
     P2 = R.raw.power_2, 
     P3 = R.raw.power_3, 
     P4 = R.raw.power_4, 
     P5 = R.raw.power_5, 
     WIN = R.raw.round_win; 

inicializar sus sonidos y añadirlos al mapa

public static void initSounds(Context context) 
{ 
    soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 100); 
    soundPoolMap = new SparseIntArray(8);  

    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
     public void onLoadComplete(SoundPool soundPool, int sampleId, 
       int status) { 
      loaded = true; 
     } 
    }); 
    soundPoolMap.put(S1, soundPool.load(context, R.raw.good_1, 1)); 
    soundPoolMap.put(S2, soundPool.load(context, R.raw.bad_1, 2)); 

    soundPoolMap.put(P1, soundPool.load(context, R.raw.power_1, 3)); 
    soundPoolMap.put(P2, soundPool.load(context, R.raw.power_2, 4)); 
    soundPoolMap.put(P3, soundPool.load(context, R.raw.power_3, 5)); 
    soundPoolMap.put(P4, soundPool.load(context, R.raw.power_4, 6)); 
    soundPoolMap.put(P5, soundPool.load(context, R.raw.power_5, 7)); 

    soundPoolMap.put(WIN, soundPool.load(context, R.raw.round_win, 8)); 
} 

Reproducir el sonido

public static void playSound(Context context, int soundID) 
{ 
    float volume = 1; 
    if(soundPool == null || soundPoolMap == null) 
    { 
     initSounds(context); 
    } 
    soundPool.play(soundPoolMap.get(soundID), volume, volume, 1, 0, 1f); 
} 

Un ejemplo: reproducirSonido (esto, P1);

Qué está sucediendo es que estoy utilizando la clase SoundPool y luego trazar los flujos de audio con un SparseIntArray

+0

Gracias por la respuesta. Sin embargo, pude obtener archivos de audio simultáneos para reproducir solo, como dijiste, cuando no se está transmitiendo. Streaming parecía romper todo. Sin embargo, ha pasado un tiempo desde que trabajé en Android y estoy seguro de que las API han mejorado mucho. Tal vez su ejemplo funcionaría para la transmisión ahora. –