Avisos

Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 22/08/13, 17:41:11
Array

[xs_avatar]
jonathanval jonathanval no está en línea
Usuario novato en la web
 
Fecha de registro: ago 2013
Mensajes: 19
Modelo de smartphone: s3
Tu operador: Movistar
rom Como transformo byte en audio

Hola buenas!!
Hace unos días hice una pregunta y me la respondieron, pero me queda el último paso para conseguirlo... He recibido en un json una imagen de un servidor, sé como convertir de nuevo ese archivo en una imagen. Pero cómo hago eso mismo si lo que recibo del json es un archivo de sonido?? Es decir, como lo convierto a audio?? (Yo creo que consiste en cambiar la linea en negrita noo??)

for (int i = 0; i < definiciones.length(); i++) {
JSONObject defini = definiciones.getJSONObject(i);
String data = defini.getString("Imagen");
try {
byte[] byteData = Base64.decode(data, Base64.DEFAULT);
im[i] = BitmapFactory.decodeByteArray(byteData, 0,
byteData.length);

} catch (Exception e) {
e.printStackTrace();
}
}

Gracias por vuestro tiempo!
Responder Con Cita


  #2  
Viejo 22/08/13, 17:56:54
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Buena pregunta, como el tema del audio suelen ser flujos de datos (streams), no existe algo equivalente a Bitmap pero en audio. Normalmente el audio lo tienes guardado en ficheros o lo cargas de una URL.

Lo que tienes que hacer es guardar el array de byte[] simplemente, y pasárselo al reproductor cuando tengas que reproducirlo.

Para reproducir el byte[], en stackoverflow dan una buena idea, que es creando un FileInputStream a partir del byte[] y pasarle su descriptor al MediaPlayer mediante el método setDataSource.

EDIT: Y si usas un SoundPool lo mismo, con el FileInputStream creado a partir del byte[] también te vale.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 22/08/13 a las 17:59:25.
Responder Con Cita
  #3  
Viejo 22/08/13, 18:23:28
Array

[xs_avatar]
jonathanval jonathanval no está en línea
Usuario novato en la web
 
Fecha de registro: ago 2013
Mensajes: 19
Modelo de smartphone: s3
Tu operador: Movistar
Muchas gracias!! Voy a ver si me sale, sino os vuelvo a preguntar
Responder Con Cita
  #4  
Viejo 22/08/13, 20:20:42
Array

[xs_avatar]
jonathanval jonathanval no está en línea
Usuario novato en la web
 
Fecha de registro: ago 2013
Mensajes: 19
Modelo de smartphone: s3
Tu operador: Movistar
A partir de lo que has comentado he encontrado éste código, pero no lo entiendo bien y no me funciona...
1-Qué es el método "getCacheDir()"?
2- Tiene que ser un archivo mp3?
Espero vuestra ayuda!!

private void playMp3(byte[] mp3SoundByteArray) {
try { // create temp file that will hold byte array File tempMp3 = File.createTempFile("kurchina", "mp3", getCacheDir());
tempMp3.deleteOnExit();
FileOutputStream fos = new FileOutputStream(tempMp3);
fos.write(mp3SoundByteArray);
fos.close();
MediaPlayer mediaPlayer = new MediaPlayer();
FileInputStream fis = new FileInputStream(tempMp3);
mediaPlayer.setDataSource(fis.getFD());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException ex) {
String s = ex.toString();
ex.printStackTrace(); }
}

Última edición por jonathanval Día 22/08/13 a las 20:22:52.
Responder Con Cita
  #5  
Viejo 22/08/13, 21:08:12
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
1. Es un directorio donde la app almacena datos, pero no te garantiza que sean permanentes. Además creo que tiene un límite de 50 MB.

Es decir, el fichero se crea (siempre y cuando pese menos de 50 MB, o del límite que tenga el directorio que ahora mismo no lo recuerdo exactamente), pero si en ese directorio hay ficheros que hacen que tu nuevo fichero vaya a ocupar más del límite, se borran.

Por ejemplo, tienes ahora mismo 10 ficheros de 5 MB cada uno, y vas a crear otro fichero de 5 MB, el sistema eliminará automáticamente uno de los ficheros que ya existían (o en este caso muy probablemente 2).

También se borra si la SD necesita escribir en un directorio que no es de cache y no tiene espacio. Ya sea de tu aplicación o de otra aplicación.

Así que tenlo en cuenta, es para datos muy temporales, si quieres bajarte el fichero de audio, reproducirlo, y fuera, es el directorio ideal. Yo lo uso para almacenar thumbnails de las imágenes que tengo en un servidor y que muestro en la aplicación.

2. Los formatos soportados por MediaPlayer los tienes aquí:

http://developer.android.com/guide/a...a-formats.html
Responder Con Cita
  #6  
Viejo 22/08/13, 21:21:20
Array

[xs_avatar]
jonathanval jonathanval no está en línea
Usuario novato en la web
 
Fecha de registro: ago 2013
Mensajes: 19
Modelo de smartphone: s3
Tu operador: Movistar
Aaaaa, pues para mi app me viene de perlas el getCacheDir(), pero mi problema es como usarlo, porque eclipse me lo marca como si fuese un error, la única opción que me da es crear un método en blanco con él...

Gracias y siento ser tan brasas...
Responder Con Cita
  #7  
Viejo 22/08/13, 21:48:02
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
A getCacherDir() tienes que llamarlo desde un Context, así que si no la estás llamando desde un Activity tendrás que pasar el Context como parámetro. En el caso de estar haciéndolo desde un Fragment puedes obtener el Context con getActivity().
Responder Con Cita
  #8  
Viejo 22/08/13, 22:15:42
Array

[xs_avatar]
jonathanval jonathanval no está en línea
Usuario novato en la web
 
Fecha de registro: ago 2013
Mensajes: 19
Modelo de smartphone: s3
Tu operador: Movistar
Muchas graciaaaas!!! Me ha funcionado!! Lo que yo hacía mal era crear File (y con ello lo de guardar en caché) desde una clase, no desde la Activity.

Muy agradecido, de verdad!!
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 20:27:28 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /