Italian Nuova Libreria IMLibrary v 1.01

ivanomonti

Expert
Licensed User
Longtime User
Ciao a tutti ecco la libreria che semplifica il tutto per Button, Intent, Sensor, Battery. Un nuovo modo per non scrivere o copiare codice da un progetto all'altro ;-)

ClassMyButton

questa classe tiene una sola funzione che quella di dare colore ad un pannello e inserire un icona al suo centro mantenendo la trasparenza di essa.

B4X:
imb.newButton(Panel1,bmp,Rnd(200,255),Rnd(0,255),Rnd(0,255),Rnd(0,255))

ClassMyIntent

Qui ho voluto inserire alcuni intent oltre che la funzione inclusa su MIMMSos quella del sms localizzato, tali funzioni sono state semplificate e non solo portate alla sola righa di codice.
vediamo insieme
  • Chiama numero (quello che vuoi)
  • Chiama soccorso (118,112,113,115,911)
  • Apri navigatore e portami qui ( la via che desideri)
  • SMS help ( attiva gps, localizzami e invia la mia posizione al numero, se entro 2 minuti non mi localizzi invia richiesta di aiuto con il mio numero)
Questi invece sono semplici intent
  • apri telefono
  • apri agenda
  • apri calendario
  • apri gmail
  • apri google+
  • apri camera
  • apri galley
  • apri facebook
  • apri web e vai all'url
Non sono cose stratosferiche ma vi assicuro che con una sola libreria si hanno tutte le funzioni attive senza doversi ricordare di altre librerie. Pare ovvio che il progetto si estenderà e piano piano aggiornerò la tessa.

Esempio di codice

B4X:
Sub Panel2_Click
    imi.SosIntent("118")
End Sub

Sub Panel3_Click
   imi.OpenFacebook
End Sub

Sub Panel4_Click
   imi.OpenGmail
End Sub

Sub Panel5_Click
   imi.SmsIntent("+393929824007")
End Sub

Intanto vi ringrazio per l'attenzione :) venite anche nel gruppo Facebook https://www.facebook.com/groups/598542593522315/
 

Attachments

  • 1375122_592362580827852_1986930701_n.jpg
    1375122_592362580827852_1986930701_n.jpg
    78.2 KB · Views: 536
Last edited:

ivanomonti

Expert
Licensed User
Longtime User
Ho aggiunto

  • OpenTwitter
  • OpenLinkedin

Devo aggiungere anche

  • OpenWhatapp
  • OpenVider
  • OpenMessaggi

In questo modo se devi fare avvi veloci senza dover chiudere la tua app, se avete delle richieste sputate che piano piano le aggiungo nella stessa, appena finisco aggiorno la Libreria, fatemi da beta Test, ve ne sarò grato.
 

luke2012

Well-Known Member
Licensed User
Longtime User
Ottimo lavoro Ivano! Di sicuro verrà utile a molti di noi!

P.S.

Mi hai fatto venire voglia di fare anche una mia libreria ;)
 

ivanomonti

Expert
Licensed User
Longtime User
Eccoci di nuovo, domani dopo un test di almeno altre 5 ore posto la libreria aggiornata capace di restituire i dati di ogni singolo sensore del vostro dispositivo... allego screenshot

B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    Dim Timer1 As Timer
End Sub

Sub Globals
    Dim sen As ClassMySensor
    Dim Label1,Label2,Label3,Label4,Label5,Label6,Label7,Label8 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    sen.Initialize(Activity,FirstTime)
    Timer1.Initialize("Timer1",10)
    Timer1.Enabled = True
End Sub

Sub Activity_Resume
    Timer1.Enabled = True
    sen.act_Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    Timer1.Enabled = False
    sen.act_Pause(UserClosed)
End Sub

Sub Timer1_Tick
    If sen.result.IsInitialized = True Then
        Dim i As Int
        i = sen.result.Size
        If i > 0 Then
            Label1.text = "ACCELEROMETER" & " " & sen.result.Get(0)
            Label2.text = "GYROSCOPE" & " " & sen.result.Get(1)
            Label3.text = "LIGHT" & " " & sen.result.Get(2)
            Label4.text = "MAGNETIC" & " " & sen.result.Get(3)
            Label5.text = "ORIENTATION" & " " & sen.result.Get(4)
            Label6.text = "PRESSURE" & " " & sen.result.Get(5)
            Label7.text = "PROXIMITY" & " " & sen.result.Get(6)
            Label8.text = "TEMPERATURE" & " " & sen.result.Get(7)
        End If
    End If
End Sub
 

