[Android] Sterowanie aplikacją poprzez HTTP (ekran on/off)

0

Na co dzień piszę w PHP w Delphi/C# i nie miałem styczności z urządzeniami mobilnymi. Muszę jednak szybko napisać jedną prostą aplikację bo po prostu nie mogę takiej znaleźć gotowej.

Chcę móc włączać / wyłączać ekran (czyli po prostu blokować i odblokowywać urządzenie) zdalnie, poprzez zwykłe HTTP GET. Nie potrzebuję żadnego interfejsu w przeglądarce bo takie GET mogę sobie napisać prosty program na PC lub po prostu podpiąć pod skrót klawiszowy + curl.exe. Wchodzę np. w http://iptabletu:port/screen i ekran się wyłącza, wchodzę znowu i się włącza - proste.

Tablet nie ma żadnego zabezpieczenie typu swipe, pin itp) więc po prostu chcę uzyskać to samo co klikając ręcznie w przycisk power.

Nie mam jednak pojęcia jak to rozwiązać od czego zacząć. Wiem że musiałbym zainstalować pewnie Android Studio, do sterowania ekranem użyć jakieś funkcji której dostarcza producent - tutaj nie problem, ale co z tym sterowaniem? Gdy szukam w google to krew mnie zalewa bo wyszukuje mi wszędzie wątki gdzie to aplikacja ma robić zapytania HTTP, a ja chcę na odwrót - by to aplikacja mogła odbierać.

Wpadłem też na pomysł by zamiast pisać aplikację to uruchomić serwer WWW np. apache z PHP do czego są gotowe aplikacje. Nie wiem jednak co dalej, czy przez takie PHP mogę w jakikolwiek sposób sterować urządzeniem?

Jak to rozwiązać najlepiej? A może jednak jest jakaś aplikacja która oferuje taką funkcję?

0

Jeśli chodzi o komunikację serwera z aplikacją to:

HTTP nie wiele tutaj pomoże bo musiałaby aplikacja odpytywać w interwale serwer.

Pushe - to rozwiązanie pozwala aplikacji na wymianę informacji z serwerem za pomocą TCP/IP. Krótko mówiąc aplikacja może wysłać info do serwera jak i serwer może powiedzieć coś aplikacji bez konieczności odpytania serwera cyklicznie. Komunikacja przebiega backed <=> apka. Takie rozwiązania są już gotowe i posiada je m.in Firebase

Websocket - to jest rozwiązanie z grubsza podobne do push, ale tutaj musiałbyś sam sobie zaimplementować serwer i clienta na obsługę zdarzeń. Komunikacja przebiega backed <=> apka

SSE - Server side events. To typ komunikacji gdzie aplikacja mówi serwerowi "Słucham Cię", a serwer do niej "mówi". Nie ma natomiast możliwości komunikacji w dwie strony. Jest tylko backend -> apka

Natomiast jeśli chodzi o samo odblokowanie urządzenia. Jest opcja na wybudzenie urządzania, czyli zapalenie ekeranu (wake lock). Natomiast jeśli chodzi o odblokowanie ekranu, to po bardzo małym rozeznaniu tematu w google, nie wróżę nic dobrego. Na dodatek każdy producent moze to sobie inaczej rozstrzygnąć i api wcale nie musi pomóc. Tutaj przyda się trochę druciarstwa i szczęścia. Może ten link będzie pomocny: https://stackoverflow.com/questions/14352648/how-to-lock-unlock-screen-programmatically?answertab=votes#tab-top

0

Dzięki za wyczerpującą odpowiedź. Znalazłem w sieci gotowy przykład serwera z socketami, skompilowałem no i super, myślałem że teraz z górki. Problemem okazało się jednak wybudzanie i usypianie urządzenia.. Nie sądziłem że tyle z tym grzebania a rozwiązania z sieci okazują się nieaktualne. Traciłem tylko czas i nerwy. Wpadłem jednak na inne rozwiązanie.

Przez adb włączyłem w urządzeniu adb przez wifi. Wystarczy komenda przez cmd adb.exe shell input keyevent 26 co symuluje wciśnięcie przycisku i mam efekt o który mi chodziło, bez żadnej aplikacji ;)

0

Do zarządzania telefonem zdalnie po http://remo.io/remo.io

1 użytkowników online, w tym zalogowanych: 0, gości: 1