Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 16/10/13, 18:16:02
Avatar de kaiser75
kaiser75 kaiser75 no está en línea
Miembro del foro
Mensajes: 493
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Mencionado: 3 comentarios
Tagged: 0 hilos
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
Avatar de Novagecko
Novagecko Novagecko no está en línea
Usuario novato en la web
Mensajes: 2
 
Fecha de registro: oct 2013
Mensajes: 2
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kaiser75
kaiser75 kaiser75 no está en línea
Miembro del foro
Mensajes: 493
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Mencionado: 3 comentarios
Tagged: 0 hilos
Gracias Novagecko, lo pruebo y te comento
Responder Con Cita
Respuesta

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


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 01:42:04 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007