Attachments

  • Screenshot_2013-10-02-19-10-13.png
    Screenshot_2013-10-02-19-10-13.png
    71 KB · Views: 509

ivanomonti

Expert
Licensed User
Longtime User
Ecco la libreria, al momento si è comportata bene su un note 2, bisognerebbe usarla in altri contesti.

Class ClassMyIntent

Sono stati aggiunti due nuovi intent
  • OpenTwitter
  • OpenLinkeId
Class ClassMySensor

La classe ClassMySensor richiede poche righe di codice per dare inizio a ricevere i dati dai vari sensori 7 per l'appunto, dove non sono presenti i sensori verrà consegnato null. Per semplificare i vari processi sono stati messi in ordine fisso che segue:

  1. ACCELEROMETER
  2. GYROSCOPE
  3. LIGHT
  4. MAGNETIC
  5. ORIENTATION
  6. PRESSURE
  7. PROXIMITY
  8. TEMPERATURE


B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    Dim Timer1 As Timer
End Sub

Sub Globals
    Dim sen As ClassMySensor
    Dim Label1,Label2,Label3,Label4,Label5,Label6,Label7,Label8 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    sen.Initialize(Activity,FirstTime)
    Timer1.Initialize("Timer1",10)
    Timer1.Enabled = True
End Sub

Sub Activity_Resume
    Timer1.Enabled = True
    sen.act_Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    Timer1.Enabled = False
    sen.act_Pause(UserClosed)
End Sub

Sub Timer1_Tick
    If sen.result.IsInitialized = True Then
        Dim i As Int
        i = sen.result.Size
        If i > 0 Then
            Label1.text = "ACCELEROMETER" & " " & sen.result.Get(0)
            Label2.text = "GYROSCOPE" & " " & sen.result.Get(1)
            Label3.text = "LIGHT" & " " & sen.result.Get(2)
            Label4.text = "MAGNETIC" & " " & sen.result.Get(3)
            Label5.text = "ORIENTATION" & " " & sen.result.Get(4)
            Label6.text = "PRESSURE" & " " & sen.result.Get(5)
            Label7.text = "PROXIMITY" & " " & sen.result.Get(6)
            Label8.text = "TEMPERATURE" & " " & sen.result.Get(7)
        End If
    End If
End Sub
 
Last edited:

ivanomonti

Expert
Licensed User
Longtime User
La libreria cresce con il controllo batteria, lettura semplice dei dati batteria.
  • Percentuale
  • Scala
  • Stato se in carica o no
  • Intent
Esempio di codice

B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    Dim Timer1 As Timer
    Dim imi As ClassMyBattery
End Sub

Sub Globals
    Dim Button1 As Button
    Dim EditText1 As EditText
    Dim EditText2 As EditText
    Dim EditText3 As EditText
    Dim EditText4 As EditText
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    imi.Initialize
    Timer1.Initialize("Timer1",1000)
    Timer1.Enabled = True
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Timer1_Tick
    EditText1.Text = imi.BatteryLevel
    EditText2.Text = imi.BatteryScale
    EditText3.Text = imi.BatteryCharging
    EditText4.Text = imi.BatteryIntent
End Sub

Ragazzi vi chiedo di fare dei test se possibile in modo da correggere i possibili bug.
 

Attachments

  • Listener.png
    Listener.png
    35.7 KB · Views: 488
Last edited:

ivanomonti

Expert
Licensed User
Longtime User
Ragazzi ho rimesso in ordine ClassMyButton aggiungendo 2 nuovi metodi, questo è il risultato finale.

B4X:
#Region  Project Attributes
    #ApplicationLabel: RoundedRectangles
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#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.
 
End Sub
 
Sub Globals
    Dim cvsMain As Canvas
    Dim Panel1 As Panel
    Dim Panel2 As Panel
    Dim Panel3 As Panel
    Dim Panel4 As Panel
    Dim Panel5 As Panel
    Dim Panel6 As Panel
    Dim Panel7 As Panel
    Dim Panel8 As Panel
    Dim Panel10 As Panel
    Dim Panel11 As Panel
    Dim Panel12 As Panel
    Dim Panel9 As Panel
    Dim Panel13 As Panel
    Dim Panel14 As Panel
    Dim Panel15 As Panel
    Dim Panel16 As Panel
    Dim imi As ClassMyButton
