Hola Alexasthar
Como decia Jack el destripador: "Vayamos por partes"
Te ira mejor el inicializar
pe.Initialize("pe") en el
Sub Activity_Resume , por que asi empezara a funcionar cuando este creado el formulario.
El emplear el cambio del texto en el
TextChanged , te obliga a no equivocarte nunca en poner los mismos titulos de conectados y desconectados, si en uno solo cambias que la inicial es mayuscula, no se cumplira la condicion, y hasta que lo veas te volveras loca. Asi que te aconsejo que emplees una variable global, y en este caso un Boolean , y te aconsejo que emplees nombres que te digan algo y sepas que hace esa variable: EstadoConexion, EstadoConexionOFF, ConexionParada, etc, etc . Si te digo esto es por que creo que hace poco te has metido en este "mundillo" y mejor que lo hagas bien desde el principio.
Si pones el evento en un formulario, cuando se te apague el dispositivo, no detectaras nada, asi que deberias hacerlo en un servicio, puedes ver como se hace aqui y veras que es muy facil:
https://www.b4x.com/android/forum/threads/b4a-tutorial-módulos-de-servicio.42689/
El resto de problemas que estas teniendo son lógicos, no has visto el comportamiento del evento y asi cualquiera se puede volver loco, create un nuevo proyecto sin nada, y añade esto:
Sub Activity_Resume
Dim PhoneId As PhoneId
Dim EstadoTelefono As PhoneEvents
EstadoTelefono.InitializeWithPhoneState("PE",PhoneId)
End Sub
Sub PE_BatteryChanged (Level As Int, Scale As Int, Plugged As Boolean, Intent As Intent)
If Plugged Then
LogColor("Conectado " & DateTime.time(DateTime.now),Colors.Blue)
Else
LogColor("Desconectado " & DateTime.time(DateTime.now),Colors.Red)
End If
End Sub
Lo de los colores del LOG es para que veas de un vistazo rápido lo que te interesa y la hora lo veras mas abajo.
Ejecuta el programa con un cable de alimentación que puede ser el mismo USB que emplees para cargar el programa en el dispositivo.
Ahi vas a ver que nada mas hacer el resume entra en el evento, y seguirá entrando cada x segundos (dependerá del dispositivo) .
Desconecta un rato superior a lo que has visto en el log, y veras que tambien entra cuando esta desconectado cada x segundos.
Con esto veras cuales son todos esos problemas que estas teniendo.
Puedes pensar que tu contador con este sistema no vale, pero si, es bastante facil.
Tu dices que estas haciendo un proyecto electronico, te lo explico en esos terminos para que lo entiendas mejor. Habitualmente el dispositivo esta conectado, por lo tanto tu señal seria un flanco de subida activo, me da igual que el evento me diga cien veces que estoy activo, no hago nada. Cuando tu mandas el impulso cortas la alimentacion, estas en tu flanco de bajada, aqui pones activa una variable boolean, y aunque este otras cien veces leyendo que estoy desconectado no hago nada, cuando le quites el pulso y detectes
conetado + esa variable activa ya puedes incrementar tu contador (otra variable global)
y resetear esa variable hasta que se vuelva a cumplir otro ciclo completo, en definitiva, tu estas creando una onda rectangular que su flanco de bajada es tu impulso de contador.
Con la variable global del contador puedes refrescar el label donde pongas el número contado.
Espero haberme expresado bien.
Te aconsejo que crees ese codigo con el ejemplo que te he pasado y simules tu dispositivo electronico poniendo y quitando la alimentacion del dispositivo.
Cuando todo te vaya perfecto, lo pasas a un servicio.
Saludos