获取手机中的传感器的步骤为:
- 获取SensorManager对象
- 执行SensorManager对象的getDefaultSensor()方法获取Sensor对象,这里getDefaultSensor()方法要传递一个参数,指定具体的传感器类型
- 获取Sensor对象中的各种属性
下面给出获取手机内传感器的实现代码:
Log.d("BruceZhang", "以下是你的手机里的传感器:");
List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);
Log.d("BruceZhang", "--->");
for(Sensor sensor: sensors){
Log.d("BruceZhang", sensor.getName());
}
//通过使用getDefaultSensor方法获得一个特定的传感器
// Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
在知道怎么获取传感器之后,我们需要使用程序获取传感器的值,下面给出实例代码:
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(new SensorEventListener() {
/*
* SensorEvent event
* 一旦传感器感知外界条件发生变化,就会把相应的数据传递给这个对象
* 一般会把这个方法放在onCreate里,不用手动的去获取
*/
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float auc=event.accuracy;
//这里的第一个元素代表的是光线的强度
float lux=event.values[0];
Log.d("BruceZhang", auc+"");
Log.d("BruceZhang", lux+"");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}, sensor, SensorManager.SENSOR_DELAY_NORMAL);
//SensorManager.SENSOR_DELAY_NORMAL
//这个参数就是设置传感器的采样率
}
传感器有一系列的属性:
1、传感器的采样率
a) SENSOR_DELAY_NOMAL (200000微秒)
b) SENSOR_DELAY_UI (60000微秒)
c) SENSOR_DELAY_GAME (20000微秒)
d) SENSOR_DELAY_FASTEST (0微秒)
2、传感器的属性
a) 传感器的名称
b) 传感器制造商
c) 传感器功率
d) 传感器的resulotion
获取这些属性的方法也很简单,代码如下:
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
//传感器的名字
String sensorName=event.sensor.getName();
//传感器制造商的名字
String sensorVendor=event.sensor.getVendor();
//传感器的分辨率,传感器所能识别的最小的精度是多少
float sensorRevolution=event.sensor.getResolution();
//传感器的功率
float sensorPower=event.sensor.getPower();
//传感器取得数据的时间是多少
double timeStamp=event.timestamp;
//打印数据
Log.d("BruceZhang", sensorName+"");
Log.d("BruceZhang", sensorVendor+"");
Log.d("BruceZhang", sensorRevolution+"");
Log.d("BruceZhang", sensorPower+"");
Log.d("BruceZhang", timeStamp+"");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
下面实现的这个实例实现了上述内容的综合:
实例的完整代码如下:
/*
* 传感器会通过传感器事件把值传给用户
* 所以,我们的应用程序是被动的,等待传感器把数据传递给SensorEvent对象
*/
public class MainActivity extends Activity {
private Button button;
private Button button2;
private Button button3;
private SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到SensorManager对象
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
button=(Button)findViewById(R.id.sensorButton);
button2=(Button)findViewById(R.id.lightButton);
button3=(Button)findViewById(R.id.lightButton2);
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
//传感器的名字
String sensorName=event.sensor.getName();
//传感器制造商的名字
String sensorVendor=event.sensor.getVendor();
//传感器的分辨率,传感器所能识别的最小的精度是多少
float sensorRevolution=event.sensor.getResolution();
//传感器的功率
float sensorPower=event.sensor.getPower();
//传感器取得数据的时间是多少
double timeStamp=event.timestamp;
//打印数据
Log.d("BruceZhang", sensorName+"");
Log.d("BruceZhang", sensorVendor+"");
Log.d("BruceZhang", sensorRevolution+"");
Log.d("BruceZhang", sensorPower+"");
Log.d("BruceZhang", timeStamp+"");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(new SensorEventListener() {
/*
* SensorEvent event
* 一旦传感器感知外界条件发生变化,就会把相应的数据传递给这个对象
* 一般会把这个方法放在onCreate里,不用手动的去获取
*/
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float auc=event.accuracy;
//这里的第一个元素代表的是光线的强度
float lux=event.values[0];
Log.d("BruceZhang", auc+"");
Log.d("BruceZhang", lux+"");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}, sensor, SensorManager.SENSOR_DELAY_NORMAL);
//SensorManager.SENSOR_DELAY_NORMAL
//这个参数就是设置传感器的采样率
}
});
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.d("BruceZhang", "以下是你的手机里的传感器:");
List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);
Log.d("BruceZhang", "--->");
for(Sensor sensor: sensors){
Log.d("BruceZhang", sensor.getName());
}
//通过使用getDefaultSensor方法获得一个特定的传感器
// Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
分享到:
相关推荐
在Android开发中,指南针应用是一种常见的功能,它利用设备内置的传感器来指示地球的磁场北。本项目提供了两种不同的实现方式,分别是基于方向传感器(Orientation Sensor)和基于加速度传感器与磁场传感器...
在Android开发中,E-compass(电子指南针)传感器是一个重要的组成部分,它允许应用获取设备的方向信息,基于地球的磁场来指示北向。本话题将深入探讨如何利用Android的高级Canvas绘图技术来呈现E-compass的数据,并...
通过分析和学习这个源代码,开发者能够掌握如何在Android应用中有效使用姿态传感器,创建动态响应的用户界面,或者开发依赖于设备位置和运动的应用。同时,也能理解如何优化传感器数据处理,提高应用的性能和用户...
`点这里查看更多优质源码~.url`可能是一个链接,指向更多Android开发示例或资源库。 总的来说,这个压缩包提供了学习和实践Android加速度传感器使用的基础,包括如何获取传感器数据以及如何处理这些数据。通过阅读...
这份"安卓开发-android姿态传感器源代码.zip.zip"压缩包很可能是包含了一套完整的示例代码,用于演示如何在Android应用中接入并使用姿态传感器。以下是对这个主题的详细讲解: 1. **姿态传感器简介**: - 姿态...
在Android开发中,Sensor传感器是实现设备智能化和交互性的重要组成部分。本文将深入探讨如何在Android Studio环境下利用Sensor API进行传感器编程,这是Android开发-Sensor传感器系列教程的第二部分。 一、Android...
在Android开发中,Sensor传感器是实现许多有趣功能的关键部分,比如运动检测、环境感知等。本文将深入探讨如何在Android Studio环境下使用Sensor API来实现一个基础的“摇一摇”功能,让应用能够识别用户的摇动操作...
在Android系统中,重力传感器是一种重要的硬件组件,它能够实时监测设备在三维空间中的重力分量。这个压缩包“Android代码-重力传感器源码.zip”很可能包含了一个示例项目,展示了如何在Android应用中接入并使用重力...
Android开发实战经典_041105_传感器视频教程.zip
"基于 Android 的传感器技术应用开发" Android 作为一个流行的移动操作系统,具有广泛的应用前景,特别是在智能手机领域。随着智能手机的普及,基于 Android 的传感器技术应用开发也得到了越来越多的关注。本文...
这个“Android高级应用源码-android姿态传感器源代码”压缩包显然包含了一个示例项目,展示了如何利用Android SDK中的传感器API来获取并处理姿态传感器的数据。以下是关于这个主题的详细知识点: 1. **姿态传感器**...
在Android移动开发中,加速度传感器(Accelerometer)是一个至关重要的硬件组件,它能够感知设备在三维空间中的运动和方向变化。这个传感器被广泛应用在各种创新功能中,其中最为人所知的就是微信的“摇一摇”功能。...
下面将详细介绍加速度传感器在Android中的工作原理、API使用以及相关开发实践。 首先,加速度传感器是Android系统中的Sensor服务提供的一部分,通过`SensorManager`类来访问。在Android的`Sensor`类中,加速度...
Android设备上的位置传感器,如GPS、Wi-Fi和蜂窝网络,能够提供实时的位置信息,这对于开发定位应用或者进行移动设备的数据分析非常有用。 首先,我们需要了解MATLAB的Android Sensor Interface。这个接口允许...
在Android平台上进行应用程序开发时,加速度传感器是一个重要的硬件接口,它允许开发者获取设备的运动和方向变化数据。本教程将深入探讨如何在Android中利用加速度传感器来创建功能丰富的应用。 1. **加速度传感器...
在Android平台上,传感器技术是移动开发中的重要组成部分,它使得设备能够感知并处理周围环境的各种信息,例如重力、加速度、陀螺仪、光线等。"平衡球-android demo-传感器"是一个很好的学习实例,展示了如何在...
在Android平台上,姿态传感器是移动设备中非常关键的一部分,它能够提供设备的三维空间方向信息。这份"Android高级应用源码-android...通过学习和理解这段代码,你可以提升在Android平台上的高级传感器应用开发能力。