![]() |
|
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 |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
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...")); } }); } |
|
#2
|
||||
|
||||
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(); } Última edición por Novagecko Día 20/10/13 a las 22:19:29 |
#3
|
||||
|
||||
Gracias Novagecko, lo pruebo y te comento
![]() |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 01:42:04 (GMT +2)
HTCMania: líderes desde el 2007