logo
Bienvenido visitante. Para activar todas las funcionalidades, por favor Iniciar sesión o Registrarse.

Aviso

Icon
Error

Opciones
Ir a la última publicación
jmoc  
#1 Publicado : viernes, 3 de mayo de 2013 12:57:27(UTC)
jmoc

Posición: Newbie

Grupos: Registered
Registrado: 03/05/2013(UTC)
Mensajes: 3

Hola, soy nuevo en el foro, y en esto de la programación también... llevo un mesecillo o dos... y la verdad es que a veces me dan ganas de dejarlo xD Pero bueno, aquí estoy. Esto tratando de hacer que mi aplicación comparta un sonido que se encuentra como recurso en la carpeta raw, se trata de un .wav que he comprobado que es compatible. El código que estoy usando es el siguiente:

Citar:
Button accidentes = (Button) findViewById(R.id.accidentes);


ogijares.setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View v) {
final Intent comparte = new Intent(Intent.ACTION_SEND);
comparte.setType("audio/wav");
comparte.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://com.chm.instante/raw" + R.raw.ogijares));
startActivity(Intent.createChooser(comparte, "Enviar a..."));
return false;
}


He buscado por internet... y de ahí no paso, sé que el sonido está correctamente por que lo uso de la siguiente forma:

Citar:
public void ogijaresclick(View v) {
destruir();
mp = MediaPlayer.create(this,R.raw.ogijares);
mp.start();

}


He leído por ahí que el archivo debe de estar en la tarjeta de memoria para que se pueda enviar, pero la verdad es que no sé como hacer para que la aplicación guarde los archivos necesarios en la memoria, y luego como llegar a la dirección donde se encuentran. Además, conozco el caso de aplicaciones (instant button, en play store) que no guardan los sonidos en la tarjeta de memoria.

Muchas gracias por vuestra atención y al responsable por los tutoriales del principio, me han sido de gran ayuda!
admin  
#2 Publicado : viernes, 3 de mayo de 2013 21:57:00(UTC)
admin

Posición: Administration

Grupos: Administrators
Registrado: 07/10/2010(UTC)
Mensajes: 436
Hombre
Ubicación: España

Agradecimientos: 38 veces
Fue agradecido: 49 vez/veces in 48 publicación(es).
Buenas!!

Efectivamente as leido bien, no puedes usar archivos que tengas en resources directemente para enviarlos o trabajarlos fuera de la aplicacion.

Hace tiempo hice una aplicacion que tenia una imagen en resources y la necesitaba abrir para verla con el visor de imagenes, para ello tuve que primero copiarla a la memoria externa del telefono para despues abrirla.

Eso es lo mismo que quieres hacer tu, pero con un sonido para enviarlo, asique te dejo mi codigo:

Código:

// Creo el directoio para guardar las fotos
					File dir = new File(Environment
							.getExternalStorageDirectory() + "/.EIC/");

					// si el direcctorio no existe, lo creo
					if (!dir.exists()) {
						System.out.println("creando directorio: " + "EIC");
						dir.mkdir();
					}

					try {
						// Abrimos el recurso y lo metemos en un bufer
						Context c = getApplicationContext();
						InputStream ins = c.getResources().openRawResource(
								R.raw.termo_k);
						byte[] buffer = new byte[ins.available()];
						ins.read(buffer);
						ins.close();

						// Grabamos el bufer en un fichero
						String filename = Environment
								.getExternalStorageDirectory().toString()
								+ "/.EIC/termo_k.jpg";
						FileOutputStream fos = new FileOutputStream(filename);
						fos.write(buffer);
						fos.close();

					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}

					File open = new File(Environment
							.getExternalStorageDirectory().toString()
							+ "/.EIC/termo_k.jpg");

					Intent i1 = new Intent();
					i1.setAction(Intent.ACTION_VIEW);
					i1.setDataAndType(Uri.fromFile(open), "image/*");
					startActivity(i1);


espero que te sirva!! cuentanos que tal te fue ¿ok?

Nos leemos!!
Un saludo,

Curso Completo GRATIS paso a paso de como programar Android
http://www.aprendeandroid.com
jmoc  
#3 Publicado : sábado, 4 de mayo de 2013 10:09:45(UTC)
jmoc

Posición: Newbie

Grupos: Registered
Registrado: 03/05/2013(UTC)
Mensajes: 3

Muchas gracias por la respuesta! Pues ahora mismo ese código... no lo entiendo mucho, voy a leer unos tutoriales sobre java y el manejo de ficheros, y ya os cometaré como me ha ido.

MUCHISIMAS GRACIAS! De verdad! Saludos!
jmoc  
#4 Publicado : lunes, 6 de mayo de 2013 16:10:01(UTC)
jmoc

Posición: Newbie

Grupos: Registered
Registrado: 03/05/2013(UTC)
Mensajes: 3

Lo conseguí!! ya funciona perfectamente! :D Al final opté por cargarlo en la memoria caché, para que no ocupe memoria para siempre, jeje. Aquí os dejo el código completo por si a alguien le interesa:
Citar:
ogijares.setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View v) {


try {
// Abrimos el recurso y lo metemos en un bufer

InputStream ins = getResources().openRawResource(
R.raw.ogijares);
byte[] buffer = new byte[ins.available()];
ins.read(buffer);
ins.close();

// Grabamos el bufer en un fichero
String filename = getExternalCacheDir().toString()
+ "ogijares.wav";
FileOutputStream fos = new FileOutputStream(filename);
fos.write(buffer);
fos.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

File open = new File(getExternalCacheDir().toString()
+ "ogijares.wav");



final Intent comparte = new Intent(Intent.ACTION_SEND);
comparte.setType("audio/wav");
comparte.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(open));
startActivity(Intent.createChooser(comparte, "Enviar a..."));

return false;


}
});


Muchisimas gracias de nuevo, un saludo!
Usuarios navegando este tema
Guest
Salto de foro  
No puedes iniciar nuevos temas en este foro.
No puedes responder a temas en este foro.
No puedes eliminar sus temas en este foro.
No puedes editar sus temas en este foro.
No puedes crear encuestas en este foro.
No puedes votar las encuestas en este foro.