일부 휴대 전화, 특히 나이가 있거나 느린 휴대 전화는 배터리 (예 : 배터리)를 보존하기 위해 일부 설정 ContentObserver 기능을 제거했습니다. 그리고 이것이 올바른 것을 기억한다면 이것은 구형 API의 기본 동작이었습니다. 이 같은 목적 추가에 필요한 밝기 레벨을 전달하여 밝기 설정을 변경 한 후
public class act_brightnesshelper extends Activity {
//----- Private Static Members -----
private static final String TAG = "act_brightnesshelper";
//----- Private Static Members END -----
//----- Private Members -----
private int brightnessLevel;
//----- Private Members END -----
//----- Activity Overrides -----
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState);
brightnessLevel = this.getIntent().getExtras().getInt("brightnessLevel");
}
@Override
public void onAttachedToWindow() {
Log.d(TAG, "onAttachedToWindow brightnessLevel = " + brightnessLevel);
super.onAttachedToWindow();
WindowManager.LayoutParams lp = getWindow().getAttributes();
try {
lp.screenBrightness = brightnessLevel/255f;
getWindow().setAttributes(lp);
} catch(Exception ex) {
//Do Nothing...
}
//Finish the Activity after 500ms...
Thread WaitThread = new Thread(){
@Override
public void run() {
try {Thread.sleep(500);} catch (InterruptedException e) {}
finish();
}
};
WaitThread.start();
}
//----- Activity Overrides END-----
}
과 전화 : : 작업 주위 수동으로이 같은 비 UI 활동을 통해 밝기 새로운 설정을 유발하는 것입니다
이것에 대한
Settings.System.putInt(<cnt resolver>, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
Settings.System.putInt(<cnt resolver>, Settings.System.SCREEN_BRIGHTNESS, <your level>);
Intent iBriHelper = new Intent(cx, act_brightnesshelper.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
iBriHelper.putExtra("brightnessLevel", <your level>);
context.startActivity(iBriHelper);
는이 같은 매니페스트에 활동을 선언해야 잘 될 수 있습니다 :
<activity android:name=".act_brightnesshelper"
android:theme="@style/Theme.Transparent"
android:configChanges="orientation"
android:noHistory="true"
android:excludeFromRecents="true">
</activity>
당신은 액티브 내부의 밝기를 변경하는 경우 그런 다음 직접이 작업을 수행 할 수 있습니다. 내가 제공하는 코드는 활동, 즉 앱 위젯의 컨텍스트 외부에서 밝기를 변경하기위한 것입니다. 영업 이익을 바탕으로
편집
당신이 라인 (164)에서 볼 수 있듯이의 안드로이드 소스 코드 here에서 BrightnessController.java 살펴 보겠습니다 코멘트 사용자가 시스템에 밝기 슬라이더를 변경할 때마다 호출 한 함수입니다 설정 ui. 174 행에서 밝기 설정은 Settings.system 클래스를 통해 업데이트되며 코드에서 수행됩니다. 그러나 170 번째 줄에는 setBrightness 함수 (193 번째 줄에 선언되어 있음)에 대한 호출이 있습니다.
setBrightness IPowerManager.Stub.asInterface (ServiceManager.getService ("power"))에 대한 호출 인 setTemporaryScreenBrightnessSettingOverride를 호출하여 밝기 레벨을 설정합니다. 실제로 안드로이드 자체가 내가 제안한 것을 수행하고 있습니다.액티비티 호출
lp.screenBrightness = brightnessLevel/255f;
getWindow().setAttributes(lp);
후는 실제로 데이터베이스에서 설정 단계 : 동등한 것을 보인다는 시스템 콜을 통해 휘도 레벨을 설정한다. 그래서 실제로 제가 제안한 것은 해결 방법이 아니지만 시스템이 그것을하는 방법입니다. 나는 당신이 언급하는 장치에 구현 오류가 있다고 생각하지 않지만 오히려 하드웨어 자체와 관련이 있고 안드로이드가 하드웨어와 직접 통신하지 않기 때문에 (see here) 하드웨어 나 하드웨어가 어떻게 될지 모른다. 운전자는이 전화기에서 설계되었습니다.
희망이 도움이 ...
구체적으로 작성하십시오. API 호출은 무엇이며 문제의 기기에서 Android 버전이 실행되고 있습니까? –