Android调用传感器和震动
来源:互联网 发布:河北11选五任六数据 编辑:程序博客网 时间:2024/06/02 07:59
介绍Sensor类
SDK只有一句介绍“Class representing a sensor. Use getSensorList(int) to get the list of available Sensors.”,表示一个感应器的类,可以使用getSensorList方法(此方法属于接下来要讲的SensorManager)获得所有可用的感应器,该方法返回的是一个List
下面的列表显示了,Sensor所提供的所有服务
Constants
int TYPE_ACCELEROMETER A constant describing an accelerometer sensor type.
//三轴加速度感应器 返回三个坐标轴的加速度 单位m/s2
int TYPE_ALL A constant describing all sensor types.
//用于列出所有感应器
int TYPE_GRAVITY A constant describing a gravity sensor type.
//重力感应器
int TYPE_GYROSCOPE A constant describing a gyroscope sensor type
//陀螺仪 可判断方向 返回三个坐标轴上的角度
int TYPE_LIGHT A constant describing an light sensor type.
//光线感应器 单位 lux 勒克斯
int TYPE_LINEAR_ACCELERATION A constant describing a linear acceleration sensor type.
//线性加速度
int TYPE_MAGNETIC_FIELD A constant describing a magnetic field sensor type.
//磁场感应 返回三个坐标轴的数值 微特斯拉
int TYPE_ORIENTATION This constant is deprecated. use SensorManager.getOrientation() instead.
//方向感应器 已过时 可以使用方法获得
int TYPE_PRESSURE A constant describing a pressure sensor type
//压力感应器 单位 千帕斯卡
int TYPE_PROXIMITY A constant describing an proximity sensor type.
//距离传感器
int TYPE_ROTATION_VECTOR A constant describing a rotation vector sensor type.
//翻转传感器
int TYPE_TEMPERATURE A constant describing a temperature sensor type
//温度传感器 单位 摄氏度
此类中包含的方法都是get型的 用来获取所选sensor的一些属性,sensor类一般不需要new而是通过SensorManager的方法获得
加速度感应器
可以通过这个感应器获得三个浮点型
x-axis
y-axis
z-axis
X Y Z分别对应values[0]到[2]
X表示左右移动的加速度
Y表示前后移动的加速度
Z表示垂直方向的加速度 (测试时发现,将手机置于水平桌面稳定后 XY均为0 Z的值为9.4 约等于重力加速度,依次可以做一个简单的算法实现重力测力计。)
//申请震动权限<uses-permission android:name="android.permission.VIBRATE"/>
package com.zingon.ztc.gpstry;import android.content.Context;import android.hardware.SensorManager;import android.location.LocationManager;import android.os.Bundle;import android.os.Vibrator;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;public class MainActivity extends AppCompatActivity { TextView inf; //感应器管理器,所有感应器都可以通过它获得 SensorManager sm; //震动 Vibrator vb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inf=(TextView)findViewById(R.id.inf); //获得系统服务 sm= (SensorManager) getSystemService(Context.SENSOR_SERVICE); vb= (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); new SensorTry(sm,inf,vb).run(); }}
package com.zingon.ztc.gpstry;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Vibrator;import android.util.Log;import android.widget.TextView;/** * Created by ztc on 16-3-9. */public class SensorTry extends Thread{ SensorManager sm; String TAG = "sensor"; TextView inf; Vibrator vb; float x,y,z; public SensorTry(SensorManager sm,TextView inf,Vibrator vb){ this.sm=sm; this.inf=inf; this.vb=vb; } @Override public void run() { //获得加速度传感器 Sensor sensor=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); //注册监听器 sm.registerListener(myListener, sensor, SensorManager.SENSOR_DELAY_NORMAL); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } //监听器 SensorEventListener myListener=new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ //图解中已经解释三个值的含义 //当值变化超过 1 时,震动 if(Math.abs(x-event.values[0])>=1||Math.abs(y-event.values[1])>=1||Math.abs(z-event.values[2])>=1) { x = event.values[0]; y = event.values[1]; z = event.values[2]; Log.i(TAG,"onSensorChanged"); Log.i(TAG, "\n heading " + x); Log.i(TAG, "\n pitch " + y); Log.i(TAG, "\n roll " + z); inf.setText("设备重力传感器\n\nX:"); inf.append(String.valueOf((int) x)); inf.append("\nY:"); inf.append(String.valueOf((int) y)); inf.append("\nZ:"); inf.append(String.valueOf((int) z)); // 停止 开启 停止 开启 long[] pattern = {100, 400, 100, 400}; vb.vibrate(pattern, -1); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { Log.i(TAG, "onAccuracyChanged"); } };}
效果
手机移动,就会震动
- Android调用传感器和震动
- 震动传感器
- h5学习之调用手机底层硬件----加速度传感器和震动
- Android 调用手机震动
- Android 手机震动调用
- Android震动的调用
- Unity3d 调用Android震动
- android 调用震动
- unity调用Android Api实现短信发送和震动功能
- Android震动器Vibrator调用
- android 调用震动的例子
- android 实现一直震动和间歇震动
- Android下调用传感器
- 传感器-------摇一摇(声音,震动)
- 震动传感器设计
- Android 聚焦拍照和震动
- android实现震动和声音
- Android 震动 和 停止 代码
- Swift 基础学习(存储属性)
- Bundle display name – 真正显示到用户屏幕上的 App 名称
- 毕业设计第二十二天
- JS中对象和类的初步学习
- Xcode(7.2) 使用技巧(2)
- Android调用传感器和震动
- android TypedValue.applyDimension()的作用
- (一)基于PHP——WSDL的创建(NON-WSDL篇)
- 54-题目1207:质因数的个数
- MATLAB 常用函数笔记
- (二)基于PHP——简单的WSDL的创建(WSDL篇)
- ElasticSearch——自定义排序
- sublime3 eslint 安装
- BaseAdapter导致notifyDataSetChanged()无效的四个原因及处理方法