android studio中光线传感器解析
16lz
2021-01-23
要学习Android需要先了解android activity的生命历程,请看下图(他人博客复制):图中我们可以清晰可看到android的生命周期,onCreate() ,onStart(),onResume(),onPause(),以及onDestroy().
经过几个月的学习,我才发发现这几个生命历程不仅仅只是其生命历程,在程序运行的过程中起着关键的作用。在android运行过程中android系统会根据程序的生命状态运行相应的程序,比如创建的时候运行onCreate中的方法,onCreate中可以说是android程序的主体部分,主要的实现实在其中调用与执行,当activity销毁是会执行相应的onDestroy中的方法,总之在不同的生命状态调用或执行相应的--状态方法(笔者取名),注意一下便可以更好的控制android程序的执行。
言归正传,下面讲解android中光线传感器的简单调用。
第一步肯定是布局文件实现:
<--用于对传感器信息的显示-->
<--光线传感器数据显示-->
android:id="@+id/light_data" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="TextView"/>
这里设置了2个文本布局(原谅我不会用这个编辑),大家可以注意一下在xml中注释的写法<........>。
其次,是程序文件:
public class MainActivity extends Activity { SensorManager sensorManager; Sensor sensor; TextView sensordata; TextView lightdata; @Override protected void onCreate(Bundle savedInstanceState) { //注意状态方法 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sensorManager=(SensorManager) this.getSystemService(SENSOR_SERVICE); //传感器服务 sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //指定传感器 StringBuffer stringBuffer=new StringBuffer(); //构建StringBuilder对象 stringBuffer.append("\n sensor name"); stringBuffer.append(sensor.getName()); //获得传感器名称 stringBuffer.append("\n power(MA)"); stringBuffer.append(sensor.getPower()); //电量消耗 stringBuffer.append("\n type"); stringBuffer.append(sensor.getType()); //类型编号 stringBuffer.append("\n version"); stringBuffer.append(sensor.getVersion()); //版本 stringBuffer.append("\n maxRange"); stringBuffer.append(sensor.getMaximumRange()); sensordata=(TextView) findViewById(R.id.sonsor_data); lightdata=(TextView) findViewById(R.id.light_data); sensordata.setText(stringBuffer); } private SensorEventListener sensorEventListener=new SensorEventListener() { @Override public void onSensorChanged(SensorEvent sensorEvent) { //注意这个改变方法,会因为传感器只改变而执行 float[] value= sensorEvent.values; lightdata.setText("light value"+value[0]); //value包含3个值,x,y,z但对与光线传感器只有第一个值 } @Override public void onAccuracyChanged(Sensor sensor, int i) { } }; @Override protected void onResume(){ //注意状态方法 super.onResume(); sensorManager.registerListener( sensorEventListener,sensor,SensorManager.SENSOR_DELAY_NORMAL); //注册传感器 } @Override protected void onPause(){ //注意状态方法 super.onPause(); sensorManager.unregisterListener( sensorEventListener); //取消注册 }}
注释写的还算清楚,看懂应该没啥大问题。执行结果如下: 关于Android学习,我的推荐书籍请看另一篇博客,谢谢观看!
更多相关文章
- Android中传感器Sensor的使用
- Android中去除标题,全屏,获得屏幕方向及键盘状态
- Android基于TextView属性android:ellipsize实现跑马灯效果的方法
- Android离线安装方法
- 丢失Android系统库或者Conversion to Dalvik format failed with
- Android编程简单设置ListView分割线的方法