Encendido del dispositivo Android con detector de movimiento (¿dispositivo externo?)

10

Problema

Estoy buscando un detector de movimiento que se pueda configurar para activar una tableta Android rooteada (4.3) y encender la pantalla cuando alguien pase por ella en un radio de unos 2-3 m.

Ideas

Definitivamente estoy dispuesto a obtener un dispositivo externo para esto e invertir una cantidad (razonable) de dinero, solo tendría que ser uno que de alguna manera pueda conectar a la tableta.

¿Hay quizás detectores de proximidad del campo de la automatización del hogar con una calidad de detección decente (buen ángulo y distancia configurable) que puedan enviar notificaciones push de Android? Si es necesario, puedo escribir algo de código desde cero, pero no tengo ni idea ni experiencia en el campo del hardware, por lo que no sabría cómo sostener un soldador, por ejemplo. ;)

Antecedentes

La idea aquí es transformar una tableta vieja en algún tipo de pantalla de tablero estacionaria, por lo que no estoy particularmente preocupado por el desgaste de la batería (es el final de su vida útil y de ahora en adelante se usará con el cable de alimentación enchufado hasta que se muere) o uso intenso (a menos que estemos hablando de 100% de CPU 24/7, lo que probablemente lo mataría en unos días).

Investigación previa

Investigué un poco si esto podría hacerse con los sensores existentes en el dispositivo y creo que eso no es posible.

El problema con el uso del sensor de proximidad es que realmente solo devuelve si algo (se supone que es su oído durante una llamada) está justo al lado (a unos pocos centímetros de distancia). Pero estoy buscando algo en el área de 2-3m.

La otra idea sería la cámara frontal, pero el problema parece ser que a) la cámara en muchos dispositivos se apaga automáticamente cuando la pantalla está apagada yb) solo las aplicaciones en primer plano pueden acceder a la cámara, pero quiero que la tableta muestra otra aplicación en detección.

Eché un vistazo rápido al despertar la pantalla en respuesta a las notificaciones automáticas y eso no parece demasiado difícil con la API de PowerManager . No estoy seguro de qué tan rápido respondería el dispositivo a un impulso cuando duerme profundamente, pero ese es un problema secundario.

hheimbuerger
fuente
¿Por qué no usar Bluetooth o NFC con un script personalizado? He visto una prueba de concepto similar en otra parte, usando bluetooth en la PC, y un dispositivo bluetooth usado alrededor del cuello, abandona el escritorio de la PC y la PC se bloquea, llega cerca de la PC, la PC se desbloquea.
t0mm13b
@ t0mm13b Realmente no quiero usar nada. Esto pretende ser una configuración permanente y no quiero usar un dispositivo BT por el resto de mi vida. ;) NFC significaría que esto ya no es manos libres, lo que también preferiría que fuera. Pero sigan viniendo, ese es el tipo de ideas creativas que esperaba. :)
hheimbuerger
En las aplicaciones existe la "domótica" y el tipo de control de alarmas de aplicaciones y hardware. Esa podría ser una forma de obtener un detector humano infrarrojo que envíe información al dispositivo.
Psycogeek
@Psycogeek Sí, ¿eres un sensor de movimiento decente del campo 'domótica'?
hheimbuerger
No sé de uno específico.
Psycogeek

Respuestas:

6

Solo para hacerle saber que tengo algo con una solución simple, combina una aplicación de la tienda de aplicaciones llamada Detector de movimiento de jastrzab: https://play.google.com/store/apps/details?id=org.motion.detector Luego instale un complemento llamado Turn Screen: https://play.google.com/store/apps/details?id=org.jastrzab.plugin.screen

  1. Instala ambas aplicaciones.
  2. Abra la aplicación Detector de movimiento y active "Enviar" en la parte inferior de la configuración. Haga clic en el detector de movimiento (en la parte superior) y luego desplácese hacia abajo hasta "cámara" y seleccione "frente".
  3. Abre la aplicación Turn Screen. haga clic en el único botón para activarlo.
  4. Abra la configuración de Android, apague la pantalla de bloqueo o seleccione "ninguno".
  5. Cambie la configuración de suspensión para que se agote el tiempo deseado.
  6. Desactiva Daydream.
  7. Abra la aplicación (o la pantalla de inicio) que desea que se muestre en la pantalla cuando se active la tableta, ¡y listo! Espera a que la pantalla se duerma y camina o saluda a tu cámara y la despertará.

