Android_(传感器)获取手机中的传感器
传感器是一种检测装置,能够感受被测量的信息,并能将检测和感受到的信息按一定规律变换成电信号或其它所需形式的信息输出
Android操作系统中内置了很多的传感器(物理装置),能够探测、感受外界的信号、物理条件,并将得到的信息传递给其它的装置。
例如在部分游戏或软件可以自动识别屏幕的横竖屏来改变屏幕显示的布局
下面是Android支持的几种传感器:
运行截图:

程序结构:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.asus.gary_01.MainActivity"> <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="传感器操作!"
android:textSize="10pt" /> <Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="获取手机传感器信息"/> <TextView
android:id="@+id/textView"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="8pt"/>
</LinearLayout>
activity_main
package com.example.asus.gary_01; import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; import java.util.List; public class MainActivity extends AppCompatActivity { private TextView tx1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt1 = (Button)findViewById(R.id.button);
tx1=(TextView)findViewById(R.id.textView);
//从系统获得传感器管理器
final SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str;
//从传感器管理器中获得全部的传感器列表
List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
int i;
//给ViewText添加滚动条
tx1.setMovementMethod(ScrollingMovementMethod.getInstance());
//显示有多少个传感器
tx1.setText("经检测该手机有"+allSensors.size()+"个传感器,它们分别是:");
Sensor s;
//显示每个传感器的具体信息
for(i=0;i<allSensors.size();i++)
{
s=allSensors.get(i);
str="设备名称:"+s.getName();
switch(s.getType())
{
//加速传感器 Sensor.TYPE_ACCELEROMETER
case Sensor.TYPE_ACCELEROMETER:
tx1.setText(tx1.getText()+"\n"+i+"加速传感器accelerometer:\n"+str);
break;
//陀螺仪传感器 Sensor.TYPE_GYROSCOPE
case Sensor.TYPE_GYROSCOPE:
tx1.setText(tx1.getText()+"\n"+i+"陀螺仪传感器gyroscope:\n"+str);
break;
//环境光仪传感器 Sensor.TYPE_LIGHT
case Sensor.TYPE_LIGHT:
tx1.setText(tx1.getText()+"\n"+i+"环境光仪传感器light:\n"+str);
break;
//电磁场传感器 Sensor.TYPE_MAGNETIC_FIELD
case Sensor.TYPE_MAGNETIC_FIELD:
tx1.setText(tx1.getText()+"\n"+i+"电磁场传感器magnetic:\n"+str);
break;
//方向传感器 Sensor.TYPE_ORIENTATION:
case Sensor.TYPE_ORIENTATION:
tx1.setText(tx1.getText()+"\n"+i+"方向传感器orientation:\n"+str);
break;
//压力传感器 Sensor.TYPE_PRESSURE:
case Sensor.TYPE_PRESSURE:
tx1.setText(tx1.getText()+"\n"+i+"压力传感器pressure:\n"+str);
break;
//距离传感器 Sensor.TYPE_PROXIMITY:
case Sensor.TYPE_PROXIMITY:
tx1.setText(tx1.getText()+"\n"+i+"距离传感器proximity:\n"+str);
break;
//温度传感器 Sensor.TYPE_TEMPERATURE:
case Sensor.TYPE_TEMPERATURE:
tx1.setText(tx1.getText()+"\n"+i+"温度传感器temperature:\n"+str);
break; default:
tx1.setText(tx1.getText()+"\n"+i+"未知传感器:\n"+str);
break;
}
}
}
});
}
}
MainActivity
一、界面布局
两个TextView,一个Button,下方的TextView支持滚动操作
点击Button,获得手机传感器并显示在下方TextView上
给textview添加滚动条:传送门
xml代码:
//设置滚动条的方向
android:scrollbars="vertical"
java中设置
tx1=(TextView) findViewById(R.id.tv1);
//设置滚动方式
tx1.setMovementMethod(ScrollingMovementMethod.getInstance());
二、实现程序
//从系统获得传感器管理器
final SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
//从传感器管理器中获得全部的传感器列表
List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str;
//从传感器管理器中获得全部的传感器列表
List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
int i;
//给ViewText添加滚动条
tx1.setMovementMethod(ScrollingMovementMethod.getInstance());
//显示有多少个传感器
tx1.setText("经检测该手机有"+allSensors.size()+"个传感器,它们分别是:");
Sensor s;
//显示每个传感器的具体信息
for(i=0;i<allSensors.size();i++)
{
s=allSensors.get(i);
str="设备名称:"+s.getName();
switch(s.getType())
{
//加速传感器 Sensor.TYPE_ACCELEROMETER
case Sensor.TYPE_ACCELEROMETER:
tx1.setText(tx1.getText()+"\n"+i+"加速传感器accelerometer:\n"+str);
break;
//陀螺仪传感器 Sensor.TYPE_GYROSCOPE
case Sensor.TYPE_GYROSCOPE:
tx1.setText(tx1.getText()+"\n"+i+"陀螺仪传感器gyroscope:\n"+str);
break;
//环境光仪传感器 Sensor.TYPE_LIGHT
case Sensor.TYPE_LIGHT:
tx1.setText(tx1.getText()+"\n"+i+"环境光仪传感器light:\n"+str);
break;
//电磁场传感器 Sensor.TYPE_MAGNETIC_FIELD
case Sensor.TYPE_MAGNETIC_FIELD:
tx1.setText(tx1.getText()+"\n"+i+"电磁场传感器magnetic:\n"+str);
break;
//方向传感器 Sensor.TYPE_ORIENTATION:
case Sensor.TYPE_ORIENTATION:
tx1.setText(tx1.getText()+"\n"+i+"方向传感器orientation:\n"+str);
break;
//压力传感器 Sensor.TYPE_PRESSURE:
case Sensor.TYPE_PRESSURE:
tx1.setText(tx1.getText()+"\n"+i+"压力传感器pressure:\n"+str);
break;
//距离传感器 Sensor.TYPE_PROXIMITY:
case Sensor.TYPE_PROXIMITY:
tx1.setText(tx1.getText()+"\n"+i+"距离传感器proximity:\n"+str);
break;
//温度传感器 Sensor.TYPE_TEMPERATURE:
case Sensor.TYPE_TEMPERATURE:
tx1.setText(tx1.getText()+"\n"+i+"温度传感器temperature:\n"+str);
break;
default:
tx1.setText(tx1.getText()+"\n"+i+"未知传感器:\n"+str);
break;
}
}
}
});
Android_(传感器)获取手机中的传感器的更多相关文章
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager packageManager = this.getPackageManag ...
- Android_(自动化)获取手机存储卡的容量
手机上的存储卡是可以随时插拔的,每次插拔时会像操作系统总发送Action广播事件. 使用StatFs文件系统来获取MicroSD存储卡的剩余容量,在使用前先判断是否插入了存储卡,如果不存在则不于计算 ...
- iOS - 获取手机中所有图片
1 #import <AssetsLibrary/AssetsLibrary.h> /** 6 * ALAssetsLibrary.h 代表资源库(所有的视频,照片) 7 ALAssets ...
- 获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下: PackageManager packageManager = this.getPackageMana ...
- 获取应用版本号,版本名称,包名,AppName,图标,是否是系统应用,获取手机中所有应用,所有进程
PackageManager packageManager = getPackageManager(); PackageInfo packageInfo; = packageManager.getPa ...
- Android利用方向传感器获得手机的相对角度实例说明
http://www.jb51.net/article/37710.htm 1.android 的坐标系是如何定义x, y z 轴的 x轴的方向是沿着屏幕的水平方向从左向右,如果手机不是正方形的话,较 ...
- Android之——获取手机安装的应用程序
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47114331 前几篇有关Android的博文中.向大家介绍了几个项目中经常使用的有 ...
- Android 获取手机的厂商、型号、Android系统版本号等工具类(转载)
Android 获取手机的厂商.型号.Android系统版本号等工具类 1.获取手机制造厂商 2.获取手机型号 3.获取手机系统当前使用的语言 4.获取Android系统版本号 5.获取手机IMEI串 ...
- Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类
最近在开发中,需要用到一些系统信息,这里我把这些方法写成一个工具类方便以后复用,该工具类有以下6个功能: 1.获取手机制造厂商 2.获取手机型号 3.获取手机系统当前使用的语言 4.获取Android ...
随机推荐
- vue : 无法加载文件 C:\Users\lihongjie\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 htt ps:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + vue init webpack vue_p
以管理员方式打开powershell 运行命令:set-ExecutionPolicy RemoteSigned 出现: 执行策略更改执行策略可帮助你防止执行不信任的脚本.更改执行策略可能会产生安全风 ...
- 从入门到自闭之Python入门
python是一门解释型编程语言 变量名命名的规则: 变量名由字母,数字,下划线组成 变量名不能以数字开头 变量名要具有可描述性 变量名要区分大小写 变量名禁止使用python关键字 变量名不能使用中 ...
- 前端html+css标签简介(可能就我自己看的懂-。-)
标签集合 # html 文字标签:修改样式 -<font></font> -属性:size:大小,范围1-7,大于7时默认7 color:颜色,英文单词或者十六进制(editp ...
- Thinkphp5.0上传图片与运行python脚本
这里只体现了php可以通过批处理文件调用python脚本的效果 控制器代码 访问路径为127.0.0.1/index/index/upload. index模块,index控制器,upload方法. ...
- Nginx启动错误 Failed to read PID from file /run/nginx.pid 的处理方法
问题产生原因 因为 nginx 启动需要一点点时间,而 systemd 在 nginx 完成启动前就去读取 pid file 造成读取 pid 失败 解决方法 让 systemd 在执行 ExecSt ...
- JAVA网络编程入门
JAVA网络编程入门 软件结构 C/S结构 B/S结构 无论哪一种结构,都离不开网络的支持.网络编程,就是在网络的条件下实现机器间的通信的过程 网络通信协议 网络通信协议:通信双方必须同时遵守才能完成 ...
- JAVA高级语法
高级语法 第三章:面向对象和高级语法 实例化: 不实例化,就是一个空指针 注意,声明和实例化是两个过程.声明的过程是不分配内存空间的,只有实例化才会真正分配空间 对变量的分类 实例变量只有实例化之后才 ...
- html/form表单常用属性认识
1.form表单常用属性练习 <style> .form1 { margin: auto; height: 900px; width: 500px; text-align: center; ...
- Windows下安装Oracle 11g 2版 64位,从下载,安装,测试连接成功~!
首先进入oracle官网下载文件 点击进入 也可以选择结合PanDownload网页版使用百度链接下载 链接: https://pan.baidu.com/s/1UHJiaMXUrSG2IX793ng ...
- Linux下svn服务器的安装与配置-备份-恢复-计划任务
简介:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subvers ...