‘壹’ 如何获取android设备所支持的传感器种类
参考如下:
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE); //获取系袜源统的传感器服务并创建实例
List<Sensor> list = sm.getSensorList(Sensor.TYPE_ALL); //获告侍态取传感器的集合
for (Sensor sensor:list){
tv.append(sensor.getName() + "\n"); //把传感器种类显示在TextView中谈码
}
}
}
‘贰’ android加速度传感器怎么使用
玩游戏的时候才能感觉出来
‘叁’ Android-浅谈传感器
Android传感器 ,对于一般人来说会比较陌生。使用 Android 设备的小伙伴,最常见是我们手机里面的步数记录、指南针,这两个功能就是通过传感器组件开发出来的。
只要在设备的硬件允许和条件支持的情况下,我们就可以通过 Android传感器 开发相应的功能需求。主要的场景有 加速度 、 室温 、 重力 、 陀螺仪 、 运动检测 、 心率 、 线性加速度模清 、 磁场 、 光亮 、 设备朝向 、 步伐旦手前检测 、 靠近距离薯昌 等。
‘肆’ android摄像头加传感器——测距
首先创建一个传感器管理器,注册一个传感器监听器。
管理器用来管理传感器以及创建各种各样的传感器。
监听器用来监视传感器的变化并且进行相应的操作。
在监听器里获取∠a的值,在屏幕上设定此时摄像头的高度h,使用正切函数就可以求得x啦。
当我们银岁平躺着,手机摄像头处于脚尖处,摄像头对准头顶,就可拍搏喊以测袭野出身高啦~~~一般人我不告诉Ta
项目地址:猛戳→ 测身高
‘伍’ 安卓下怎么驱动加速度传感器
目前很多应用已经实现了摇一摇功能,这里通过讲解该功能的原理及实现回顾一下加速度传感器的使用:
1.首先获得传感器管理器的实例
sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
2.通过传感器管理器获得加速传感器
accelerateSensor = getSensorManager(context).getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
3.注册加速传感器的监听器
sensorManager.registerListener(listener, sensor, rate)
参数说明:
listener:加速传感器监听器实例
sensor :加速传感器实例,实现摇一摇使用的是accelerateSensor
rate :感应器反应速度,有四个常量共选择
SENSOR_DELAY_NORMAL:匹配屏幕方向型闭的变化,默认传感器速度
SENSOR_DELAY_UI:匹配用户接口
如果更新UI建议使用SENSOR_DELAY_GAME:
匹配游戏,游戏开发建议使用SENSOR_DELAY_FASTEST.:匹配所能达到的最快
根据情况选择,一般情况选择第一种就可以
传感器监听器:SensorEventListener有两个回调方法
onSensorChanged(SensorEvent event)和onAccuracyChanged(Sensor sensor, int accuracy)
第一个是传感器值变化的相应方法
第二个是反应速度变化的相应方法
两个方法会同时被调用
onSensorChanged(SensorEvent event) 介绍
nSensorChanged(SensorEvent event)
event的实例的values变量非常重要,根据传感器的不同,里面的值代表的含义也不相同,以加速传感器为例:
values该变量的类型是float[]数组,最多有三个元素:
float x = values[0] 代表X轴
float y = values[1] 代表Y轴
float z = values[2] 代表Y轴
X轴的方向是沿着屏幕的水平方向从左向右。如果手机不是正方形的话,较短的边需要水平放置迟租磨,较长的边需要垂直放置。Y轴的方向是从屏幕的左下角开始沿着屏幕的垂直方向指向屏幕的顶端。将手机平放在桌子上,Z轴的方向是从手机里指向天空。
我们判断手机是否摇一摇码斗,只要x,y,z轴,达到设定的阀值时就表示摇一摇。
@Override
public void onSensorChanged(SensorEvent event) {
int sensorType = event.sensor.getType();
//values[0]:X轴,values[1]:Y轴,values[2]:Z轴
float[] values = event.values;
float x = values[0];
float y = values[1];
float z = values[2];
Log.i(TAG, "x:" + x + "y:" + y + "z:" + z);
Log.i(TAG, "Math.abs(x):" + Math.abs(x) + "Math.abs(y):" +Math.abs(y) + "Math.abs(z):" + Math.abs(z));
if(sensorType == Sensor.TYPE_ACCELEROMETER){
int value = 15;//摇一摇阀值,不同手机能达到的最大值不同,如某品牌手机只能达到20
if(x >= value || x <= -value || y >= value || y <= -value || z >= value || z <= -value){
Log.i(TAG, "检测到摇动");
//播放动画,更新界面,并进行对应的业务操作
}
}
很早之前我写过:
为了增强程序的健壮性,需要判断并防止摇一摇事件同一时间多次被触发:
float[] values = event.values;
float x = values[0];
float y = values[1];
float z = values[2];
Log.i(TAG, "onSensorChanged:" + "x:" + x + ",y:" + y + ",z:" + z);
if (x >= 15 || x <= -15 || y >= 15 || y <= -15 || z >= 15 || z <= -15) {
if (allowShake()) {//判断是否为重复晃动
Log.e(TAG, "摇一摇,摇一摇");
new AllowShake().start();
} else {
Log.e(TAG, "2s 后再次允许摇动");
}
‘陆’ Android 摇一摇功能简单实现
目前市场上很多应用都有着摇一摇功能,晃动手机就能够达到页面跳转等效果,本期我们实现一个简单的摇一摇功能Android demo。
在实现摇一摇功能之前,我们首先对Android 平台的传感器进行简单说明。
多数的Android手机中都有着内置传感器,用来测量运动,屏幕方向和各种环境条件。这些传感器能够提供比较高精度的原始数据,对于设备的定位,三维移动及设备周围环境的变化能够进行监测。
那么Android平台支持的传感器有哪些呢?
通常来说,Android平台支持的三大类:
显然摇一摇动作时需要对动态传感器进行监听,通过对传感器获得的加速度参数进行判断,判断用户是否摇动了手机。
从上述的传感器类型上来看,我们需要使用的是动态传感器。
Android平台支持多种动态传感器,常用的几项如下:
上面便是常见的Android支持的动态传感器了,详细说明可以参考 Android传感器说明官方文档 .
本文着重说明的是 TYPE_ACCELEROMETER 来实现摇一摇监听。
首先我们需要实现一个加速度传感器的实例:
然后我们需要设置一个监听,通过计算三维方向上的加速度变化率来决定摇一摇动作是否要被触发:
其中iSensorCallBack是我们设置的一个监听回调:
这样摇一摇动作的监听及回调就基本设置完成了。
但是在使用动态传感器时还需要注意传感器的监听注册及取消注册,API为我们提供了方法:
这样的话我们就可以在需要使用摇一摇功能是调用 register 方法注册,而在需要停止摇一摇监听时调用 unregister 移除注册。
如上,这样我们就实现了一个摇一摇简单demo。
Android传感器说明官方文档
‘柒’ Android 中有哪些传感器的数据是可以分享的
目前 Android 设备支持的传感器类型如下:
TYPE_ACCELEROMETER 加速度传感器又叫 G-sensor,该数值包含地心引力的影响,单位是 m/s2,测量应用于设备 x 、y、z 轴上的加速度。
将手机平放在桌面上,x 轴默认为0,y 轴默认0,z 轴默认9.81。
将手机朝下放在桌面上,z 轴为-9.81。
将手机向左倾斜,x 轴为正值。
将手机向右倾斜,x 轴为负值。
将手机向上倾斜,y 轴为负值。
将手机向下倾斜,y 轴为正值。
TYPE_AMBIENT_TEMPERATURE 温度传感器,单位是 ℃,返回当前的温度。
TYPE_GAME_ROTATION_VECTOR 用来探测运动而不必受到电磁干扰的影响,因为它并不依赖于磁北极。
TYPE_GEOMAGNETIC_ROTATION_VECTOR 地磁旋转矢量传感器,提供手机的旋转矢量,当手机处于休眠状态时,仍可以记录设备的方位。
TYPE_GRAVITY 重力传感器简称 GV-sensor,单位是 $m/s^2%,碰激测量应用于设备X、Y、Z轴上的重力。在地球上,重力数值为9.8,
TYPE_GYROSCOPE 陀螺仪传感器叫做Gyro-sensor,返回x、y、z三轴的角加速度数据。单位是 radians/second。
TYPE_GYROSCOPE_UNCALIBRATED 未校准陀螺仪传感器,提供原始的、未校准、补偿的陀螺仪数据,用于后期处理和融合定位数据。
TYPE_LIGHT 光线感应传感器检测实时的光线强度,光强单位是lux,其物理意义是照射到单位面积上的光通量。
TYPE_LINEAR_ACCELERATION 线性加速度传感器简称LA-sensor。线性加速度传感器是加速度传感器减去重力影响获取的数据。单位是 m/s2。
TYPE_MAGNETIC_FIELD 磁力传感器简称为M-sensor,返回 x、y、z 三轴的环境磁场数据。该数值的单位是微特斯拉(micro-Tesla)嫌察,用uT表示。单位也可以是高斯(Gauss),1Tesla=10000Gauss。硬件上一般没有独立的磁力传感器,磁力数据由电子罗盘传感器提供(E-compass)。电子罗盘传感器同时提供方向传感器数据。
TYPE_MAGNETIC_FIELD_UNCALIBRATED 未校准磁力传感器,提供原始的、未校准的磁场数据。
TYPE_ORIENTATION 方向传感器简称为O-sensor,返回三轴的角度数据,方向数据的单位是角度。为了得到精确的角度数据,E-compass 需要获取 G-sensor 的数据,经过计算生产 O-sensor 数据,否则只能获取水平方向的角度。方向传感器提供三个数据,分别为azimuth、pitch和roll:
azimuth: 方位,返回水平时磁北极和 Y 轴的夹角,范围为0°至360°。0°为北,90°为东,180°为南,270°为西。
pitch: x 轴和水平面的芹吵茄夹角,范围为-180°至180°。当 z 轴向 y 轴转动时,角度为正值。
roll: y 轴和水平面的夹角,由于历史原因,范围为-90°至90°。当 x 轴向 z 轴移动时,角度为正值。
TYPE_PRESSURE 压力传感器,单位是hPa(百帕斯卡),返回当前环境下的压强。
TYPE_PROXIMITY 接近传感器检测物体与手机的距离,单位是厘米。一些接近传感器只能返回远和近两个状态,因此,接近传感器将最大距离返回远状态,小于最大距离返回近状态。
TYPE_RELATIVE_HUMIDITY 湿度传感器,单位是 %,来测量周围环境的相对湿度。
TYPE_ROTATION_VECTOR 旋转矢量传感器简称RV-sensor。旋转矢量代表设备的方向,是一个将坐标轴和角度混合计算得到的数据。RV-sensor输出三个数据:
x*sin(theta/2)
y*sin(theta/2)
z*sin(theta/2)
sin(theta/2)是 RV 的数量级。RV 的方向与轴旋转的方向相同。RV 的三个数值,与cos(theta/2)组成一个四元组。
TYPE_SIGNIFICANT_MOTION 特殊动作触发传感器。
TYPE_STEP_COUNTER 计步传感器,用于记录激活后的步伐数。
TYPE_STEP_DETECTOR 步行检测传感器,用户每走一步就触发一次事件。
TYPE_TEMPERATURE 温度传感器,目前已被TYPE_AMBIENT_TEMPERATURE替代。
作者:肥肥鱼
‘捌’ Android传感器的使用
目前每部Android 手机里面都会内置有许多的传感器,它们能够监测到各种发生在手机上的物理事件,而我们只要灵活运用这些事件就可以编写出很多好玩的应用程序。下面我们开始简单的传感器使用的学习。
1.手机内置的传感器是一种微型的物理设备,它能够探测、感受到外界的信号,并按一定规律转换成我们所需要的信息。
2.Android手机通常会支持多种类型的传感器,如光照传感器,地磁传感器,压力传感器,温度传感器。
3.Android手机只是负责将这些传感器所输出的信息传递给我们,至于具体如何去利用这些信息就要我们在程序中具体去利用这些得到的数据去处理了。
从Android1.5开始,系统内置了对多达八种传感器的支持,他们分别是:加速度传感器(accelerometer)、陀螺仪(gyroscope)、环境光照传感器(light)、磁力传感器(magnetic field)、方向传感器(orientation)、压力传感器(pressure)、距离传感器(proximity)和温度传感器(temperature)。
1.Android所有的传感器都归传感器管理器SensorManager管理,如下是获得传感器的方法:
2.获取某个或者某些传感器的方法有如下三种:
第一种:获取某种传感器:
第二种:获取某种传感器列表:
第三种:获取所有传感器列表:
‘玖’ android加速度传感器怎么使用
使用加速度传感器与其他传感器的方法大致相同,通过调用系统API就可以实现。分为以下几步:
1.获取SensorManager
2.使用SensorManager获取加速度传感器
3.创建自定义的传感器监听函数,并注册
4.相对应的,在合适位置实现注销监听器的调用
简单的代码如下:
public class MainActivity extends Activity {
private static final String TAG = "SensorTest";
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private TestSensorListener mSensorListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
// 初始化传感器
mSensorListener = new TestSensorListener();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
@Override
protected void onResume() {
super.onResume();
// 注册传感器监听函数
mSensorManager.registerListener(mSensorListener, mAccelerometer, SensorManager.SENSOR_DELAY_UI);
}
@Override
protected void onPause() {
super.onPause();
// 注销监听函数
mSensorManager.unregisterListener(mSensorListener);
}
private void initViews() {
mSensorInfoA = (TextView) findViewById(R.id.sensor_info_a);
}
class TestSensorListener implements SensorEventListener {
@Override
public void onSensorChanged(SensorEvent event) {
// 读取加速度传感器数值,values数组0,1,2分别对应x,y,z轴的加速度
Log.i(TAG, "onSensorChanged: " + event.values[0] + ", " + event.values[1] + ", " + event.values[2]);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.i(TAG, "onAccuracyChanged");
}
}
}