標籤:
光線感應器示範1
講了一大堆的理論,那麼以下的範例就來展示一下光線感應器的使用.為什麼充分展現光感的用法,我這個範例寫的很easy,僅僅寫了使用光感必須的代碼,然後用了幾個textView將光線變化的值展現到使用者介面。讓使用者能夠隨時的看到光度的變化。
以下是Activity的代碼:
java代碼:
- public class LightDemoActivity extends Activity implements SensorEventListener{
- /** Called when the activity is first created. */
- SensorManager sensorManager = null;//感應器管理器引用
- Sensor lightSensor = null;//光線感應器引用
- //各個文本的引用
- TextView accuracy_view= null;
- TextView value_0 = null;
- TextView value_1 = null;
- TextView value_2 = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //獲得感應器管理器執行個體
- sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
- //獲得光線感應器執行個體
- lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
- //獲得各個TextView
- accuracy_view = (TextView)findViewById(R.id.accuracy);
- value_0 = (TextView)findViewById(R.id.value_0);
- value_1 = (TextView)findViewById(R.id.value_1);
- value_2 = (TextView)findViewById(R.id.value_2);
- }
- @Override
- protected void onPause() {
- // TODO Auto-generated method stub
- super.onPause();
- //登出
- sensorManager.unregisterListener(this, lightSensor);
- }
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- //為感應器管理器注冊監聽
- sensorManager.registerListener(this,lightSensor, SensorManager.SENSOR_DELAY_NORMAL);
- }
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- // TODO Auto-generated method stub
- if(sensor.getType() == Sensor.TYPE_LIGHT){
- //設定將accuracy的值顯示到螢幕上
- accuracy_view.setText("accuracy:"+accuracy);
- }
- }
- @Override
- public void onSensorChanged(SensorEvent event) {
- // TODO Auto-generated method stub
- if(event.sensor.getType() == Sensor.TYPE_LIGHT){
- //將values的值顯示到螢幕上
- float[] values = event.values;
- value_0.setText("value[0]:"+values[0]);
- value_1.setText("value[1]:"+values[1]);
- value_2.setText("value[2]:"+values[2]);
- }
- }
- }
複製代碼
我們來看看解說的代碼:
java代碼:
- 以下解說代碼:
- //獲得感應器管理器執行個體
- sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
- //獲得光線感應器執行個體
- lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
- 這段代碼的作用是獲得感應器管理器引用,並獲得光感感應器應用。
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- //為感應器管理器注冊監聽
- sensorManager
- .registerListener(this,lightSensor, SensorManager.SENSOR_DELAY_NORMAL);
- }
- 這段代碼的作用在resume的時候又一次注冊監聽,開啟光感
- protected void onPause() {
- // TODO Auto-generated method stub
- super.onPause();
- //登出
- sensorManager.unregisterListener(this, lightSensor);
- }
- 這段代碼的作用是在暫停時登出監聽,關閉光感。由於感應器耗電,所以在不用的時候應該關閉他
- if(event.sensor.getType() == Sensor.TYPE_LIGHT)
- {
- //將values的值顯示到螢幕上
- float[] values = event.values;
- value_0.setText("value[0]:"+values[0]);
- value_1.setText("value[1]:"+values[1]);
- value_2.setText("value[2]:"+values[2]);
- }
- }
複製代碼
Android 深入解析光感應器(二)