11 votos

¿Cómo obtener el estado de la batería en la terminal?

Tengo un teléfono con dropbear instalado. Normalmente accedo a mi teléfono a través de WiFi y ejecuto comandos en putty.

Quiero obtener el estado y el porcentaje de la batería en la terminal. ¿Existe algún comando o programa para obtener información sobre la batería?

0 votos

Ver si hay algún servicio de sistema que contenga la cadena "batería". Por ejemplo, dumpsys battery (necesita root) hace el trabajo en Android 4.2.1. O, ver si /sys/class/power_supply/battery/BatteryAverageCurrent/uevent te da algo. Ver mi respuesta aquí para más detalles: ¿Cómo puedo perfilar (registrar la corriente de carga y descarga durante un periodo de tiempo) mi batería?

0 votos

Sí.. "dumpsys battery" funcionó para mí. Devolvió la siguiente información :: `Estado actual del servicio de batería: Conectado a la corriente alterna: true Conectado al USB: false estado: 2 estado de salud: 2 presente: false nivel: 10 escala: 100 voltaje:3 temperatura: 420 tecnología: Li-ion`

0 votos

Dumpsys batería funciona hasta hoy 2021+ más abajo responder android 10, 11

11voto

Firelord Puntos 161

Consulte el servicio del sistema batería (posiblemente requiere acceso de root)

dumpsys battery

La salida sería como

Estado actual del servicio de batería:
  Con corriente alterna: false
  Con USB: true
  Con carga inalámbrica: false
  **estado: 2**
  salud: 2
  presente: true
  **nivel: 70**
  escala: 100
  voltaje:3950
  temperatura: 260
  tecnología: Li-ion

nivel: 70 es el porcentaje de la batería aquí.


No estoy seguro acerca de Android 2.3 pero esto es relevante al menos para Android 4.2.1 y superior:

(Prefijo <em>adb shell</em> junto a cada comando para ejecutar el comando usando adb.)

  • Esto te daría una lista de todas las difusiones históricas así como las pegajosas:

    dumpsys activity broadcasts

    En la salida busca:

    Acción pegajosa android.intent.action.BATTERY\_CHANGED:

    Las líneas al lado de eso, hasta que encuentres una nueva difusión pegajosa, nos son útiles. En mis dispositivos, se enumeran como:

    Intento: act=android.intent.action.BATTERY\_CHANGED flg=0x60000010
    Bundle\[{icon-small=17302819, presente=true, escala=100, **nivel=100**, tecnología=Li-ion, **estado=4**, voltaje=4140, cargador\_inválido=0, enchufado=0, salud=2, temperatura=200}\]

    Suponiendo que tu Android tiene la utilidad grep, puedes acortar la búsqueda usando:

    dumpsys activity broadcasts | grep -A2 "Acción pegajosa android.intent.action.BATTERY\_CHANGED:"

    (Fuente: <a href="http://developer.android.com/training/monitoring-device-state/battery-monitoring.html" rel="noreferrer">Monitoreo del Nivel de Batería y Estado de Carga</a>)

  • Alternativa: es posible consultar la información de la batería desde /sys o debería decir el kernel de Linux.

    /sys/class/power_supply/battery/ tiene algunos archivos con información útil. El archivo llamado capacity es equivalente al porcentaje actual de la batería. Puedes obtener información acumulada del archivo uevent también.

    Para más información relacionada, lee mi respuesta aquí.

1 votos

+1 a eso: Puedo confirmar plenamente el primer enfoque (a través de dumpsys), que es exactamente lo que uso con éxito con Adebar, probado en varios dispositivos. Entonces, tu comando probablemente sea algo como dumpsys battery | grep "level:" | awk '{ print $2 }'. Sin embargo, nunca he probado eso con versiones de Android <4.

0 votos

Tampoco probé en <4, pero lo publiqué porque el OP lo confirmó. :) Esperando a que alguien verifique el segundo enfoque aquí.

1 votos

Parece que puedo confirmar esto para cat /sys/class/power_supply/battery/capacity al menos en Android 4.1. Dado que sysfs es una característica de Linux disponible desde hace bastante tiempo, esto debería funcionar en otras versiones anteriores de Android también. Otros "archivos" en el contexto de la pregunta: health (por ejemplo, "Bueno"), status ("Completo"), temp (¿centígrados centi-grados Celsius? aquí: "300"). Simplemente descubrir la fuente de energía actual podría resultar un poco complicado :)

1voto

gersh Puntos 564

Script to show battery status on terminal (root required)

Usando solo el método alternativo mencionado por @Firelord.

#!/system/bin/sh # es posible que necesite cambiar a su bin sh 

print_battery_status()
{
    ctype=`cat /sys/class/power_supply/battery/charge_type`
    capacity=`cat /sys/class/power_supply/battery/capacity`
    charging=`cat /sys/class/power_supply/battery/charging_enabled`
    health=`cat /sys/class/power_supply/battery/health`
    status=`cat /sys/class/power_supply/battery/status`
    printf "# %s # %s # %s # %s # %s #\r" "Capacidad: ${capacity}" "Cargando: ${charging}" "Tipo: ${ctype}" "Salud: ${health}" "Estado: ${status}"
}

while [ true ]
do
    print_battery_status
    sleep 1 # 1 segundo de espera
done

Es posible que necesite adaptar un poco el script. Algunos nombres de archivo utilizados arriba son específicos del dispositivo. Por ejemplo, charging_enable debería ser reemplazado por charge_now y en algunos dispositivos, etc.

Se ejecuta y muestra el estado como se muestra abajo. Para detenerlo, use CRTL+C.

./batery_status.sh
# Capacidad: 63 # Cargando: 1 # Tipo: Rápido # Salud: Buena # Estado: Cargando #

Lo uso ya que hago ssh remoto en mi dispositivo. Funciona incluso con zygote detenido.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X