2015-01-30 5 views
12

프로그래밍 방식으로 Android 기본 제공 "배터리 절약"모드를 활성화 또는 비활성화 할 수 있는지 확인하려고합니다.프로그래밍 방식으로 "배터리 절약"모드 활성화/비활성화

모든 공식적인 접근법이나 속임수를 환영합니다. - 그게 내가 후 나는 것이 아니다 http://www.androidcentral.com/android-50-lollipop-basics-how-get-more-life-between-charges-battery-saver

내가 알고 당신이 그것을 detect 수 있습니다

는 참고로, 여기에 5.0에서 안드로이드의 표준 UI 다음과 같은 방법으로 할 수 있습니다.

감사합니다.

+0

배터리 절약 모드를 프로그래밍 방식으로 설정할 수는 없습니다. 그것은 보안 침해의 원인이됩니다. 전화 사용자 만 모드를 변경할 수 있습니다. 응용 프로그램은 배터리 절약 모드를 변경할 수 없습니다. – mertyildiran

+1

@MehmetMertYidiran. 자세한 내용은 "보안 침해"가 어떻게 또는 어떤 방식으로 발생했는지에 대한 정보/링크가 있습니까? –

+1

"보안 침해": 내 말은, 내가 전화 사용자이고 그 전화로 게임을하고있는 시나리오에 대해 생각해보십시오. 애플리케이션이 백그라운드에서 실행되고 갑자기 휴대 전화가 배터리 절약 모드로 변경됩니다. 한꺼번에 실적이 떨어지고 디스플레이가 어두워지며 내 앱이 중단 될 수도 있습니다. 따라서 사용자에게 큰 위험을 초래할 수 있으며 Android는 배터리 절약 모드를 프로그래밍 방식으로 변경할 수 없습니다. – mertyildiran

답변

13

루팅 된 장치에서 배터리 세이버를 프로그래밍 방식으로 활성화/비활성화 할 수 있습니다. global 테이블의 low_power 값을 /data/data/com.android.providers.settings/databases/settings.db 파일에서 편집해야합니다. 장치가 settings 명령을 지원하는 경우

, 당신은 (루트로) 실행할 수 있습니다

settings put global low_power 1 

는 에너지 절약을 가능하게하고

settings put global low_power 0 

은 비활성화 할 수 있습니다. 는, sqlite3 명령을 사용하지 않는 경우 :

sqlite3 /data/data/com.android.providers.settings/databases/settings.db "update global set value='1' where name='low_power';" 
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "update global set value='0' where name='low_power';" 

가 먼저 PC에서 휴대 전화를 분리해야 기억, 에너지 절약을 사용할 수 없게됩니다 그렇지 않으면 시스템을. WiFi 또는 Android Terminal (에뮬레이터)을 통해 ADB를 사용하십시오.

UPDATE :

sqlite3 방법은 더 이상 신뢰할 수있는 것 같지 않습니다.

android.os.action.POWER_SAVE_MODE_CHANGED 방송이 전송되는지 확실하지 않습니다. 어쩌면 당신은 here에서 코드처럼 수동으로 보낼 수 있습니다

private static String COMMAND_ENABLE = "settings put global low_power 1\n" + "am broadcast -a android.os.action.POWER_SAVE_MODE_CHANGED --ez mode true\n"; private static String COMMAND_DISABLE = "settings put global low_power 0\n" + "am broadcast -a android.os.action.POWER_SAVE_MODE_CHANGED --ez mode false\n";

또한,이 새로운 power_saving 항목 그러나 I가 관리하지 않은 안드로이드 6.0.1에서, 설정 데이터베이스에 나타난 것으로보고되고있어 그것을 찾아라. Android 7.1.1_r13에서는 low_power가 내부적으로 사용되지만 (fx. here) 일부 Android 버전에서는 변경 될 수 있습니다. f.e에서 변경 사항을 계속 확인하고자 할 수 있습니다. thisthis 파일

+0

/data/data/com.android.providers.settings/databases/settings.db 파일의 전역 테이블에서 low_power 값을 편집하는 방법은 무엇입니까? 코드가 있습니까? 또한이 답변은 아직 관련이 있습니까? – Rosenpin

+1

@Rosenpin 안드로이드 6.0.1을 확인했습니다. 아직 작동 중입니다. Java 코드가 Android에서 Linux 셸 명령을 실행하려면 f.e.를 확인하십시오. http://stackoverflow.com/a/9194787/5108318 – pzmarzly

+0

굉장! 감사합니다. – Rosenpin

1

휴대 전화를 응원하지 않아도됩니다. 이것이 왜 그런지, 특히 SdkVersion 23+ 이후로 검색 결과를보기 위해 위치 서비스가 현재 필요한 이유가 확실하지 않습니다.

이 문제는 매우 드러납니다. https://code.google.com/p/android/issues/detail?id=185370

가장 좋은 대답은 응용 프로그램 개발자가 자신의 Google 대다수에 대한 원본 네트워크 위치를 군집하게하고 있다는 것입니다. OS 자체는 위치 서비스를 사용하지 않고도 검색 결과를 표시하는 데 아무런 문제가 없습니다.

위치 서비스가 비활성 상태 인 GPS없이 위치 서비스를 사용하도록 설정할 수 없습니다. 이 2 단계 셔플은 사용자에게 중요한 경험상의 문제입니다. 위치 서비스를 사용하도록 설정 한 다음 GPS를 사용 중지합니다.

이 공간에서 더 많은 잠금 장치가 작동합니다.