全部评论(1条)
-
- 一径梅苔 2016-05-25 00:00:00
- 一 介绍Sensor类 SDK只有一句介绍“Class representing a sensor. Use getSensorList(int) to get the list of available Sensors.”,表示一个感应器的类,可以使用getSensorList方法(此方法属于接下来要讲的SensorManager)获得所有可用的感应器,该方法返回的是一个List<Sensor> 下面的列表显示了,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的方法获得 二 介绍SensorManager类 SDK解释:“SensorManager lets you access the device's sensors. Get an instance of this class by calling Context.getSystemService() with the argument SENSOR_SERVICE. Always make sure to disable sensors you don't need, especially when your activity is paused. Failing to do so can drain the battery in just a few hours. Note that the system will not disable sensors automatically when the screen turns off. ” SensorManager 允许你访问设备的感应器。通过传入参数SENSOR_SERVICE参数调用Context.getSystemService方法可以获得一个sensor的实例。永远记得确保当你不需要的时候,特别是Activity暂定的时候,要关闭感应器。忽略这一点肯能导致几个小时就耗尽电池,注意当屏幕关闭时,系统不会自动关闭感应器。 三 常用的感应器 (1) 加速度感应器 可以通过这个感应器获得三个浮点型 x-axis y-axis z-axis X Y Z分别对应values[0]到[2] X表示左右移动的加速度 Y表示前后移动的加速度 Z表示垂直方向的加速度 下面先看一个基本的获取加速的demo,希望大家好好注意代码中的注释 做的很简单,就是在屏幕上显示三个方向上加速度的值
-
赞(6)
回复(0)
热门问答
- android加速度传感器怎么使用
2018-12-03 13:05:50
320
0
- android加速度传感器怎么使用
2016-05-24 22:15:02
307
1
- android加速度传感器怎么使用
2016-01-24 01:01:46
301
1
- android加速度传感器怎么去除重力的影响
2016-07-03 15:29:31
214
1
- android加速度传感器去除重力影响
- 这是android developer网站提供的方法 public void onSensorChanged(SensorEvent event) { // alpha is calculated as t / (t + dT) // with t, the low-pass filter's time-constant // and dT, the event delivery... 这是android developer网站提供的方法 public void onSensorChanged(SensorEvent event) { // alpha is calculated as t / (t + dT) // with t, the low-pass filter's time-constant // and dT, the event delivery rate final float alpha = 0.8; gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0]; gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1]; gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2]; linear_acceleration[0] = event.values[0] - gravity[0]; linear_acceleration[1] = event.values[1] - gravity[1]; linear_acceleration[2] = event.values[2] - gravity[2]; } 请高手解释下,还有这个gravity初始值是多少,不能理解啊,不应该根据角度关系将重力分解到各个轴,再计算吗? 展开
2013-08-22 00:54:14
385
6
- 如何使用加速度传感器在Android智能手机找到位移距离是多少
2018-11-15 05:12:09
335
0
- 如何使用加速度传感器在Android智能手机找到位移距离是多少
2018-12-03 12:04:24
282
0
- android 分解加速度传感器数值,过滤掉重力加速度
- 已知android 加速度传感器和方向传感器的,想将加速度传感器参数分解,过滤掉重力加速度,求实际的加速度是多少,有点难,求大神,加分
2018-12-01 20:44:16
308
0
- android获取加速度传感器的程序问题
- 我现在想获取手机中的加速度传感器的变化值,并将它存入txt文档中,程序应该不难,但是我写出来发现文件穿件不出来,不知道哪里出问题了求高手指点代码如下:packagecom.example.gets... 我现在想获取手机中的加速度传感器的变化值,并将它存入txt文档中,程序应该不难,但是我写出来发现文件穿件不出来,不知道哪里出问题了 求高手指点 代码如下 : package com.example.getsensorvalue; import java.io.*; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private SensorManager Sm; private String a=""; private String b=""; private TextView TV1; private Button Button1; private Button Button2; private File fos=null; private Writer out=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TV1=(TextView)findViewById(R.id.TV1); Button1=(Button)findViewById(R.id.Button1); Button1.setText(R.string.Button1); Button2=(Button)findViewById(R.id.Button2); Button2.setText(R.string.Button2); Sm=(SensorManager)getSystemService(SENSOR_SERVICE); Sensor Accelerate=Sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); Sm.registerListener(new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub b=b+event.values[0]+" "+event.values[1]+" "+event.values[2]+"\n"; a=event.values[0]+" "+event.values[1]+" "+event.values[2]+"\n"; TV1.setText(a); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } }, Accelerate,SensorManager.SENSOR_DELAY_NORMAL); Button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub b=""; } }); Button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub try{ fos=new File(Environment.getExternalStorageDirectory().getPath() +"accelerate.txt"); fos.delete(); fos.createNewFile(); out=new FileWriter(fos); out.write(b); out.close(); } catch(Exception e){ System.out.println(e); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. menu.add(0,1,1,R.string.exit); getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onContextItemSelected(MenuItem item) { // TODO Auto-generated method stub if(item.getItemId()==1){ finish(); } return super.onContextItemSelected(item); } } 展开
2017-06-30 01:41:58
367
1
- android lottie 怎么在eclipse上使用
2018-11-18 21:15:35
303
0
- android加速度传感器类型TYPE_LINEAR_ACCELERATION、 TYPE_ACCELEROMETER有什么区别?
2018-12-06 22:29:00
278
0
- 求大神分享[Android开发视频教程]05_04_加速度传感器的使用种子下载,谢谢
2013-10-16 13:52:27
315
1
- Android studio怎么管理Android虚拟机
2017-08-10 16:52:30
212
2
- Android studio怎么创建Android虚拟机
2017-08-24 07:28:11
391
3
- android模拟器,是否能模拟出加速度传感器的变化
- RTeclips上面的AVD是否能模拟加速度变化
2013-10-20 14:34:45
236
1
- [Android开发] SensorEvent,加速度传感器如何消除重力影响
- 下图截自:http://developer.android.com/reference/android/hardware/SensorEvent.html 滑条下拉3分之一处 我想要做到: 取出加速度传感器的3轴的值,并且对这3个值消除重力加速度的影响,Z终求出线性加速度。 问题1: 此监听函数里面的gravity[] 这个数组... 下图截自:http://developer.android.com/reference/android/hardware/SensorEvent.html 滑条下拉3分之一处 我想要做到: 取出加速度传感器的3轴的值,并且对这3个值消除重力加速度的影响,Z终求出线性加速度。 问题1: 此监听函数里面的gravity[] 这个数组是什么? 从哪里可以获取? 难道在本Class里面再创建一个SensorManager对象 sensor2,sensorType 为 Gravity? 并注册sensor2.registerListener 监听? 问题2: 接着问题1,这样我就注册了两个监听,一个Accelerator加速度传感器监听和Gravity重力监听。 那么onSensorChanged()这个监听函数中的 event.values[] 究竟是accelerator 的,还是gravity的? 展开
2018-11-15 08:58:30
320
0
- Android中的加速度传感器能用来测速度吗
- 有对加速度积分的应用吗,或者还可以读出位移
2013-06-12 11:52:09
304
1
- android toc 怎么生成
2018-12-10 01:19:24
244
0
- android toc 怎么生成
2016-10-24 02:03:30
332
1
- android toc怎么生成
2016-10-28 18:24:35
346
1
参与评论
登录后参与评论