Bonjour
Je viens de m'apercevoir qu'il y a un forum français ce sera surement plus facile qu'en anglais ou j'avais commencé a poster
Je rencontre un problème.
Lorsque je lance l'application installée sur le GSM j'ai le droit a un message d'erreur
Je ferme l'appli et je la relance et tout fonctionne normalement
Si je la referme et que je la relance : re-message d'erreur
Si je lance l'appli depuis le Bridge aucun souci tout fonctionne normalement
J'ai l'impression que l'accelero et démarré avant la création des labels
Les labels sont crées avec le designer et ne sont donc pas initialise a la main
Activity.LoadLayout("manege") et la premiere ligne de Activity_Create
J'ai essaye de rafraichir les labels dans un timer mais j'ai le même probleme
J'ai aussi essayé de creer les labels a la main et j'ai toujours le même probleme
Etant débutant en B4A je doit surement faire une erreur grossiere mais je ne vois pas
Merci de m'éclairer
Je viens de m'apercevoir qu'il y a un forum français ce sera surement plus facile qu'en anglais ou j'avais commencé a poster
Je rencontre un problème.
Lorsque je lance l'application installée sur le GSM j'ai le droit a un message d'erreur
Error Occurred
error in sub main_accelerometer_accelerometerchanged .........
Object should first be initialized (labels)
Je ferme l'appli et je la relance et tout fonctionne normalement
Si je la referme et que je la relance : re-message d'erreur
Si je lance l'appli depuis le Bridge aucun souci tout fonctionne normalement
J'ai l'impression que l'accelero et démarré avant la création des labels
Les labels sont crées avec le designer et ne sont donc pas initialise a la main
Activity.LoadLayout("manege") et la premiere ligne de Activity_Create
B4X:
Sub Process_Globals
Dim Accelerometer As PhoneAccelerometer
End Sub
Sub Globals
Dim Titre1 As ImageView
Dim Titre2 As ImageView
Dim LabelX As Label
Dim LabelY As Label
Dim LabelZ As Label
Dim LabelTot As Label
Dim LabelXmax As Label
Dim LabelXmin As Label
Dim LabelYmax As Label
Dim LabelYmin As Label
Dim LabelZmax As Label
Dim LabelZmin As Label
Dim LabelGmax As Label
Dim LabelGmin As Label
Dim Xmax As Float, Xmin As Float, Ymax As Float, Ymin As Float, Zmax As Float, Zmin As Float, Amax As Float, Amin As Float
Dim Calibration As Boolean
Dim NbCount As Int
Dim CurrentCount As Int
Dim MaxScale As Float
Dim Raz As Button
Dim BtnQuit As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
If firstTime Then
Activity.LoadLayout("manege")
MaxScale=1
NbCount=50
CurrentCount=0
RazValue
'calibration si le fichier calib.txt n'existe pas
If File.Exists(File.DirDefaultExternal,"calib.txt")=False Then
'si on ne peut pas ecrire sur la sd
'pas de calibration
If File.ExternalWritable = False Then
Msgbox("Ecriture impossible sur la SD card.", "Pas de calibration possible")
Calibration=False
Return
Else
Msgbox("Poser votre GSM à plat et presser OK","Calibration")
Calibration=True
End If
Else
MaxScale=File.ReadString(File.DirDefaultExternal,"calib.txt")
End If
End If
End Sub
Sub Activity_Resume
Accelerometer.StartListening("Accelerometer")
End Sub
Sub Activity_Pause (UserClosed As Boolean)
Accelerometer.StopListening
End Sub
Sub Accelerometer_AccelerometerChanged (X As Float, Y As Float, Z As Float)
Dim Ax As Float
Dim Ay As Float
Dim Az As Float
Ax=(X/9.81)/MaxScale
Ay=(Y/9.81)/MaxScale
Az=(Z/9.81)/MaxScale
'Calibration de l'accelero
If Calibration=True Then
Calibrate(AX,AY,AZ)
Return
End If
Atot=Sqrt(Ax*Ax+Ay*Ay+Az*Az)
SetMiniMax(Ax,Ay,Az,Atot)
LabelX.Text=" X: " & FormatVal(Ax,3,True)
LabelY.Text=" Y: " & FormatVal(AY,3,True)
LabelZ.Text=" Z: " & FormatVal(Az,3,True)
LabelTot.Text= FormatVal(Atot,1,False) & " G"
LabelXmax.Text="Xmax: " & FormatVal(Xmax,2,True)
LabelYmax.Text="Ymax: " & FormatVal(Ymax,2,True)
LabelZmax.Text="Zmax: " & FormatVal(Zmax,2,True)
LabelXmin.Text="Xmin: " & FormatVal(Xmin,2,True)
LabelYmin.Text="Ymin: " & FormatVal(Ymin,2,True)
LabelZmin.Text="Zmin: " & FormatVal(Zmin,2,True)
LabelGmin.Text=FormatVal(Amin,1,False) & " Gmin"
LabelGmax.Text=FormatVal(Amax,1,False) & " Gmax"
End Sub
Sub FormatVal(V As Double,Nb As Int,Sgn As Boolean) As String
Dim T As String
Dim S As String
S=""
If Sgn=True Then
If V>=0 Then
S="+ "
Else
S="- "
End If
End If
V= Abs(V)
T=S & NumberFormat2(V,1,Nb,Nb,False)
Return T
End Sub
Sub SetMiniMax(X As Float,Y As Float,Z As Float, Atot As Float)
If X>Xmax Then Xmax=X
If Y>Ymax Then Ymax=Y
If Z>Zmax Then Zmax=Z
If X<Xmin Then Xmin=X
If Y<Ymin Then Ymin=Y
If Z<Zmin Then Zmin=Z
If Atot>Amax Then Amax=Atot
If Atot<Amin Then Amin=Atot
End Sub
Sub RazValue
Xmax=-10
Ymax=-10
Zmax=-10
Amax=-10
Xmin=10
Ymin=10
Zmin=10
Amin=10
End Sub
Sub Raz_Click
RazValue
End Sub
Sub BtnQuit_Click
Dim Rep As Int
Rep = Msgbox2("Vraiment quitter?", "A T T E N T I O N", "Oui", "", "Non", Null)
If Rep = DialogResponse.POSITIVE Then
Accelerometer.StopListening
Activity.Finish
End If
End Sub
Sub Calibrate(XX As Float,YY As Float,ZZ As Float)
If CurrentCount<NbCount Then
If XX>MaxScale Then MaxScale=XX
If YY>MaxScale Then MaxScale=YY
If ZZ>MaxScale Then MaxScale=ZZ
CurrentCount=CurrentCount+1
Else
File.WriteString(File.DirDefaultExternal, "calib.txt",MaxScale)
Calibration=False
End If
End Sub
J'ai essaye de rafraichir les labels dans un timer mais j'ai le même probleme
J'ai aussi essayé de creer les labels a la main et j'ai toujours le même probleme
Etant débutant en B4A je doit surement faire une erreur grossiere mais je ne vois pas
Merci de m'éclairer
Last edited: