Ligar dispositivo Android com detector de movimento (dispositivo externo?)

10

Problema

Estou procurando um detector de movimento que possa ser configurado para ativar um tablet Android (4.3) com raiz e ativar a tela quando alguém passar por ele em um raio de talvez 2-3m.

Ideias

Definitivamente, estou disposto a comprar um dispositivo externo para isso e investir uma quantia (razoável) de dinheiro, seria apenas um que eu possa conectar de alguma forma ao tablet.

Talvez haja algum detector de proximidade do campo da automação residencial com uma qualidade de detecção decente (bom ângulo e distância configurável) que possa enviar notificações push do Android? Sou capaz de escrever um código do zero, se necessário, mas sou muito ignorante e inexperiente no campo de hardware, por isso não saberia como segurar um ferro de solda, por exemplo. ;)

fundo

A idéia aqui é transformar um tablet antigo em algum tipo de tela estacionária do painel, por isso não estou particularmente preocupado com o desgaste da bateria (é o fim da vida útil agora e a partir de agora será usado com o cabo de alimentação conectado até morre) ou uso intenso (a menos que falemos de 100% da CPU 24/7, o que provavelmente mataria em alguns dias).

Pesquisa anterior

Investiguei um pouco se isso poderia ser feito com os sensores existentes no dispositivo e acredito que isso não é possível.

O problema do uso do sensor de proximidade é que ele realmente retorna apenas se algo (supostamente o seu ouvido durante uma ligação) está bem próximo a ele (a alguns centímetros de distância). Mas estou procurando algo na área de 2-3m.

A outra idéia seria a câmera frontal, mas o problema parece ser que: a) a câmera em muitos dispositivos é desligada automaticamente quando a tela está desligada eb) apenas aplicativos em primeiro plano podem acessar a câmera, mas eu quero que o tablet mostrar outro aplicativo na detecção.

Eu dei uma olhada rápida em relação à ativação da tela em resposta a notificações por push e isso não parece muito difícil usando a API do PowerManager . Não tenho certeza da rapidez com que o dispositivo responderia a um empurrão durante o sono profundo, mas esse é um problema secundário.

hheimbuerger
fonte
Por que não usar Bluetooth ou NFC usando um script personalizado? Já vi uma prova de conceito semelhante em outro lugar, usando o bluetooth no PC, e um dispositivo bluetooth usado no pescoço, deixe a mesa do PC e o PC trava, volte à vizinhança do PC, o PC se desbloqueia.
t0mm13b
@ t0mm13b Eu realmente não quero usar nada. Essa é uma configuração permanente e não quero usar um dispositivo BT pelo resto da minha vida. ;) NFC significaria que isso não é mais mãos livres, o que eu também preferiria. Mas mantenha-os chegando, esse é o tipo de idéias criativas que eu esperava. :)
hheimbuerger 28/02
Nos aplicativos, existe o tipo de aplicativos e hardware de "automação residencial" e controle de alarme. Essa pode ser uma maneira de obter um detector humano infravermelho enviando informações de volta ao dispositivo.
Psycogeek 03/03
@Psycogeek Sim, você tem um sensor de movimento decente no campo 'automação residencial'?
precisa saber é o seguinte
Eu não sei de um específico.
Psycogeek 03/03

Respostas:

6

Só para informar que tenho alguma solução simples, ele combina um aplicativo da loja de aplicativos chamado Motion Detector da jastrzab: https://play.google.com/store/apps/details?id=org.motion.detector Em seguida, instale um plug-in chamado Turn Screen: https://play.google.com/store/apps/details?id=org.jastrzab.plugin.screen

  1. Instale os dois aplicativos.
  2. Abra o aplicativo Detector de movimento e ative "Enviar" na parte inferior das configurações. Clique no detector de movimento (na parte superior) e role para baixo até "camera" e selecione "front".
  3. Abra o aplicativo Turn Screen. clique no único botão para ativá-lo.
  4. Abra as configurações do Android, desligue a tela de bloqueio ou selecione "Nenhum".
  5. Altere as configurações de suspensão para atingir o tempo limite desejado.
  6. Desligue Daydream.
  7. Abra o aplicativo (ou tela inicial) que você deseja exibir na tela quando o tablet acordar e está tudo pronto! Aguarde até a tela dormir e passar ou acenar para a câmera e ela será ativada.

Funciona muito bem durante o dia ou com as luzes acesas. Atualmente, estou trabalhando em um sensor de movimento PIR externo que permitirá que o tablet acorde na escuridão. Até agora, o design simples usa apenas um sensor PIR barato e uma pequena luz led montada abaixo da câmera. Quando passo pelo PIR, aciona a luz do LED, permitindo que a câmera veja, o que aciona o movimento. Esperando descobrir como eliminar o LED e simplesmente executar o PIR diretamente no tablet usando o fone de ouvido ou USB no tablet. Sugestões bem-vindas.

Dallas Partin
fonte
Ah, e não se esqueça de ativar o detector de movimento clicando no círculo azul na parte superior da página principal do aplicativo (ao lado de "Detector de movimento"). Aproveite
Dallas Partin
Isso funcionou muito bem para mim, obrigado! Usando o android 4.4 kitkat
Rusty Divine
O link que você forneceu ao Google Drive está quebrado. :(
Whit
5

Como mencionado por Dallas Partin aqui , existe um aplicativo gratuito chamado Motion Detector . Uso-o há algum tempo e posso dizer que ele funcionará com outros aplicativos em primeiro plano e com a tela bloqueada. Isso detectará movimento usando a câmera embutida, portanto é gratuito. Além disso, você não precisa fazer root no seu dispositivo para isso.

Você disse que não sabia como soldar, mas existe uma maneira muito simples de criar seu próprio sensor externo para isso. Dos dois métodos que conheço, mencionei um abaixo:

Método 1. Usando câmera embutida

  1. Faça o download do Detector de movimento .

  2. Faça o download do Tasker .

  3. Baixar AutoStart

  4. Inicie o aplicativo Tasker e toque nos três pontos no canto superior direito.

  5. Toque em PreferênciasUI (na parte superior), desmarque o Modo Iniciante .

  6. Saia disso e toque na guia Vars na parte superior.

  7. Toque +e nomeie % DISPLAYSTATE .

  8. Vá para a guia Perfis e toque em +→ selecione EventoTelaTela ativada .

  9. Toque na Backtecla / botão. Toque em Nova tarefa , nomeie-a Display On.

  10. Toque em +VariáveisConjunto de variáveis . Toque no ícone de lápis ao lado de Nome .

  11. Toque em % DISPLAYSTATE e, onde diz Para , faça 1.

  12. Repita "passo 11" a não ser que a mudança de tudo para Desligar LCD e mudança onde colocamos 1a 0.

  13. Vá para a guia Cenas na parte superior.

  14. Toque +e nomeie algo.

  15. Mantenha pressionado e arraste a linha tracejada e torne-a do tamanho da sua tela.

  16. Toque no ícone de roda dentada no canto superior esquerdo para voltar.

  17. Toque em Perfis e crie um novo usando o +botão

  18. Toque em EventoSistemaIntenção recebida .

  19. Você pode ignorar tudo, exceto onde diz Ação . Aqui você precisa entrar org.jastrzab.move.ACTION_GLOBAL_BROADCAST(os limites são importantes). Se isso não funcionar, tente o seguinte org.motion.detector.ACTION_GLOBAL_BROADCAST.

  20. Toque no ícone de roda dentada (traseira) no canto superior esquerdo. Aparecerá com um menu.

  21. Toque em Nova tarefa e dê um nome a ela.

  22. Dentro dessa tarefa, toque +novamente e clique em CenaMostrar cena .

  23. Onde está escrito Nome , toque no ícone da lupa (não no lápis) e toque no nome da cena .

  24. Agora, onde diz Exibir como , "Atividade, Tela inteira, Sem barra".

  25. Role para baixo e ele dirá se . Toque no ícone de lápis e selecione % DISPLAYSTATE .

  26. Toque no botão no meio e mude para Igual a. Na caixa direita, digite 0.

  27. Toque +e execute TarefaAguardar .

  28. Altere MS para algo entre 25 e 100.

  29. Toque em +CenaDestruir cena e pressione o ícone de lupa em Nome . Selecione sua cena.

  30. Agora volte para a tela principal do aplicativo Tasker .

  31. Entre no aplicativo Motion Detector e verifique se está desativado. Caso contrário, toque no círculo azul.

  32. Vá para o final e, onde está Enviar , verifique se está Ativado .

  33. Volte ao topo e toque no círculo azul novamente para ligá-lo.

  34. Abra o Auto Start e verifique se ele diz On .

  35. Toque em AdicionarMostrar todas as aplicaçõesDetector de movimento .

  36. Marque "ir para a tela inicial após o início automático" e altere "iniciar atraso" para 5.

Isso tem funcionado perfeitamente para mim!

Além disso, observe que no Detector de movimento existem configurações que você pode alterar quando o Detector de movimento está desativado . Um dos mais importantes é a câmera. Se você estiver tendo problemas, verifique se a câmera está configurada para frente .

Você disse que queria um sensor externo que pudesse detectar a distância dentro de 2 a 3 cm, mas se você preferir uma solução mais sensível, isso é muito confiável e relativamente fácil de configurar! Mas se você ainda tem o coração em um sensor externo, eu ficaria mais do que feliz em lhe dar algumas instruções para isso!

Boa sorte e espero que isso ajude você!

Daniel Ford
fonte
Obrigado pela sua resposta, vou tentar isso eventualmente! (Mas atualmente não temos tempo para este projeto, infelizmente.) Acredito que li que a câmera funciona em segundo plano é específica do dispositivo, mas vou ver se meu dispositivo pode fazê-lo.
Hheimbuerger 6/05/15
Observe que eu não disse que queria um sensor que detecta movimento dentro de "2-3cm", mas disse "2-3m", ou seja, quando uma pessoa passa pela sala em que o dispositivo está.
hheimbuerger
note que eu não disse que queria um sensor que detecte movimento dentro de "2-3cm", mas eu disse "2-3m" Ok, eu estava pensando que parecia um pouco próximo :) Eu li que a maioria dos dispositivos trabalhar com a câmera em segundo plano, mas sim, isso significa que nem todos o farão. Se ele não funcionar no seu dispositivo específico e você ainda quiser uma solução, não é difícil fazer um sensor externo por menos de US $ 10. No entanto, esse método é muito mais simples e mais configurável. Boa sorte com isso sempre que você tiver tempo para trabalhar!
Daniel Ford
UPDATE: O pacote de intenção foi renomeado para org.motion.detector.ACTION_GLOBAL_BROADCAST. Consulte a documentação aqui: programy.jastrzab.com/… e a discussão aqui: reddit.com/r/tasker/comments/27bvf8/help_motion_detector_app/… O exemplo acima ainda funciona; basta mudar o nome do pacote pelo novo neste comentário.
André Christoffer Andersen
@ AndréChristofferAndersen É bom saber! Obrigado por apontar isso; Vou adicioná-lo à resposta para evitar confusão.
Daniel Ford
1

