学习笔记(九)——传感器与LBS
来源:互联网 发布:笔记本电脑软件打开慢 编辑:程序博客网 时间:2024/05/03 14:13
手机中有很多传感器,比如说距离传感器,光线传感器等等。
这里有一些常见的传感器类型:
- SENSOR_TYPE_ACCELEROMETER //加速度
- SENSOR_TYPE_MAGNETIC_FIELD //磁力
- SENSOR_TYPE_ORIENTATION //方向
- SENSOR_TYPE_GYROSCOPE //陀螺仪
- SENSOR_TYPE_LIGHT //光线感应
- SENSOR_TYPE_PRESSURE //压力
- SENSOR_TYPE_TEMPERATURE //温度
- SENSOR_TYPE_PROXIMITY //接近
- SENSOR_TYPE_GRAVITY //重力
- SENSOR_TYPE_LINEAR_ACCELERATION//线性加速度
- SENSOR_TYPE_ROTATION_VECTOR //旋转矢量
关于这些传感器的具体用法,我也是参考的别人的资料,大家有兴趣可以自己去实践一下;http://www.cnblogs.com/tyjsjl/p/3695808.html
了解了传感器的用法我们在Android Studio中实际操作一下:
Android对每个设备的传感器都进行了抽象,SensorManger类用来控制传感器,Sensor用来描述具体的传感器,SensorEventListener用来监听传感器值的改变。
//第一步:获得SensorManager对象,返回的就是一个硬件设备的控制器 SensorManager manager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); //第二步:获得特定的传感器(这里获得是方向传感器)Sensor sensor=manager.getDefaultSensor(Sensor.TYPE_ORIENTATION);//第三步:创建SensorEventListener监听传感器的值改变并且做出相应的动作(需要重写两个方法)//传感器的值改变调用此方法@Override public void onSensorChanged(SensorEvent event) { }/传感器的精确度改变调用此方法 @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } //第四步:注册传感器事件监听事件 //注册通常是在onResume与用户进行交互时注册manager.registerListener(mySensorListener, sensor, SensorManager.SENSOR_DELAY_NORMAL); //在onPause中要进行解绑,否则会很耗电manager.unregisterListener(this);
这样就完成了,是不是很简单;下面是一个指南针的例子:
import android.app.Activity;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.view.animation.Animation;import android.view.animation.RotateAnimation;import android.widget.ImageView;public class MainActivity extends Activity implements SensorEventListener{ private ImageView imageView; private SensorManager manager; private float predegree = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.imageView); imageView.setKeepScreenOn(true);//保持屏幕亮度 ////获取系统服务(SENSOR_SERVICE)返回一个SensorManager 对象 manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); } @Override protected void onResume() { Sensor sensor=manager.getDefaultSensor(Sensor.TYPE_ORIENTATION); //应用在前台时候注册监听器 manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME); super.onResume(); } @Override protected void onPause() { super.onPause(); manager.unregisterListener(this); } @Override public void onSensorChanged(SensorEvent event) { float degree = event.values[0];// 存放了方向值 /**动画效果*/ RotateAnimation animation = new RotateAnimation(predegree, degree, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); animation.setDuration(200); imageView.startAnimation(animation); predegree=-degree; /** float x=event.values[SensorManager.DATA_X]; float y=event.values[SensorManager.DATA_Y]; float z=event.values[SensorManager.DATA_Z]; Log.i("XYZ", "x="+(int)x+",y="+(int)y+",z="+(int)z); */} @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }}
有兴趣的可以试一下;
LBS
当今基于位置服务的程序越来越多,其中百度地图和高德地图市场份额较大,好在他们都开放了地图的api让我们可以也可以实现基础服务,我们就拿百度来说:
百度地图api使用指南:(http://lbsyun.baidu.com/index.php?title=androidsdk),步骤很详细,大家一步做就好了,有一点需要注意的是需要在build.grandle中加入:
sourceSets{ main{ jniLibs.srcDirs=['libs'] } }
意思就是将jniLibs指向libs,程序就可以完美运行了;
0 0
- 学习笔记(九)——传感器与LBS
- 作业——在线学习Android课程之第十周(传感器与LBS)
- 传感器与LBS
- Lua 学习笔记(九) ——数据文件与持久性
- Python学习笔记之九——错误与异常
- Android学习第十周_传感器和LBS
- JavaScript学习笔记(九)——作品的不足与改进
- 统计学 学习笔记 (九)—— 总体与样本 统计学意义检验的进一步讨论
- Delphi的学习笔记九——汉字与区位码(转自万一博客)
- 机器学习笔记(九)——决策树的生成与剪枝
- 应用统计学与R语言实现学习笔记(九)——线性回归
- Android 学习笔记8——传感器使用
- 学习笔记(九)
- Android传感器编程学习笔记(二)
- Android学习笔记(十二)传感器
- Android学习笔记(6)-光照传感器
- 传感器--学习笔记
- Pro Android学习笔记(一五三):传感器(3):近距离传感器、温度传感器、气压传感器
- win7 下安装mysql 5.7.14 ,在启动服务部分一直过不去
- 字符串部分常用函数
- workqueue
- Magento(1.*)Events 事件一览
- 80端口被占用
- 学习笔记(九)——传感器与LBS
- 如何实现一台IPC摄像机添加至多台录像机
- 安卓 CSS absolute 兼容性问题
- 类的无参方法(人机猜拳)
- 时间格式化转换
- js学习笔记:引用类型——Object
- java字符串
- java的concurrent用法详解
- nginx学习(九)——nginx的配置系统5之rewrite