1 votos

¿Cómo habilitar/deshabilitar la pantalla de bloqueo desde un script de shell cuando está presente un SSID de wifi especial?

Mis habilidades de Java son bajas, pero estoy dominando el shell.

Uso LineageOS 14.1 (derivado de cyanogenmod).

Me gustaría crear un script de shell en un dispositivo con root para habilitar/deshabilitar la pantalla de bloqueo (PIN).

Me gustaría desbloquear mi pantalla en casa cuando esté presente un SSID especial.

Puedo descubrir mi red conocida ejecutando :

#!/bin/bash

iw dev wlan0 scan | grep MI_SSID

Ahora, ¿hay un comando en la línea de comandos para deshabilitar/habilitar la pantalla de bloqueo basada en PIN dependiendo del resultado de este comando, por favor?

Tal vez algo basado en

am  

Intenté hacer una diferencia entre ps con y sin la pantalla de bloqueo, pero solo tengo cyanogenmod.snap como diferencia, intenté matar el proceso, pero aún sigue la pantalla de bloqueo.

¿Algún consejo, por favor?

2 votos

No respondiendo directamente pero esto es trivial con Tasker: forums.androidcentral.com/ambassador-guides-tips-how-tos/…

0 votos

Gracias, pero prefiero una solución CLI o gratuita, no tengo la tienda de aplicaciones para comprar aplicaciones pagas. Hay otras aplicaciones como esta, pero parece que no son fuentes confiables y tienen advertencias/limitaciones extrañas.

0voto

Reddy Lutonadio Puntos 46

El script a continuación es una solución parcial. Parcial porque no desactivará el Pin. Lo que hace es despertar el dispositivo cuando se conecta a una red wifi elegida, ingresar tu contraseña y desbloquearlo.

#!/system/bin/sh

mySSID="no se encuentra wifi"

connected_wifi()
{
    #Obtener la red
    mySSID=`dumpsys netstats | awk -F '[/=|,]' '/iface/ {print $8}' | head -1`

}

echo 'Comenzando a ejecutar el script\n\n'

connected_wifi

while true
do
#Comprobar si está conectado a wifi o datos móviles. Si la cadena de conexión no está vacía
    if [ "$mySSID" != '' ]
    then

        if [ "$mySSID" == "TuRedWifiCasa" ] #conectado a wifi de casa
        then

            echo "Conectado a $mySSID\n"
            #Comprobar si la pantalla está encendida o apagada
            screen_status=`dumpsys power | awk -F '[/=]' '/Display Power/ {print $2}'`

            if [ "$screen_status" == "OFF" ]
            then
                echo 'La pantalla está apagada, ahora se ingresará la contraseña'
                #Presionar el botón de encendido para encender la pantalla
                input keyevent 26
                #Simular un gesto de deslizamiento hacia arriba
                input touchscreen swipe 320 940 320 100
                #Ingresa tu PIN. Cambia XXXX por tu PIN
                input text XXXX
                #Simula pulsar OK/Enter
                input keyevent 66

            fi

        fi

    fi #no conectado a wifi ni a datos móviles

    #Esperar 3 segundos, luego volver a comprobar si está conectado a wifi de casa
    sleep 3
    connected_wifi 

done

La principal desventaja del script es que la pantalla estará encendida casi todo el tiempo cuando esté conectado a tu wifi de casa. Para detener la ejecución del script, presiona CTRL+C desde la terminal.

Mi teléfono no tiene el comando iw. Tuve que usar dumpsys netstats para obtener el ID de la red.

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