要学习Android需要先了解android activity的生命历程,请看下图(他人博客复制):图中我们可以清晰可看到android的生命周期,onCreate() ,onStart(),onResume(),onPause(),以及onDestroy().

经过几个月的学习,我才发发现这几个生命历程不仅仅只是其生命历程,在程序运行的过程中起着关键的作用。在android运行过程中android系统会根据程序的生命状态运行相应的程序,比如创建的时候运行onCreate中的方法,onCreate中可以说是android程序的主体部分,主要的实现实在其中调用与执行,当activity销毁是会执行相应的onDestroy中的方法,总之在不同的生命状态调用或执行相应的--状态方法(笔者取名),注意一下便可以更好的控制android程序的执行。

言归正传,下面讲解android中光线传感器的简单调用。

第一步肯定是布局文件实现:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><--用于对传感器信息的显示--><TextViewandroid:id="@+id/sonsor_data"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20dp"android:text="TextView"/>
       <--光线传感器数据显示-->
 <TextView
        android:id="@+id/light_data"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20dp"android:text="TextView"/>
</LinearLayout>

这里设置了2个文本布局(原谅我不会用这个编辑),大家可以注意一下在xml中注释的写法<........>。

其次,是程序文件:

public class MainActivity extends Activity {SensorManager sensorManager;Sensor sensor;TextView sensordata;TextView lightdata;@Overrideprotected 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() {@Overridepublic void onSensorChanged(SensorEvent sensorEvent) {        //注意这个改变方法,会因为传感器只改变而执行float[] value= sensorEvent.values;lightdata.setText("light value"+value[0]);          //value包含3个值,x,y,z但对与光线传感器只有第一个值}@Overridepublic void onAccuracyChanged(Sensor sensor, int i) {}};@Overrideprotected  void onResume(){                                 //注意状态方法super.onResume();sensorManager.registerListener( sensorEventListener,sensor,SensorManager.SENSOR_DELAY_NORMAL);      //注册传感器}@Overrideprotected  void onPause(){                      //注意状态方法super.onPause();sensorManager.unregisterListener( sensorEventListener);           //取消注册          }
}

注释写的还算清楚,看懂应该没啥大问题。执行结果如下:   

关于Android学习,我的推荐书籍请看另一篇博客,谢谢观看!

android studio中光线传感器解析相关推荐

  1. android xml 未能解析文件,Android Studio中“无法解析符号R”

    这是一个非常古老的问题,但它仍然发生了很多,这里没有真正全面的答案. 我遇到这个问题的次数比我想承认的要多. 它可能是由各种各样的问题引起的,这些问题主要与您的项目结构不符合预期的问题有关. 这是我所 ...

  2. 【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )

    文章目录 一.Android Studio 中使用 CMake 编译单个 C++ 源文件 二.cmake_minimum_required 命令设置最小 CMake 版本 三.project 命令设置 ...

  3. Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发

    Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...

  4. android xml 未能解析文件,Android Studio提示“无法解析符号”,但项目已编译

    我在build.gradle中使用以下内容在AndroidStudio中导入twitter4j: dependencies { compile 'com.android.support:support ...

  5. android studio中崩溃无法查看log?

    android studio中崩溃无法查看log? https://www.zhihu.com/question/32024327 android studio中崩溃无法查看log? 用AS,App崩 ...

  6. 在Android Studio中的混淆debug与release

    一.有关混淆: 什么是代码混淆 Java是一种跨平台的.解释型语言,Java源代码编译成中间"字节码"存储于class文件中.由于跨平台的需要,Java字节码中包含了很多源代码信息 ...

  7. 【Android】解决Android Studio中的虚拟设备无法上网问题

    解决Android Studio中的虚拟设备无法上网问题 前言 : 使用AndroidStudio自带的虚拟设备在调试软件时, 发现无法联网,然后用虚拟设备自带的浏览器进行网页访问也是失败的, 因此可 ...

  8. 条形码、二维码扫一扫和生成二维码采用ZXing3.0开源库在android studio中实现

    在开始之前先给各位上个运行效果图 二维码QRcode全称Quick Response Code 通过在一个矩形区域内使用黑白像素来进行编码 高纠错性.高可用性.高识别性 四周面有3个大的方框和一个小的 ...

  9. android 混淆debug版本,在Android Studio中的混淆debug與release

    一.有關混淆: 什么是代碼混淆 Java是一種跨平台的.解釋型語言,Java源代碼編譯成中間"字節碼"存儲於class文件中.由於跨平台的需要,Java字節碼中包含了很多源代碼信息 ...

最新文章

  1. Fence Repair
  2. 3_数据分析—数据清洗及特征处理
  3. VM Depot 镜像新增系列III – 社交媒体,内容管理 与 项目协同系统
  4. win10禁止易升最有效的办法
  5. 首都师范 博弈论 5 4 2 Shapley值应用案例
  6. Fragment运行时错误
  7. 九州8508机顶盒安装软件教程记录
  8. MFC-CEdit派生一个只允许输入16进制数据的新类
  9. Win10查看屏保的存储位置
  10. JAVA毕设项目微博系统网站(java+VUE+Mybatis+Maven+Mysql)
  11. jmeter打开bat文件闪退
  12. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(串口发送函数)
  13. VS2017 生成DLL 供python 调用
  14. 五款堪称神器的网页翻译插件,不知道就亏大了!
  15. Mac用户Excel里Wind插件相关问题
  16. 2021-11-10----韩顺平Java入门第七天
  17. 《Effective Modern C++》学习笔记之条款二十五:针对右值引用实施std::move,针对万能引用实施std::forward
  18. [译] 用于 iOS 的 ML Kit 教程:识别图像中的文字
  19. Golang基础 一揽子方案
  20. 苹果笔记本好吗_在大学里,笔记本真的比台式电脑好吗?

热门文章

  1. 时间的朋友——观后感
  2. 特征选择 GBDT 特征重要度
  3. ReentrantLock 到底锁定了哪个对象了?
  4. OpenFeign学习
  5. ServiceHot ITSM助力天原集团IT运维信息化建设
  6. Vue2(九):浏览器本地存储、组件自定义事件、TodoList自定义事件
  7. 7段均衡器最佳参数_汽车音响7段均衡器设置,七段均衡器常用调校图
  8. iNFTnews | 百度进入Web3需要多久?
  9. 猫猫学IOS(四)UI之半小时搞定Tom猫
  10. 调节音量的各个方法——AudioManager的使用