Oddio, non sei mai chiarissimo nella spiegazione ? , ma forse ho capito cosa intendi.spero sia stao chiaro nel mio intento di realizzarla
Ho sprecato una risposta:Oddio, non sei mai chiarissimo nella spiegazione ? , ma forse ho capito cosa intendi.
Vuoi 10 tasti cui associare un file audio ciascuno ed altri due il cui scopo è: uno per scegliere il file da associare a ciascuno dei 10 e un altro per lanciare l'esecuzione (play) del file.
Se fosse così, io farei in modo diverso. 10 panel, anziché tasti. Long Click apre una dialog per scegliere il file da associare a quello stesso panel, Click semplice per mandare in esecuzione il file. Sui panel, una label col nome del brano.
Per selezionare il file audio, usa ContentChooser, poi associa l'url del file al panel (scrivilo nel tag) e salva le associazioni in una Map o KeyValueStore2
[Se, invece, ti riferisci a B4J - dovresti specificarlo, nelle domande nel forum italiano - usa FileChooser)
P.S. Per "suonare i file", MediaPlayer.
No, semplicemente cercavo un aiutino sul codice essendo 2 pulsanti ed una labelHo sprecato una risposta:
https://www.b4x.com/android/forum/t...oard-for-loaded-sound-from-smartphone.146441/
?
Non mi pare che la risposta che hai ottenuto "là" sia stata nettamente migliore della mia, anzi ?No, semplicemente cercavo un aiutino sul codice essendo 2 pulsanti ed una labelView attachment 139803
pensavo di più, sei veramente un amico !!Non mi pare che la risposta che hai ottenuto "là" sia stata nettamente migliore della mia, anzi ?
Se vuoi ti butto giù un sorgentino (B4A, vero?). Ovviamente, dato che mi ritengo offeso ?, non gratuitamente, ma cmq per un amico italiano, cifra modica: 500€ anziché 400€ ?
La scorsa notte (!) ho provato, proprio usando il ContentChooser che ti ho suggerito io e adesso Erel (il thread [B4X] TextEditor).pensavo di più, sei veramente un amico !!
Ok, grazie al suggerimento di @DonManfred, problema risolto.La scorsa notte (!) ho provato, proprio usando il ContentChooser che ti ho suggerito io e adesso Erel (il thread [B4X] TextEditor).
Puoi vedere che mi dà un problema.
Ti farò sapere.
"Mancano ancora un paio di cosucce" un par de <omissis> ?Ok, grazie al suggerimento di @DonManfred, problema risolto.
Mancano ancora un paio di cosucce (salvataggio associazione file-tasto), che farò tra un po', non so di preciso quando ma entro qualche ora, di sicuro.
#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#BridgeLogger: True
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim mp1 As MediaPlayer
Private CC As ContentChooser
End Sub
Sub Globals
Private btnchoose As Button
Private btnplayfile As Button
Private lblinfoname As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
CC.Initialize("CC")
mp1.Initialize
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Private Sub btnchoose_Click
CC.Show("*/*", "Scegli File da inviare")
End Sub
Private Sub btnplayfile_Click
End Sub
Sub CC_Result (Success As Boolean, Dir As String, FileName As String)
If Success Then
Dim normalizedFile As String = GetPathFromContentResult(FileName)
If File.Exists("", normalizedFile) == False Then
ToastMessageShow("File non accessibile.", True)
Return
End If
CallSubDelayed3(FileTranser, "SendFile", "", normalizedFile)
Else
If LastException.IsInitialized Then ToastMessageShow(LastException.Message, True)
End If
End Sub
'this code tries to retrieve the real file from the uri
Sub GetPathFromContentResult(UriString As String) As String
If UriString.StartsWith("/") Then Return UriString 'If the user used a file manager to choose the image
Dim Proj() As String
Proj = Array As String("_data")
Dim Cursor As Cursor
Dim r As Reflector
Dim Uri As Object
Uri = r.RunStaticMethod("android.net.Uri", "parse", _
Array As Object(UriString), _
Array As String("java.lang.String"))
r.Target = r.GetContext
r.Target = r.RunMethod("getContentResolver")
Cursor = r.RunMethod4("query", _
Array As Object(Uri, Proj, Null, Null, Null), _
Array As String("android.net.Uri", _
"[Ljava.lang.String;", "java.lang.String", _
"[Ljava.lang.String;", "java.lang.String"))
Cursor.Position = 0
Dim res As String
res = Cursor.GetString("_data")
Cursor.Close
Return res
End Sub
come faccio a far suonare il file audio appena selezionato?
ma scusa se ti invito questa estate a partanna a gustare una bella pizza su una piazza con veduta sulle isole egadi al tramonto non e meglio di 1000 euro?"Mancano ancora un paio di cosucce" un par de <omissis> ?
La cosa è più complicata del previsto.
Facendo selezionare il file audio usando la classe di Erel e mandandolo in esecuzione col MediaPlayer, funziona.
Una volta salvata la directory ed il nome del file audio, recuperandole e tentando di eseguire di nuovo il Play del MediaPlayer... crash, manca un permesso.
Ho cercato e trovato solo una domanda molto simile a cui nessuno ha risposto.
Sono costretto ad aprire io stesso un thread per porre la questione.
[Nota: il tutto mi sta impegnando ore, per cui il prezzo sale a 1.000€ - per adesso ?]
Non funziona per qualunque tipo di "indirizzo" ("luogo" da cui venga selezionato il file audio) e non è garantito (il percorso) sulle versioni Android più recenti.non capisco una cosa che per scegliere un file e metterlo in play bisogna usare centinaia di righe di codice fatte da pagine...bho!!!
io avevi pensato a qualcosa del genere ma forse non può mai funzionare così?
Se dietro il tuo nick name ed avatar in realtà si nasconde Juliana Moreira... sì ?ma scusa se ti invito questa estate a partanna a gustare una bella pizza su una piazza con veduta sulle isole egadi al tramonto non e meglio di 1000 euro?
https://www.b4x.com/android/forum/t...s-returned-from-contentchooser.39313/#contentnon capisco una cosa che per scegliere un file e metterlo in play bisogna usare centinaia di righe di codice fatte da pagine...bho!!!
io avevi pensato a qualcosa del genere ma forse non può mai funzionare così?
Perché Google ci vuole bene e ogni anno complica le cose in nome della sicurezza dei nostri dati.non capisco una cosa che per scegliere un file e metterlo in play bisogna usare centinaia di righe di codice fatte da pagine...bho!!!
#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#BridgeLogger: True
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim mp1 As MediaPlayer
Private CC As ContentChooser
End Sub
Sub Globals
Private btnchoose As Button
Private btnplayfile As Button
Private lblinfoname As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
CC.Initialize("CC")
mp1.Initialize
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Private Sub btnchoose_Click
CC.Show("*/*", "Scegli File da inviare")
End Sub
Private Sub btnplayfile_Click
End Sub
Sub CC_Result (Success As Boolean, Dir As String, FileName As String)
If Success Then
Log("filename: "&FileName)
Dim normalizedFile As String = GetPathFromContentResult(FileName)
Log("normalize : "&normalizedFile)
' CallSubDelayed3(FileTranser, "SendFile",Dir,normalizedFile)
mp1.Load(Dir,FileName)
mp1.Play
Else
If LastException.IsInitialized Then ToastMessageShow(LastException.Message, True)
End If
End Sub
Sub GetPathFromContentResult(UriString As String) As String
If UriString.StartsWith("/") Then Return UriString 'If the user used a file manager to choose the image
Dim Proj() As String
Proj = Array As String("_data")
Dim Cursor As Cursor
Dim r As Reflector
Dim Uri As Object
Uri = r.RunStaticMethod("android.net.Uri", "parse", _
Array As Object(UriString), _
Array As String("java.lang.String"))
r.Target = r.GetContext
r.Target = r.RunMethod("getContentResolver")
Cursor = r.RunMethod4("query", _
Array As Object(Uri, Proj, Null, Null, Null), _
Array As String("android.net.Uri", _
"[Ljava.lang.String;", "java.lang.String", _
"[Ljava.lang.String;", "java.lang.String"))
Cursor.Position = 0
Dim res As String
res = Cursor.GetString("_data")
Cursor.Close
Return res
End Sub
Sicuramente meglio.mi manca da far vislualizzare alla label il nome del file ma secondo me sarebbe meglio personalizzabile con una edittext che ne pensate?
Si hai ragione, solo che sto pensando ad un particolare .... essendo una sound board che dovrà far ascoltare 10 suoni diversi, come dovreì gestirli ? dovrei creare 10 variabili content choiser per 10 file audio o come? ancora non ho avuto tempo di riflettere perchè sto facendo un'altra cosa ma mi e venuto in mente questo dubbio.Sicuramente meglio.
Il nome del file potrebbe anche essere insensato, meglio per scrivere quel che si vuole per sapere cosa è.
Io ho sviluppato tutto il progetto, bellissimo, ovviamente ?, compresa fa faccenda del "titolo" da mettere nelle Label, salvataggio e recupero del tutto.Si hai ragione, solo che sto pensando ad un particolare .... essendo una sound board che dovrà far ascoltare 10 suoni diversi, come dovreì gestirli ? dovrei creare 10 variabili content choiser per 10 file audio o come? ancora non ho avuto tempo di riflettere perchè sto facendo un'altra cosa ma mi e venuto in mente questo dubbio.
Avevo anche pensato di creare un percorso da far caricare i file audio li direttamente e chiamarli da quella cartella ma è troppo laboriosa per l'utente, mentre quella di cercali su tutto il telefono il file da suonare e meglio.Io ho sviluppato tutto il progetto, bellissimo, ovviamente ?, compresa fa faccenda del "titolo" da mettere nelle Label, salvataggio e recupero del tutto.
Quello che manca è... la risposta di Erel, importante perché non ci si può più affidare a GetPathFromContentResult, che su alcuni dispositivi manderebbe l'app in crash (e non credo pochi).
Certo che se l'utente dovesse cercare i file audio solo in alcune cartelle del proprio smartphone, potrebbe funzionare, ma non è detto che lo faccia.
, compresa fa faccenda del "titolo" da mettere nelle Label,
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?