Android傳感器--光照傳感器使用


Android 設備中有許多傳感器,其中有一個傳感器控制着你屏幕亮度的變化。當你在很暗的地方使用手機,你設備的屏幕會自動調暗,從而保護你眼睛。

起着這樣作用,Android是通過一款光照傳感器來獲取你周圍環境亮度的變化。光照傳感器一般在手機的頂部的位置。

要在程序中使用這款傳感器

(1)首先要獲取SensorManager傳感器管理器服務:SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);

(2)獲取光照傳感器:Sensor liaghtSensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)//Sensor.TYPE_LIGHT 代表光照傳感器

(3)注冊和監視光照傳感器:

sensorManager.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
//監視傳感器的改變

//accuracy 傳感器的精度 通過event.accuracy獲取

//values 傳感器傳回的數值  如event.values[0] 獲取光線強度lux

//timestamp 傳感器事件發生的時間(以納秒為單位)
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//對傳感器精度的改變做出反應
}
}, sensor, SensorManager.SENSOR_DELAY_NORMAL);

一個簡單的獲取光照傳感器光線強度lux的代碼:

public class MainActivity extends Activity {
	private TextView value_tv;
	private SensorManager sensorMamager;
	private Sensor sensor;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		value_tv=(TextView) findViewById(R.id.value_tv);
		//獲取SensorManager對象
		sensorMamager=(SensorManager) getSystemService(SENSOR_SERVICE);
		//獲取Sensor對象
		sensor=sensorMamager.getDefaultSensor(Sensor.TYPE_LIGHT);
		sensorMamager.registerListener(new SensorEventListener() {
			
			@Override
			public void onSensorChanged(SensorEvent event) {
				 //獲取精度  
	            float acc = event.accuracy;  
	            //獲取光線強度  
	            float lux = event.values[0]; 	
	            value_tv.setText("acc:"+acc+";"+"lux:"+lux);
			}
			
			@Override
			public void onAccuracyChanged(Sensor sensor, int accuracy) {
				// TODO 自動生成的方法存根
			}
		}, sensor, SensorManager.SENSOR_DELAY_NORMAL);
	}
}

對於一些程序,在改變當前程序屏幕亮度的時候,可以考慮加入光照傳感器的判斷。

因為大部分這些程序,會出現這樣的一個問題,當(在非自動亮度調節模式)設定屏幕亮度為一個值時,再設置為自動亮度調節模式的時候是無效的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM