2010-11-09 13 views
5

Estoy desarrollando una aplicación de Android que reproducirá archivos mp3. Sin embargo, los archivos mp3 están encriptados en la tarjeta sd o sqlite. De cualquier manera, después del descifrado, tendré una secuencia de bytes. ¿Cómo los juego? MediaPlayer no toma inputstream como parámetro, así que no puedo considerar eso.¿Cómo se reproduce una secuencia de audio de bytes en android?

+0

Posiblemente un duplicado de éste? Compruebe la respuesta aceptada, ya que se trata de jugar 'byte []': http://stackoverflow.com/questions/1972027/android-playing-mp3-from-byte – birryree

+0

la transmisión no debería estar disponible para el usuario. Entonces, si hago un archivo, entonces el usuario puede acceder al archivo y esta no es una buena idea para este proyecto en particular. – Vikram

Respuesta

0

Esto no será fácil. Lo he hecho antes en BlackBerry, así que apuesto a que también es posible en Android.

Si yo fuera usted registraría un nuevo proveedor para el protocolo personalizado "encryptedmp3:". Entonces me gustaría especificar esto en una fuente de datos para el MediaPlayer:

mediaplayer.setDataSource(this, URI.parse("encryptedmp3://....yourfile")); 

No estoy seguro de cómo crear un nuevo controlador de protocolo en Android.

Espero que esto ayude un poco.

Emmanuel

2

Creo que se necesita para almacenar la corriente al sistema de archivos; entonces usted podría tratar de usar el método de setDataSourceMediaPlayer

FileInputStream rawmp3file= new FileInputStream(yourByteArrayAsMp3File); 
mediaPlayer.setDataSource(rawmp3file.getFD()); 

Si usted podría cambiar a la fuente de audio PCM, echar un vistazo a AudioTrack clase.

La clase AudioTrack maneja y juega un solo recurso de audio para Java aplicaciones. Permite transmitir PCM búferes de audio al hardware de audio para su reproducción. Esto se logra mediante "empujando" los datos al objeto AudioTrack utilizando uno de los métodos de escritura (byte [], int, int) y write (short [], int, int) .

-1

Eche un vistazo a BASS library (gratis para uso no comercial).
Aquí hay un enlace para Android: http://www.un4seen.com/forum/?topic=13225.0

No es BASS_StreamCreateFile función:

HSTREAM BASS_StreamCreateFile(
    BOOL mem, 
    void *file, 
    QWORD offset, 
    QWORD length, 
    DWORD flags 
); 

Parámetros:

mem  TRUE = stream the file from memory. 
file Filename (mem = FALSE) or a memory location (mem = TRUE). 
Cuestiones relacionadas