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.