Funciona muy bien durante el día o con las luces encendidas. Actualmente estoy trabajando en un sensor de movimiento PIR externo que permitirá que la tableta se despierte en la oscuridad. El diseño simple hasta ahora solo utiliza un sensor PIR barato y una pequeña luz led montada debajo de la cámara. Cuando camino por el PIR activa la luz LED que permite que la cámara vea, lo que activa el movimiento. Con la esperanza de descubrir cómo eliminar el LED y simplemente ejecutar el PIR directamente en la tableta usando el conector para auriculares o USB en la tableta. Sugerencias bienvenidas.

Dallas Partin
fuente
Ah, y no olvides activar el detector de movimiento haciendo clic en el círculo azul en la parte superior de la página principal de la aplicación (junto a "Detector de movimiento"). Disfruta
Dallas Partin
Esto funcionó muy bien para mí, ¡gracias! Usando Android 4.4 kitkat
Rusty Divine
El enlace que proporcionó a Google Drive está roto. :(
Whit
5

Como mencionó Dallas Partin aquí , hay una aplicación gratuita llamada Detector de movimiento . Lo he estado usando durante un tiempo y puedo decirle que funcionará con otras aplicaciones en primer plano y con la pantalla bloqueada. Esto detectará movimiento usando la cámara incorporada, por lo que es gratis. Además, no tiene que rootear su dispositivo para esto.

Dijiste que no sabías cómo soldar, pero hay una manera muy simple de hacer tu propio sensor externo para esto. De los dos métodos que conozco, he mencionado uno a continuación:

Método 1. Usando la cámara incorporada

  1. Descargar Motion Detector .

  2. Descargar Tasker .

  3. Descargar AutoStart

  4. Inicie la aplicación Tasker y toque los tres puntos en la esquina superior derecha.

  5. Toque PreferenciasIU (en la parte superior), desmarque Modo principiante .

  6. Salga de eso y toque la pestaña Vars en la parte superior.

  7. Toque +y asígnele el nombre % DISPLAYSTATE .

  8. Vaya a la pestaña Perfiles y toque +→ seleccione EventoPantallaPantalla activada .

  9. Toque la Backtecla / botón. Toque Nueva tarea , asígnele un nombre Display On.

  10. Toque +VariablesConjunto de variables . Toca el ícono de lápiz junto a Nombre .

  11. Toque % DISPLAYSTATE y donde dice A , hágalo1 .

  12. Repetir "paso 11", excepto que el cambio todo para Display Off y el cambio donde ponemos 1a 0.

  13. Vaya a la pestaña Escenas en la parte superior.

  14. Toque +y asígnele un nombre.

  15. Mantenga presionada y arrastre la línea punteada para que sea del tamaño de su pantalla.

  16. Toca el ícono de ajustes en la esquina superior izquierda para regresar.

  17. Toque Perfiles y cree uno nuevo utilizando el+ botón.

  18. Toque EventoSistemaIntención recibida .

  19. Puedes ignorar todo excepto donde dice Acción . Aquí debe ingresar org.jastrzab.move.ACTION_GLOBAL_BROADCAST(las mayúsculas son importantes). Si esto no funciona, intente lo siguienteorg.motion.detector.ACTION_GLOBAL_BROADCAST .

  20. Toca el ícono de ajustes (atrás) en la esquina superior izquierda. Aparecerá con un menú.

  21. Toque Nueva tarea y asígnele un nombre.

  22. Dentro de esa tarea, toque +nuevamente y presione EscenaMostrar escena .

  23. Donde dice Nombre , toca el ícono de la lupa (no el lápiz) y toca el nombre de tu escena .

  24. Ahora donde dice Mostrar como , "Actividad, Pantalla completa, Sin barra".

  25. Desplácese hasta la parte inferior y dirá si . Toque el ícono de lápiz y seleccione % DISPLAYSTATE .

  26. Toque el botón en el medio y cámbielo a Igual. En el cuadro de la derecha, escriba 0.

  27. Toque +y haga TareaEsperar .

  28. Cambie MS a algún lugar entre 25 y 100.

  29. Toque +EscenaDestruir escena y presione el icono de la lupa en Nombre . Selecciona tu escena.

  30. Ahora regrese a la pantalla principal de la aplicación Tasker .

  31. Vaya a la aplicación Detector de movimiento y asegúrese de que esté apagada. Si no, toca el círculo azul.

  32. Vaya al final y donde dice Enviar , asegúrese de que esté Encendido .

  33. Vuelve a la parte superior y toca el círculo azul nuevamente para que se encienda.

  34. Abra Auto Start y asegúrese de que dice On .

  35. Toque AgregarMostrar todas las aplicacionesDetector de movimiento .

  36. Marque "ir a la pantalla de inicio después del inicio automático" y cambie "retraso de inicio" a 5.

¡Esto ha funcionado perfectamente para mí!

Además, tenga en cuenta que en el Detector de movimiento hay configuraciones que puede cambiar cuando el Detector de movimiento está apagado . Uno de los más importantes es la cámara. Si tiene problemas, asegúrese de que la Cámara esté configurada en Frente .

Dijiste que querías un sensor externo que pudiera detectar la distancia dentro de los 2-3 cm, pero si te conformas con una solución de detección más lejana, ¡es muy confiable y relativamente fácil de configurar! Pero si todavía tienes tu corazón puesto en un sensor externo, ¡me encantaría darte algunas instrucciones para eso también!

¡Buena suerte y espero que esto te ayude!

Daniel Ford
fuente
Gracias por tu respuesta, ¡intentaré esto eventualmente! (Pero actualmente no tengo tiempo para este proyecto, desafortunadamente). Creo que leí que si la cámara funciona en segundo plano es específica del dispositivo, pero veré si mi dispositivo puede hacerlo.
hheimbuerger
Tenga en cuenta que no dije que quería un sensor que detecta el movimiento dentro de "2-3 cm", sino que dije "2-3 m", es decir, cuando una persona pasa por la habitación, el dispositivo está dentro.
hheimbuerger
tenga en cuenta que no dije que quería un sensor que detecta el movimiento dentro de "2-3 cm", sino que dije "2-3 m" Ok, estaba pensando que parecía un poco cerca :) He leído que la mayoría de los dispositivos trabajar con la cámara en segundo plano, pero sí, eso significa que no todos lo harán. Si no funciona en su dispositivo específico y aún desea una solución, hacer un sensor externo no es tan difícil por menos de $ 10. Sin embargo, este método es mucho más simple y más configurable. ¡Buena suerte con esto siempre que tengas tiempo para trabajar en ello!
Daniel Ford
ACTUALIZACIÓN: Se ha cambiado el nombre del paquete de intención org.motion.detector.ACTION_GLOBAL_BROADCAST. Ver documentación aquí: programy.jastrzab.com/… y discusión aquí: reddit.com/r/tasker/comments/27bvf8/help_motion_detector_app/… Lo anterior aún funciona; simplemente cambie el nombre del paquete con el nuevo en este comentario.
André Christoffer Andersen
@ AndréChristofferAndersen ¡Es bueno saberlo! Gracias por señalar eso; Lo agregaré a la respuesta para evitar confusiones.
Daniel Ford
1

