Android 기기가 활성화되어 있는지 네트워크를 통해 알아보십시오


9

Android TV를 실행하는 nVidia Shield TV 장치가 있습니다.

이를 홈 시어터 설정에 통합하려면 장치가 활성화되어 있는지 아니면 잠자고 있는지 확인할 수 있어야합니다.

다른 장치의 경우 핑을 사용하여이를 결정합니다. 그러나 Android 기기는 기본적으로 항상 켜져 있으므로이 경우에는 작동하지 않습니다.

물론 한 가지 방법은 간단한 응용 프로그램을 작성하는 것입니다. 장치를 활성화하면 TCP 포트가 열리고 잠 자면 닫힙니다.

내 질문은 더 간단한 방법이 있는지, 아마도 기존 앱 또는이를 수행하기 위해 내 자신의 앱을 개발하지 않고이를 수행하는 다른 방법이 있는지입니다.


Android 기기가 항상 Wi-Fi에 연결되어 있습니까?
frogatto

"장치가 작동 중이거나 잠자기 상태"와 "작동 중"이 섞여 있다는 느낌이 들었습니다. 더 정확한 질문을 해주세요.
Marian Paździoch

@ HiI'mFrogatto 장치가 WiFi를 사용하지 않고 이더넷을 통해 연결되어 있으므로 항상 네트워크에 연결되어 있습니다.
Mika Fischer

@ MarianPaździoch Android TV에는 휴대 전화 나 태블릿 화면이 꺼져있을 때와 비슷한 저전력 모드 인 "슬립 모드"라는 모드가 있습니다. 이 절전 모드와 장치가 TV에 물건을 표시하는 활성 모드를 구별하고 싶습니다. 문제가 명확 해 집니까?
Mika Fischer

3
@MikaFischer "... 내 자신의 앱을 작성하지 않고 ..." Stack Overflow는 코딩하는 사람들을위한 것입니다:)
frogatto

답변:


1

nVidia Shield Android TV는 Android 5.1.1과 함께 제공되며 마시멜로 업데이트는 12 월부터 제공됩니다. Android 5.1.1이 기기에 설치된 버전이라고 가정합니다.

쿼리 시스템 서비스

장치의 무선 모드에서 를 활성화하십시오 . 을 따르지 공식 가이드 또는 이 대답 필요한 경우, 지침이지의를.

다양한 시스템 서비스 덤프에서 Android의 상태 (잠자기 또는 깨어남)를 찾을 수 있습니다.

  • 서비스 : 전원

    adb shell dumpsys power
    

    문자열을 검색 mWakefulness및 / 또는 Display Power: state. 두 가지 모두 필요한 상태를 제공합니다.

    예:

    adb shell 'dumpsys power | grep -e "mWakefulness=" -e "Display Power"'
    

    나에게 준다

    mWakefulness=Asleep
    Display Power: state=OFF
    
  • 서비스 : 창

    adb shell dumpsys window
    

    문자열을 검색 mAwake=true 및 / 또는 mScreenOnEarly=true및 / 또는mScreenOnFully=true

    예:

    adb shell 'dumpsys window | grep -e "mAwake=" -e "mScreenOnEarly" -e "mScreenOnFully"'
    

    나에게 준다

    mAwake=true
    mScreenOnEarly=true mScreenOnFully=true
    
  • 서비스 : 디스플레이

    adb shell dumpsys display
    

    문자열을 검색 mState=OFF 및 / 또는 mScreenState=OFF.

    예:

    adb shell 'dumpsys display | grep -e "mState=" -e "mScreenState"'
    

    나에게 준다

    mState=OFF
    mScreenState=OFF
    

자동화 사용

이전 방법에서 언급 한 시스템 서비스 중 어느 것도 효과가없는 경우 Tasker, MacroDroid 또는 Automate와 같은 앱을 하십시오.

우리는 이제 자동화를 사용하여 잠자기 모드로 잠자기 및 깨어있을 때 깨우기와 같은 파일에 Android 상태를 씁니다.

태스크 러 ,

  • 프로필 : 이벤트 → 디스플레이 → 디스플레이 끄기
  • 작업 : (작업) : 파일 → 파일 쓰기 → 쓸 텍스트 파일을 선택하고 잠자기를 입력 한 다음 줄 바꿈 추가를 선택 취소합니다.
  • 프로필 : 이벤트 → 디스플레이 → 디스플레이 켜기
  • 작업 : (작업) : 파일 → 파일 쓰기 → 쓸 텍스트 파일을 선택하고 Awake를 입력 한 다음 줄 바꿈 추가를 선택 취소합니다.

매크로 드로이드

안타깝게도 Android에는 제공되지 echo않거나 printf유틸리티 가 제공되지 않습니다 . 기기가 루팅 된 경우 busybox 를 설치 하고 안심할 수 있습니다. 그렇지 않은 경우 busybox binary를 다운로드 하고 실행 권한을 설정 한 후를 /data/local/tmp사용하여 푸시하십시오 adb push. 루팅되지 않은 장치의 또 다른 방법은 상태에 따라 하나는 텍스트는 잠자고, 나머지 하나는 텍스트는 깨우십시오. 화면이 꺼 지거나 켜질 때마다 두 번째 / 세 번째 파일을 첫 번째 파일로 복사하십시오.

MacriDroid에는 명령을 실행하기 위해 보안 설정 과 같은 플러그인이 필요 합니다.

  • 트리거 : 화면 켜기 / 끄기 → 화면 끄기
  • 조치 : 보안 설정 → 조치 → 명령 실행 :

    • 명령: echo Sleeping > FILE_PATH
    • 명령 이름 : 화면 끄기
  • 트리거 : 화면 켜기 / 끄기 → 화면 켜기
  • 조치 : 보안 설정 → 조치 → 명령 실행 :

    • 명령: echo Awake > FILE_PATH
    • 명령 이름 : 화면 끄기

루팅되지 않은 Android의 경우 echo로 교체해야합니다 ./data/local/tmp/busybox echo. 그렇지 않으면 명령을 사용하여 복사 작업을 수행하십시오 cp SOURCE DESTINATION.

자동화

당신의 흐름은이 이미지와 비슷해야합니다

(이미지를 클릭하면 확대됩니다)

IMG :

수면과 수면을위한 두 가지 흐름을 만들어야합니다. 흐름의 두 번째 블록은 브로드 캐스트 수신이라고 하며 앱에서 찾을 수 있습니다. 세 번째 블록의 이름은 File write text 이며 File & Storage에서 찾을 수 있습니다.

이제 무선 모드에서 adb를 사용하거나 SSH를 사용하여 해당 파일의 내용을 확인할 수 있습니다 ( Android 에서 SSH 서버 가 필요 합니다. 모든 인터페이스에서 서버를 실행하고 단일 인터페이스에 바인딩하지 마십시오).


자동화 앱이 파일을 로컬 또는 원격 서버에 업로드하여 상태를 알 수 있도록 Android 대신 해당 서버를 조회하는 것과 같은 다른 가능성이 있습니다.



Android TV에서 순조롭게 타지 않을 것이라고 말하고 있습니다. 답변이 전혀 작동하지 않으면 알려주십시오. 내가 가져갈 게 나는 도움이되지 않는 답변을 숨기려고하지 않습니다.
Firelord

1
와우, 자세한 답변 감사합니다! 이와 같은 Tasker를 사용하면 매력처럼 작동했습니다! 유일한 경고는 마우스를 연결하여 설정해야한다는 것입니다. 파일에 쓰지 않았습니다. 대신 파이썬으로 간단한 HTTP 서버를 작성하고 방패에서 GET 요청을 보냅니다.
Mika Fischer

네, 당신도 좋은 기술입니다. 서버에게 당신이 살아 있다는 것을 말하는 것과 같습니다. 현상금에 감사드립니다! 내 방법 1 (시스템 서비스 방법)이 실패했는지 또는 아직 시도하지 않았는지 알려주시겠습니까?
Firelord

1
루팅되지 않았기 때문에 시도하지 않았으며 볼 수있는 한 adb 네트워크 모드 (예 : 재부팅 후)를 활성화하는 장치에 컴퓨터를 연결해야합니다.
Mika Fischer

0

이것은 실제로 해결책은 아니지만 장치 설정에는 장치가 유휴 모드로 전환 될 때 Wi-Fi를 비활성화하는 옵션이있을 수 있습니다. 그러한 옵션이 없더라도이 응용 프로그램이 있어야한다고 확신합니다. 따라서 유휴 상태에서 Wi-Fi가 비활성화 된 경우 "ping"접근 방식은 작동하지만 장치가 유휴 상태가 될 때 작동하지 않는 백그라운드 업데이트 등을 처리해야합니다.

이 솔루션에 대한 기본 응용 프로그램이 있다고 생각하지 않지만 추가 포인트가 도움이 될 것입니다. PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED 를 수신하는 자체 Android 응용 프로그램을 만들 수 있으며 Intent서버에서 어떤 종류의 요청을 수신하면 장치가 깨어 있는지 여부를 다시 보낼 수 있습니다. 그러나 장치가 서버 요청을 받으면 깨어날 수 있습니다.


그러나 이것은 셋톱 박스이며 이더넷을 통해 연결되는 것이 좋습니다. 내가 쓴대로 앱을 작성할 수 있다는 것을 알고 있습니다. 문제는 그렇게 할 수있는 방법이 있다면 :)
Mika Fischer

AFAIK는 개발자의 POV와 Android의 연결 유형에 큰 차이가 없습니다. 따라서 장치가 유휴 상태가되면 유선을 포함하여 모든 유형의 연결을 비활성화 할 수있는 3D 파티 앱이있을 수 있습니다.

0

장치가 유휴 모드인지 여부를 알기 위해 쉘 스크립트를 설정할 수 있습니다. 장치가 유휴 상태 인 경우. 장치에
신호를 보낼 수 있습니다.


흥미롭게도 네트워크를 통해 adb를 사용할 수 있는지 또는 SSH 서버를 대신 사용할 수 있는지 확인해야합니다.
Mika Fischer

그러나 dumpsys deviceidle실제로 휴대 전화에서 적어도 작동하지 않습니다 ( Can't find service: deviceidle.
Mika Fischer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.