End Sub
 
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    imi.Initialize
    imi.NewButton3(Panel1,"Android","Android.png",255,150,0,0,True,2,False)
    imi.NewButton3(Panel2,"Iphone","Iphone.png",255,150,0,0,True,2,False)
    imi.NewButton3(Panel3,"BlackBerry","Blackberry.png",255,150,0,0,True,2,False)
    imi.NewButton3(Panel4,"Voice Search","VoiceSearch.png",255,150,0,0,True,2,False)
 
    imi.NewButton3(Panel5,"Android","Android.png",255,150,0,0,False,2,False)
    imi.NewButton3(Panel6,"Iphone","Iphone.png",255,150,0,0,False,2,False)
    imi.NewButton3(Panel7,"BlackBerry","Blackberry.png",255,150,0,0,False,2,False)
    imi.NewButton3(Panel8,"Voice Search","VoiceSearch.png",255,150,0,0,False,2,False)
 
    imi.NewButton3(Panel9,"Android","Android.png",255,150,0,0,True,2,False)
    imi.NewButton3(Panel10,"Iphone","Iphone.png",255,0,150,0,True,2,False)
    imi.NewButton3(Panel11,"BlackBerry","Blackberry.png",255,0,0,150,True,2,False)
    imi.NewButton3(Panel12,"Voice Search","VoiceSearch.png",255,150,150,0,True,2,False)
 
    imi.NewButton3(Panel13,"Android","Android.png",255,150,0,0,True,1,False)
    imi.NewButton3(Panel14,"Iphone","Iphone.png",255,150,0,0,True,1,False)
    imi.NewButton3(Panel15,"BlackBerry","Blackberry.png",255,150,0,0,True,1,False)
    imi.NewButton3(Panel16,"Voice Search","VoiceSearch.png",255,150,0,0,True,1,False)
 
End Sub
 
Sub Activity_Resume
End Sub
 
Sub Activity_Pause (UserClosed As Boolean)
End Sub
 

Attachments

  • 2013-10-04_122932.png
    2013-10-04_122932.png
    49.6 KB · Views: 497
  • 2013-10-04_121133.png
    2013-10-04_121133.png
    21.6 KB · Views: 484
  • 2013-10-04_143702.png
    2013-10-04_143702.png
    22.3 KB · Views: 461
Last edited:

ivanomonti

Expert
Licensed User
Longtime User
ULTIMO AGGIORNAMENTO CORRETTO BUG E AGGIUNTO
  • IntToDip ' restituisce valore intero in formato dip
  • Base64StringToImage ' retituisce una bitmap da una stringa base64
Inoltre e stata inserita la nuova classe ClassMyLayout
  • SettingLayoutPanel ' adatta il pannello e tutti i suoi objec parent al tipo di schermo
  • SettingLayout ' adatta tutti gli object paren al tipo di display
Corretto il bug inserimento immagine, ora e possibile dare valore vuoto nella stringa immagine, ottimo per creare testate con solo titolo, vedi screen.

B4X:
#Region  Project Attributes
    #ApplicationLabel: RoundedRectangles
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#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.

End Sub

Sub Globals
    Dim cvsMain As Canvas
    Dim Panel1 As Panel
    Dim Panel2 As Panel
    Dim Panel3 As Panel
    Dim Panel4 As Panel
    Dim Panel5 As Panel
    Dim Panel6 As Panel
    Dim imi As ClassMyButton
    Dim iml As ClassMyLayout
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    imi.Initialize
    iml.Initialize
    iml.SettingLayoutPanel(Activity,Panel5)
    imi.NewButton4(Panel1,"Android","Android.png",255,79,129,186,True,1,False)
    imi.NewButton4(Panel2,"Iphone","Iphone.png",255,79,129,186,True,1,False)
    imi.NewButton4(Panel3,"BlackBerry","Blackberry.png",255,79,129,186,True,1,False)
    imi.NewButton4(Panel4,"Voice Search","VoiceSearch.png",255,79,129,186,True,1,False)
    imi.NewButton4(Panel6,"IMLibrary 1.01","",255,79,129,186,True,2,False)
End Sub

Sub Activity_Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)
End Sub
 

Attachments

  • 2013-10-04_143702.png
    2013-10-04_143702.png
    22.3 KB · Views: 467
Last edited:

ivanomonti

Expert
Licensed User
Longtime User
Aggiornamento libreria IMLibrary 1.01

Correto il bug di assenza titolo bottone che dava crash e non era stato previsto l'icona al centro verticale, idem per assenza di immagine ne dava problemi di centratura del titolo. questi bug sono stati corretti e testati.

B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
End Sub