No sé si esto le conviene, pero ¿qué pasa con un enchufe con un sensor de movimiento? Cuando detecta movimiento, la tableta se conectará y la pantalla se encenderá. Además, con Tasker puedes configurar muchas más cosas para hacer cuando detecta movimiento.

Jorge
fuente
1

Odio decirlo, chicos, pero todo lo que hice fue conectar mi alimentación desde mi PIR en el techo (que ya controla los leds en la ducha) a mi Android. Cuando alguien entra, el teléfono se enciende y Bob es tu tío.

James Norman
fuente
Uso de la pantalla del dispositivo encendida cuando la función de encendido / apagado. Agradable.
cde
1

He estado buscando una manera de tener la pantalla de la tableta encendida cuando me acerco a la tableta que está montada en la pared para monitorear mi hogar. Al igual que el termostato Nest. Recientemente compré la placa del sistema de alarma Konnected y el módulo wifi de Nate Clark. Me sugirió que usara www.ozerov.de/fully-kiosk-browser/ Hay una pequeña tarifa de licencia. Funciona bien para el propósito previsto. Estoy usando Actiontiles integrados con mis Smartthings. Mi tableta está montada en la pared con fuente de alimentación continua.

           Nate Clark <[email protected]>
Atilyg
fuente
0

Es posible que desee ver Wimoto . Son sensores bluetooth pequeños y baratos que vienen en algunos sabores (temperatura, detección de movimiento, detección de líquidos, etc.). Dicen que hay una aplicación de Android entrante, y que habrá un SDK lanzado en un futuro cercano para ello.

Por otra parte, si desea algo más simple (y su tableta tiene una cámara frontal), simplemente puede usar una aplicación. Por ejemplo (justo después de una búsqueda rápida, así que no lo he usado) Camera Trigger .

Espero que esto ayude.

Hrafn
fuente
Wimoto suena como el tipo de dispositivos en los que estaba pensando, pero no pude encontrar un sensor de movimiento. ¿Tienen uno?
hheimbuerger
Camera Trigger tiene los mismos problemas mencionados anteriormente, no funciona con la pantalla apagada o cuando se tiene otra aplicación en primer plano.
hheimbuerger
Sí, lo llaman Wimoto Sentry. También me he encontrado con Twine, que también es un micro sensor con un par de características
Hrafn
Tienes razón. Me confundí porque en Amazon está (incorrectamente, supongo) listado como un "Bluetooth Smart Water Sensor". Se ve bien, pero aparentemente pasarán unos meses más hasta que podamos conseguir uno.
hheimbuerger
0

El único sensor de movimiento asequible y razonablemente accesible que pude encontrar es el Belkin WeMo Motion .

Ian McCracken creó un SDK no oficial para WeMo llamado Ouimeaux ( docs , PyPi ).

Mi plan actual es escribir una pequeña aplicación que se ejecute en una Raspberry Pi que use Ouimeaux para responder a una señal de WeMo Motion y enviar una notificación push al dispositivo Android. Y luego una aplicación de Android aún más simple que responde a la notificación de inserción y activa el dispositivo y enciende la pantalla. (Este último también podría ser factible con Tasker).

Como segundo paso, las partes relevantes de Ouimeaux podrían reescribirse en Java y luego sería posible conectarse directamente desde la aplicación al WeMo, haciendo que la Raspberry Pi sea superflua.

Sugerencias de mejora bienvenidas, por supuesto. En particular, si conoce una forma existente de reactivar una pantalla de Android desde un script Python / shell / de lo contrario desencadenar una notificación push. Eso suena demasiado trivial para requerir escribir una nueva aplicación.

hheimbuerger
fuente
Si deshabilita el bloqueo del dispositivo, puede crear una pequeña aplicación que tome la entrada para la acción, y use un Java ProcessBuilder para ejecutar un comando de shell para un evento clave, por ejemplo 'shell input keyevent 26' (presionar el botón de Encendido), eso debería en teoría trabajo. Actualmente estoy ejecutando un comando de shell después de presionar un botón, para ejecutar la nueva función 'screenrecord' en Android KitKat, en segundo plano para una aplicación que estoy creando para poder verificar que ejecutar comandos de shell de esta manera funcione.
Hrafn
@Hrafn No entendí bien: ¿cuál es la intención detrás de hacer eso?
hheimbuerger
Estabas pidiendo posibles formas de despertar la pantalla. Si puede obtener algún tipo de entrada, puede crear un Proceso Java (como parte de un programa de Android que se ejecuta en segundo plano) y hacer que se ejecute un clic en el botón de encendido en la carcasa del dispositivo. Eso debería, si el dispositivo está configurado para no bloquearse, activar la pantalla.
Hrafn
@Hrafn Ya veo, pero puedes usar la API de PowerManager a la que ya me he vinculado en la pregunta. Solo requiere alrededor de cuatro líneas de código. Aunque una posibilidad sería mantener el dispositivo conectado con un cable y simplemente activar el despertador adbcon algo como Wakey Droid .
hheimbuerger
Seguro. Pero para usar la API de PowerManager necesita administrar el estado de activación usted mismo (creo). Entonces, si adquieres un wakelock, querrás enviar una señal de apagado después de un cierto tiempo. Con la llamada keyevent a través de un shell, no tiene que administrar eso, y solo puede dejar que el sistema maneje todo.
Hrafn