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 16/10/13, 18:16:02
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Guardar mp3 a tarjeta sd

Necesito compartir un sonido por whatsapp o cualquier aplicacion de sonidos, tengo un boton que al pulsar se reproduce un sonido, y al hacer una pulsacion larga sale el menu contextual para compartir, a traves de gmail por ejemplo me manda un archivo sin extension .mp3 y al mandarlo por whatsapp me dice error al enviar archivo, segun he leido primero hay que guardar el archivo a sd ( y despues borrarlo ) para poder enviarlo como .mp3 y no como "resource", alguien sabe como guardar un archivo a sd?

Este es mi codigo:

// Compartir sonidos
btn_sonido.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
shareIt();
return false;
}

private void shareIt() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("audio/mp3");
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/raw/" + R.raw.sonido1);
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Comparte audio con..."));

}
});

}
Responder Con Cita


  #2  
Viejo 20/10/13, 22:16:16
Array

[xs_avatar]
Novagecko Novagecko no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2013
Mensajes: 2
Tu operador: Movistar

Hola Kaiser,

Efectivamente necesitas guardar el archivo que deseas compartir en la SD, ten en cuenta que no vale con guardarlo en el almacenamiento reservado para la aplicación porque este espacio no está disponible para el resto de aplicaciones y, por ejemplo, WhatsApp, no podría leerlo.

Es aconsejable que para que para este tipo de tareas uses el directorio cache externo cuya ruta puedes conseguir llamando a context.getExternalCacheDir().

El archivo que se genera lo debes borrar, pero no instantáneamente despues de compartirlo, ya que la aplicación con que se comparta (p.e. WhatsApp) lo necesitará más adelante, por ejemplo para enviarlo a través de Internet. Por ello lo mejor es que de vez en cuando revises la carpeta de cache y borres aquellos archivos que haga tiempo que se crearon.

En cuanto a la copia desde los recursos de la aplicación este código debería funcionarte:

Código:
    File salida=new File(getExternalCacheDir().getAbsolutePath(),"sonido1.mp3");
    InputStream in = getResources().openRawResource(R.raw.sonido1);
    FileOutputStream out = new FileOutputStream(salida);
    byte[] buff = new byte[1024];
    int read = 0;

    try {
       while ((read = in.read(buff)) > 0) {
          out.write(buff, 0, read);
       }
    } finally {
         in.close();
         out.close();
    }
Saludos

Última edición por Novagecko Día 20/10/13 a las 22:19:29.
Responder Con Cita
  #3  
Viejo 21/10/13, 10:01:25
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Gracias Novagecko, lo pruebo y te comento
Responder Con Cita
Respuesta

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



Hora actual: 03:23:48 (GMT +2)



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

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