Ir al contenido



Foto

Share Audio MP3

Share Audio MP3 Share MP3 Audio

  • Por favor identifícate para responder
25 respuestas en este tema

#1 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 15 marzo 2016 - 12:55

Básicamente tenemos un MP3 y queremos compartirlo en otra aplicación:
 
En Java es:
 

delphi
  1. //en android
  2. //String sharePath = Environment.getExternalStorageDirectory().getPath() + "/Soundboard/Ringtones/custom_ringtone.ogg";
  3. //Uri uri = Uri.parse(sharePath);
  4. //Intent share = new Intent(Intent.ACTION_SEND);
  5. //share.setType("audio/*");
  6. //share.putExtra(Intent.EXTRA_STREAM, uri);
  7. //startActivity(Intent.createChooser(share, "Share Sound File"));

En Delphi:
 

delphi
  1. con42 := TPath.GetDocumentsPath + PathDelim + 'archivo.mp3';
  2.  
  3. Intent := TJIntent.Create;
  4. //Intent.setData(StrToJURI(con42));
  5. Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  6. Intent.setType(StringToJString('audio/*'));
  7. Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,StringToJString(con42));
  8. MainActivity.startActivity(Intent);

Me deja compartir pero al seleccionar da error: "Fallo a compartir, intentelo nuevamente.."
 
Probe con:
 

delphi
  1. intent.setType("audio/mpeg");


delphi
  1. intent.setType("audio/mpeg3");

y tampoco funciona.
 
Ideas?

 


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.677 mensajes
  • LocationMéxico

Escrito 15 marzo 2016 - 01:11

Hola wolfran_hack bienvenido a DelphiAccess

 

¿Ya verificaste que tengas permisos de acceso a los archivos?

 

Project --> Options --> Uses Permissions

 

Saludos


  • 0

#3 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 15 marzo 2016 - 02:30

si, tanto al sdcard como a la interna, de lectura y escritura.

 

Creo que el error esta en:


php
  1. Uri uri = Uri.parse(sharePath);

que no se como expresarlo en delphi


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 15 marzo 2016 - 02:44


delphi
  1. var Uri: String;
  2.  
  3. ...
  4.  
  5. Uri := TJnet_Uri.JavaClass.parse(StringToJString(con42));


  • 0

#5 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 15 marzo 2016 - 03:02


delphi
  1. Intent := TJIntent.Create;
  2. Uri := TJnet_Uri.JavaClass.parse(StringToJString(con42));
  3. Intent.setData(StrToJURI(con42));
  4. Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  5. Intent.setType(StringToJString('audio/*'));
  6. Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,Uri);
  7. MainActivity.startActivity(Intent);

me da:


php
  1. [DCC Error] Unit1.pas(119): E2010 Incompatible types: 'string' and 'Jnet_Uri'
  2. [DCC Error] Unit1.pas(123): E2250 There is no overloaded version of 'putExtra' that can be called with these arguments


  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 15 marzo 2016 - 03:07

Es simple mi estimado sólo cambia el tipo en la variable:


delphi
  1. var Uri: TJnet_Uri;


  • 0

#7 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 15 marzo 2016 - 03:31


delphi
  1. var
  2. Intent: JIntent;
  3. con42: String;
  4. Uri: Jnet_Uri;


delphi
  1. Intent := TJIntent.Create;
  2. con42 := TPath.GetDocumentsPath + PathDelim + 'Neg.mp3';
  3. Uri := TJnet_Uri.JavaClass.parse(StringToJString(con42));
  4. Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  5. Intent.setType(StringToJString('audio/*'));
  6. //Intent.setData(TJnet_Uri.JavaClass.parse(StringToJString(con42)));
  7. //Intent.putExtras(TJIntent.JavaClass.EXTRA_STREAM,Uri);
  8. //Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,Uri);
  9. Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, StringToJString(con42));
  10. MainActivity.startActivity(Intent);

Volvió a dar el Error: Fallo a compartir, intentelo nuevamente..


  • 0

#8 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 16 marzo 2016 - 02:49

De la siguiente manera logre que abra el WhatsApp para seleccionar el destino:


delphi
  1. Intent := TJIntent.Create;
  2. con42 := TPath.GetDocumentsPath + PathDelim + 'Neg.mp3';
  3. Uri := TJnet_Uri.JavaClass.parse(StringToJString(con42));
  4. Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  5. Intent.setDataAndType(Uri,StringToJString('audio/*'));
  6. MainActivity.startActivity(Intent);

Pero no lo envia.


  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 16 marzo 2016 - 03:02