Sub Globals
    Dim imi As ClassMyButton
    Dim iml As ClassMyLayout
    Dim Panel1, Panel2 As Panel
    Dim Panel3 As Panel
    Dim Panel4 As Panel
    Dim Panel5 As Panel
    Dim Panel6 As Panel
    Dim Panel7 As Panel
    Dim Panel8 As Panel
    Dim Panel9 As Panel
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    imi.Initialize
    iml.Initialize
    iml.SettingLayoutPanel(Activity,Panel1)
    imi.NewButton4(Panel2,"","contact_close.png",255,255,0,0,False,1,False)
 
    imi.NewButton4(Panel4,"Keypad","p01.png",255,255,255,255,False,1,False)
    imi.NewButton4(Panel5,"Call Trasfer","p02.png",255,255,255,255,False,1,False)
    imi.NewButton4(Panel6,"Mute","p03.png",255,255,255,255,False,1,False)
    imi.NewButton4(Panel7,"Hold","p04.png",255,255,255,255,False,1,False)
    imi.NewButton4(Panel8,"Speaker","p05.png",255,255,255,255,False,1,False)
    imi.NewButton4(Panel9,"Call","p06.png",255,255,255,255,False,1,False)
 
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
 

Attachments

  • 74503_584795268251250_1144707579_n.jpg
    74503_584795268251250_1144707579_n.jpg
    32.9 KB · Views: 451
Last edited:

ivanomonti

Expert
Licensed User
Longtime User
IMLibrary 1.02 aggiunge anche XML

Nuova aggiunta per chi di xml ne ha scatole piene, ecco come prelevare file xml e salvarlo nel proprio dispositivo usando solo 2 righe di codice... la classe e dinamica, pertanto potete inserire i nomi dei nodi da filtrare.

B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
Dim imi As ClassMyXml
Dim xlist() As List
End Sub

Sub Globals
    Dim Button1 As Button
    Dim ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    If FirstTime Then
        Dim a,b,c,d As String
        a = "http://www.ivanomonti.eu/C2013_IVANOMONTI/B4ALItalia.xml" ' percorso file xml nella rete
        b = "/B4ALitalia" ' nome folder interna da creare
        c = "B4ALitalia.xml" ' nome del file xml da creare
        d = "Category,Denominazione,Indirizzo,CAP,Comune,lat,lon,google,Telefono,Email,Url,Note,Extra1,Extra2,Extra3" ' nomi dei nodi xml da filtrare
        imi.Initialize(a,b,c,d)
    End If
End Sub

Sub Activity_Resume
    LoadRecordXml
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Public Sub LoadRecordXml
    For i=0 To imi.ls(0).Size-1
        ListView1.AddSingleLine(imi.ls(0).Get(i))
    Next
End Sub

Sub Button1_Click
    LoadRecordXml
End Sub
 

Attachments

  • 1382245_586184471445663_1627206817_n.jpg
    1382245_586184471445663_1627206817_n.jpg
    36.2 KB · Views: 427

ivanomonti

Expert
Licensed User
Longtime User
No non ti sfugge nulla, stavo facendo i test xml, allego qui e se mi fate avere delle info grazie infinite...
 
Last edited:

giannimaione

Well-Known Member
Licensed User
Longtime User
di sicuro mi sfugge qualcosa.
con quale versione android SDK/API funziona?
 

holdemadvantage

Active Member
Licensed User
Longtime User
IMLibrary 1.02 aggiunge anche XML

Nuova aggiunta per chi di xml ne ha scatole piene, ecco come prelevare file xml e salvarlo nel proprio dispositivo usando solo 2 righe di codice... la classe e dinamica, pertanto potete inserire i nomi dei nodi da filtrare.

l
End Sub[/CODE]

Ciao Ivano, l'esempio xml mi restituisce questo errore

B4X:
java.lang.Exception: Sub CREATE was not found.

Questo solo col rapid debug, con il legacy debug funziona
 

ivanomonti

Expert
Licensed User
Longtime User
Ciao Ivano, l'esempio xml mi restituisce questo errore

B4X:
java.lang.Exception: Sub CREATE was not found.

Questo solo col rapid debug, con il legacy debug funziona

Si ovviamente ricordatevi di avere gli accessi di scrittura perchè la classe crea una folder e un documento xml nel dispositivo, ho mettere i permessi di scrittura nel manifest... ho dato per scontato questa info. il debug veloce non l'ho ancora usato perchè ha me da problemi con emulatore, aspetto la versione final.
 

giannimaione

Well-Known Member
Licensed User
Longtime User
Si ovviamente ricordatevi di avere gli accessi di scrittura perchè la classe crea una folder e un documento xml nel dispositivo, ho mettere i permessi di scrittura nel manifest... ho dato per scontato questa info. il debug veloce non l'ho ancora usato perchè ha me da problemi con emulatore, aspetto la versione final.
... quindi dovrei risolvere anche io.
ti tengo informato
 
Top