Android 深入解析光传感器(二)
讲了一大堆的理论,那么以下的样例就来展示一下光线感应器的使用.为什么充分展现光感的用法,我这个样例写的很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]);
- }
- }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。