Não sei se isso combina com você, mas que tal uma tomada com sensor de movimento? Quando detectar movimento, o tablet conectará a energia e a tela será ligada. Além disso, com o Tasker você pode configurar muito mais coisas para detectar quando detectar movimento.

Jorge
fonte
1

Eu odeio dizer isso pessoal, mas tudo o que fiz foi anexar meu feed do meu PIR no teto (que já controla os leds no chuveiro) ao meu androide. Quando alguém entra, o telefone liga e Bob é seu tio.

James Norman
fonte
Usando a tela do dispositivo quando o recurso Ligar / Desligar. Agradável.
Cde
1

Eu estava procurando uma maneira de ter a tela do tablet quando chego perto do Tablet, que está montado na parede, para monitorar minha casa. Assim como o termostato Nest. Recentemente, comprei a placa do sistema de alarme Konnected e o módulo wifi da Nate Clark. Ele sugeriu que eu usasse www.ozerov.de/fully-kiosk-browser/ Há uma pequena taxa de licença. Funciona bem para a finalidade pretendida. Estou usando o Actiontiles integrado ao meu Smartthings. Meu tablet é montado na parede com fonte de alimentação contínua.

           Nate Clark <[email protected]>
Atilyg
fonte
0

Você pode querer conferir o Wimoto . Eles são pequenos e baratos, sensores bluetooth que possuem alguns sabores (temperatura, detecção de movimento, detecção de líquidos etc.). Eles dizem que existe um aplicativo para Android e que haverá um SDK lançado em breve.

