Android特色开发_位置与传感器的使用
2015-08-17 20:48
531 查看
基于位置的服务
LocationManager的用法:
LocationManagerlocationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
//获取可以用的位置提供器
List<String> providerList = locationManager.getProviders(true);
if(providerList.contains(LocationManager.GPS_PROVIDER)){
//将位置提供器设置为LocationManager.GPS_PROVIDER
}elseif(providerList.contains(LocationManager.NETWOR_PROVIDER)){
//将位置提供器设置 为它
}else{//提示没有可以用的位置服务}
获得位置
Location location= locationManager.getLastKnownLocation(provider);
设置位置:
if(location !=null){
showLocation();//使用location的两个方法可以获得位置。
}
设置监听器,更新状态:
locationManager.requestLocationUpdates(provider,x, x, LocationListener)
LocationListenerlocationListener = new LocationListener(){
……
public void onLacationChanged(Locationlocation){
showLocation();
}
}
最后注意要移除监听器
locationMananger.removeUpdates(locationListener);
反向地理编码:
(耗时操作都放到子线程完成)
发送对应的http请求,
返回json数据
处理json数据
将得到的地理位置信息传给handler
传感器的使用:
1、 获得传感器管理器对象
SensorManager sensorManager =(SensorManager)
getSystemService(Context.SENSOR_SERVICE);
2、 获得具体的传感器对象
Sensor sensor = senserManager.getDefaultSensor(Sensor.XXX);
Sensor.TYPE_LIGHT:光照传感器
Sensor.TYPE_ACCELEROMETER:加速度传感器
方向传感器:使用加速度传感器和地磁传感器TYPE_MAGNETIC_FIFLD
3、 创建监听器进行监听传感器输出的信号
a) SensorEventListener listener =new SensorEventListener(){
//传感器的精度发生变化是调用
onAccuracyChanged(Sensor sensor, int accuracy);
//传感器监测的数值发生变化时调用
onSensorChanged(sensorEvent event);
event存的是一个values数组
}
4、 往传感器上注册监听器
senserManager.registerListener(listener, sensor,SensorManager.SENOR_XXX)
最后一个参数代表传感器的输出信息的频率:
SENSOR_DELAY_UI, SENSOR_NORMAL, SENSOR_DELAY_GAME,
SENSOR_DELAY_FASTEST 更新速率依次递增
5、 不使用时一定要注意取消注册监听器
sensorManager.unregisterListener(listener);
对于光感:float value = event.values[0],存放的是光照强度
对于加速度传感器:
floatxVlaue = event.values[0];
floatyVlaue = event.values[1];
floatzVlaue = event.values[2];
对于方向:
使用加速度传感器和地磁传感器。将两个传感器获得到的值,(每个传感器三个数组),放到SensorManager的getRotationMatrix()方法得到一个包含旋转矩阵的R数组:SensorManager.getRotationMatrix(R, null, accelerometerValues,magneticValues
四个参数,第一个长度为9的float数组,第二个用于将地磁向量转换为中立坐标的旋转矩阵,通常指定为null,第三个加速度向量,第四个地磁传感器变量。
使用getOrientation来计算手机的旋转数据,获得长度为3的values数组,存放的是手机在各个方向上的旋转数据,values[0]记录手机围绕z轴的弧度,values[1]存放的是围绕水平x轴的弧度,values[3]手机围绕y轴的弧度。
SensorManager.getOrientation(R,values);
方便计算我们把弧度转化为角度Math.toDegrees(values[0]);
values[0]的角度是-180到180,180度表示正南方向,0度表示正北方向
其他传感器:压力传感器,温度传感器,螺旋仪传感器。。
LocationManager的用法:
LocationManagerlocationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
//获取可以用的位置提供器
List<String> providerList = locationManager.getProviders(true);
if(providerList.contains(LocationManager.GPS_PROVIDER)){
//将位置提供器设置为LocationManager.GPS_PROVIDER
}elseif(providerList.contains(LocationManager.NETWOR_PROVIDER)){
//将位置提供器设置 为它
}else{//提示没有可以用的位置服务}
获得位置
Location location= locationManager.getLastKnownLocation(provider);
设置位置:
if(location !=null){
showLocation();//使用location的两个方法可以获得位置。
}
设置监听器,更新状态:
locationManager.requestLocationUpdates(provider,x, x, LocationListener)
LocationListenerlocationListener = new LocationListener(){
……
public void onLacationChanged(Locationlocation){
showLocation();
}
}
最后注意要移除监听器
locationMananger.removeUpdates(locationListener);
反向地理编码:
(耗时操作都放到子线程完成)
发送对应的http请求,
返回json数据
处理json数据
将得到的地理位置信息传给handler
传感器的使用:
1、 获得传感器管理器对象
SensorManager sensorManager =(SensorManager)
getSystemService(Context.SENSOR_SERVICE);
2、 获得具体的传感器对象
Sensor sensor = senserManager.getDefaultSensor(Sensor.XXX);
Sensor.TYPE_LIGHT:光照传感器
Sensor.TYPE_ACCELEROMETER:加速度传感器
方向传感器:使用加速度传感器和地磁传感器TYPE_MAGNETIC_FIFLD
3、 创建监听器进行监听传感器输出的信号
a) SensorEventListener listener =new SensorEventListener(){
//传感器的精度发生变化是调用
onAccuracyChanged(Sensor sensor, int accuracy);
//传感器监测的数值发生变化时调用
onSensorChanged(sensorEvent event);
event存的是一个values数组
}
4、 往传感器上注册监听器
senserManager.registerListener(listener, sensor,SensorManager.SENOR_XXX)
最后一个参数代表传感器的输出信息的频率:
SENSOR_DELAY_UI, SENSOR_NORMAL, SENSOR_DELAY_GAME,
SENSOR_DELAY_FASTEST 更新速率依次递增
5、 不使用时一定要注意取消注册监听器
sensorManager.unregisterListener(listener);
对于光感:float value = event.values[0],存放的是光照强度
对于加速度传感器:
floatxVlaue = event.values[0];
floatyVlaue = event.values[1];
floatzVlaue = event.values[2];
对于方向:
使用加速度传感器和地磁传感器。将两个传感器获得到的值,(每个传感器三个数组),放到SensorManager的getRotationMatrix()方法得到一个包含旋转矩阵的R数组:SensorManager.getRotationMatrix(R, null, accelerometerValues,magneticValues
四个参数,第一个长度为9的float数组,第二个用于将地磁向量转换为中立坐标的旋转矩阵,通常指定为null,第三个加速度向量,第四个地磁传感器变量。
使用getOrientation来计算手机的旋转数据,获得长度为3的values数组,存放的是手机在各个方向上的旋转数据,values[0]记录手机围绕z轴的弧度,values[1]存放的是围绕水平x轴的弧度,values[3]手机围绕y轴的弧度。
SensorManager.getOrientation(R,values);
方便计算我们把弧度转化为角度Math.toDegrees(values[0]);
values[0]的角度是-180到180,180度表示正南方向,0度表示正北方向
其他传感器:压力传感器,温度传感器,螺旋仪传感器。。
相关文章推荐
- ToggleButton 实现开关效果
- Android百度地图SDK 导航SDK2.0结合定位SDK6.0.5的导航参数设置方法
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- 为Android添加HAL模块
- Android之——退出多个Activity
- Android:Unable to resolve target ‘android-8’问题解决
- 关于Linealayout 各item点击效果,比较不错的selector
- Android 历史 基本框架
- android实现Socket通信一
- Android动画学习笔记-Android Animation
- Android:The connection to adb is down, and a severe error has occured错误解决
- Android文件上传,PHP端接收
- Android:ADB server didn't ACK错误
- android ListView之——SimpleAdapter使用
- Android之——多媒体开发视频格式
- android 多线程下载断点续传
- Android四大组件之Activity
- Qt on android 播放视频的实现
- Android 自定义View (一)
- 【攻克Android (32)】Notification 通知