[英]Android changing brightness using sensor
I have an app through which I can change the brightness of the device manually. 我有一个应用程序,通过它可以手动更改设备的亮度。 I want to do that using the sensor.
我想使用传感器做到这一点。 What code do I have to add?
我必须添加什么代码? Also what changes I have to made in the manifest?
另外,我必须对清单进行哪些更改?
Here it is my code: 这是我的代码:
package com.example.brightnessdemo;
import android.os.Bundle;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.provider.Settings.System;
import android.app.Activity;
import android.content.ContentResolver;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity
{
private SeekBar brightbar;
private int brightness;
private ContentResolver cResolver;
private Window window;
TextView tv;
//float BackLightValue = 0.5f;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
brightbar=(SeekBar)findViewById(R.id.seekBar1);
tv=(TextView)findViewById(R.id.textView1);
cResolver=getContentResolver();
window=getWindow();
brightbar.setMax(100);
brightbar.setKeyProgressIncrement(1);
try
{
brightness=System.getInt(cResolver, System.SCREEN_BRIGHTNESS);
}
catch (SettingNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
brightbar.setProgress(brightness);
int SysBackLightValue = (int)(brightness);
android.provider.Settings.System.putInt(getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS,SysBackLightValue);
brightbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onStopTrackingTouch(SeekBar seekBar)
{
System.putInt(cResolver, System.SCREEN_BRIGHTNESS, brightness);
android.view.WindowManager.LayoutParams layoutpars = window.getAttributes();
layoutpars.screenBrightness = brightness;
window.setAttributes(layoutpars);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar)
{
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser)
{
brightness = progress;
tv.setText(""+brightness);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
You can use this to set according to the changed seekbar value 您可以使用它根据更改后的搜寻栏值进行设置
WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = brightness;
getWindow().setAttributes(layout);
If you need it consistent then you can go with IHardwareService interface Here is an example that i found 如果需要一致,则可以使用IHardwareService接口,这是我发现的一个示例
http://www.tutorialforandroid.com/2009/01/changing-screen-brightness.html http://www.tutorialforandroid.com/2009/01/changing-screen-brightness.html
package com.test;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
public class Test extends Activity implements SensorEventListener{
private SensorManager mSensorManager;
private Sensor mLight;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
}
@Override
protected void onResume() {
mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);
super.onResume();
}
@Override
protected void onPause() {
mSensorManager.unregisterListener(this);
super.onPause();
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
if(sensor.getType() == Sensor.TYPE_LIGHT){
Log.i("Sensor Changed", "Accuracy :" + accuracy);
}
}
public void onSensorChanged(SensorEvent event) {
if( event.sensor.getType() == Sensor.TYPE_LIGHT){
Log.i("Sensor Changed", "onSensor Change :" + event.values[0]);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.