Então, novamente, se você quiser algo mais simples (e o tablet tiver uma câmera frontal), basta usar um aplicativo. Por exemplo (logo após uma pesquisa rápida, por isso não a usei), o Camera Trigger .

Espero que isto ajude.

Hrafn
fonte
Wimoto parece o tipo de dispositivo em que eu estava pensando, mas não consegui encontrar um sensor de movimento. Eles têm um?
precisa saber é o seguinte
O acionador de câmera tem os mesmos problemas mencionados acima, não funciona com a tela desligada ou com outro aplicativo em primeiro plano.
precisa saber é o seguinte
Sim, eles chamam de Sentinela de Wimoto. Eu também vêm em Twine que é também um sensor de micro com um par de características
Hrafn
Você está certo. Fiquei confuso porque na Amazon é (incorretamente, eu acho) listado como um "Bluetooth Smart Water Sensor". Parece bom, mas aparentemente vai demorar mais alguns meses até conseguirmos um.
precisa saber é o seguinte
0

O único sensor de movimento acessível e razoavelmente acessível que eu encontrei é o Belkin WeMo Motion .

Ian McCracken criou um SDK não oficial para o WeMo chamado Ouimeaux ( docs , PyPi ).

Meu plano atual é escrever um pequeno aplicativo em execução em um Raspberry Pi que use Ouimeaux para responder a um sinal do WeMo Motion e enviar uma notificação por push para o dispositivo Android. E, em seguida, um aplicativo Android ainda mais simples, que responde à notificação por push, ativa o dispositivo e liga a tela. (O último também pode ser possível com o Tasker.)

Como uma segunda etapa, as partes relevantes do Ouimeaux poderiam ser reescritas em Java e, então, seria possível conectar-se diretamente do aplicativo ao WeMo, tornando supérfluo o Raspberry Pi.

Sugestões de melhoria são bem-vindas, é claro. Em particular, se você conhece uma maneira existente de ativar uma tela do Android a partir de um script Python / shell / acionar a notificação por push. Isso parece trivial demais para exigir a criação de um novo aplicativo.

hheimbuerger
fonte
Se você desativar o bloqueio do dispositivo, poderá criar um pequeno aplicativo que leve entrada para ação e use um Java ProcessBuilder para executar um comando shell para um evento-chave, por exemplo 'shell input keyevent 26' (pressione o botão Liga / Desliga), que deve no trabalho teórico. Atualmente, estou executando um comando shell após pressionar o botão para executar o novo recurso 'screenrecord' no Android KitKat, em segundo plano para um aplicativo que estou criando, para que eu possa verificar se a execução de comandos shell dessa maneira funciona.
Hrafn
@ Hrafn eu não entendi direito: qual é a intenção por trás disso?
precisa saber é o seguinte
Você estava pedindo maneiras possíveis de ativar a tela. Se você puder obter algum tipo de entrada, poderá criar um Processo Java (como parte de um programa Android em execução em segundo plano) e fazê-lo executar um clique no botão liga / desliga no shell do dispositivo. Isso deve acontecer, se o dispositivo estiver configurado para não bloquear, ative a tela.
Hrafn
@ Hrafn eu vejo, mas então você pode simplesmente usar a API do PowerManager à qual eu já vinculei a pergunta. Requer apenas cerca de quatro linhas de código. Embora uma possibilidade seja manter o dispositivo conectado com um cabo e acionar a ativação adbcom algo como Wakey Droid .
precisa saber é o seguinte
Certo. Mas, para usar a API do PowerManager, você precisa gerenciar o estado de ativação (eu acho). Portanto, se você adquirir um wakelock, envie um sinal de desligamento após um certo tempo. Com a chamada do evento de chave através de um shell, você não precisa gerenciar isso e pode deixar o sistema lidar com tudo.
Hrafn