delphi
  1. Intent := TJIntent.Create;
  2. con42 := TPath.GetDocumentsPath + PathDelim + 'NegrodeMierda.mp3';
  3. Uri := TJnet_Uri.JavaClass.parse(StringToJString(con42));
  4. Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  5. Intent.setDataAndType(Uri,StringToJString('audio/*'));
  6. Intent.putExtra (TJIntent.JavaClass.EXTRA_AUDIO,StringToJString(con42)); //<<AQUI
  7. MainActivity.startActivity(Intent);
  8.  

Prueba agregando la linea resaltada, pero me asalta una duda, ¿qué es PathDelim?.
  • 0

#10 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 16 marzo 2016 - 03:18

Encontré el error, no hay ningún archivo en data/data/com.programa/files/archivo.mp3 lo raro es que al utilizarlo en el programa funciona el audio pero no esta en dicha carpeta.


  • 0

#11 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 16 marzo 2016 - 03:19


delphi
  1. Intent := TJIntent.Create;
  2. con42 := TPath.GetDocumentsPath + PathDelim + 'NegrodeMierda.mp3';
  3. Uri := TJnet_Uri.JavaClass.parse(StringToJString(con42));
  4. Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  5. Intent.setDataAndType(Uri,StringToJString('audio/*'));
  6. Intent.putExtra (TJIntent.JavaClass.EXTRA_AUDIO,StringToJString(con42)); //<<AQUI
  7. MainActivity.startActivity(Intent);
  8.  

Prueba agregando la linea resaltada, pero me asalta una duda, ¿qué es PathDelim?.

 

 

[DCC Error] Unit1.pas(124): E2003 Undeclared identifier: 'EXTRA_AUDIO'

[DCC Error] Unit1.pas(124): E2250 There is no overloaded version of 'putExtra' that can be called with these arguments


  • 0

#12 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 16 marzo 2016 - 03:34

Por lo que googlee, el archivo hay que pasarlo a la sdcard. 

 

http://www.aprendean...px?g=posts&t=54


  • 0

#13 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 16 marzo 2016 - 03:45

Ah caray, me olvido que estamos tratando con Delphi, en este caso sería EXTRA_STREAM, una cosa que se me ha pasado has asignado el Remote Path a assets/internal en el project deployment?
  • 0

#14 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 16 marzo 2016 - 03:50

si los archivos estan como assets/internal


  • 0

#15 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 16 marzo 2016 - 04:05

Bueno, prueba moviendolo a la tarjeta externa, cuando tenga un tiempecito veré si puedo hacerte un ejemplo usando PackageInfo, más específicamente JPackageManager para enviar datos a aplicaciones específica como whatsapp, mientras ve buscando info sobre ella.


  • 0

#16 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 16 marzo 2016 - 04:22

Entonces cambio assets/internal por external y cambio el GetDocumentsPath y tendría que andar?
  • 0

#17 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 16 marzo 2016 - 04:26

Entonces cambio assets/internal por external y cambio el GetDocumentsPath y tendría que andar?

 

Pues debería!!


  • 0

#18 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 16 marzo 2016 - 07:56

No funciono, no me encuentra el archivo.

 

Segun wiki delphi http://docwiki.embar..._an_Android_App:

 

assets\internal (internal) or assets (external) folder 

 

lo defini al archivo como assets


delphi
  1. MediaPlayer1.FileName := TPath.GetSharedDocumentsPath + PathDelim + 'archivo.mp3';
  2. MediaPlayer1.Play;

Me dice que no encuentra el archivo.


delphi
  1. Intent := TJIntent.Create;
  2. //TPath.GetDocumentsPath interno
  3. con42 := 'file://' + TPath.GetSharedDocumentsPath + PathDelim + 'archivo.mp3';
  4. Uri := TJnet_Uri.JavaClass.parse(StringToJString(con42));
  5. Intent.setPackage(StringToJString('com.whatsapp'));
  6. Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  7. Intent.setData(Uri);
  8. Intent.setDataAndType(Uri,StringToJString('audio/mpeg3'));
  9. Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
  10. Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,StringToJString(con42)); //< MainActivity.startActivity(Intent);

No hace nada..


  • 0

#19 wolfran_hack

wolfran_hack

    Member

  • Miembros
  • PipPip
  • 17 mensajes

Escrito 17 marzo 2016 - 09:10

Según este link http://aziga.x10.mx/...id=23&Itemid=27tiene el archivo en una carpeta temporal, como hago para moverlo a dicha carpeta?


  • 0

#20 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.254 mensajes
  • LocationRepública Dominicana

Escrito 17 marzo 2016 - 09:24

Las funciones ShareFile y findmimetype, es todo lo que necesitas, las has probado?.


  • 0