本章主要是讲述 传感器 和LBS百度地图。
一、 传感器
1、 从系统服务中获得传感器管理器
SensorManager mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
2、 从传感器管理器中获得传感器,比如方向传感器。
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION)
还可以获得其他的,如传感器列表等。
List<Sensor> allSensors=mSensorManager.getSensorList(Sensor.TYPE_ALL);
下面是API中定义的几个代表sensor的常量。
1.TYPE_ACCELEROMETER ——-加速度传感器
2.TYPE_ALL —–所有类型
3.TYPE_GRAVITY ——重力传感器
4.TYPE_GYROSCOPE ——-陀螺仪传感器
5.TYPE_LIGHT 光线传感器
6.TYPE_LINEAR_ACCELERATION —-线性加速度传感器
7.TYPE_MAGNETIC_FIELD ——磁场传感器
8.TYPE_ORIENTATION ——方向传感器
9.TYPE_PRESSURE ——-压力计传感器
10.TYPE_PROXIMITY ——– 距离传感器
11.TYPE_ROTATION_VECTOR —–旋转矢量传感器
12.TYPE_TEMPERATURE ——–温度传感器
3、注册传感器
mSensorManager.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_NORMAL);
//对应的参数:上下文对象,Sensor传感器对象, 以及传感器的延时时间的精度密度,有四个可选值:
/** get sensor data as fast as possible */
public static final int SENSOR_DELAY_FASTEST = 0;//延时:0ms
/** rate suitable for games */
public static final int SENSOR_DELAY_GAME = 1;//延时:20ms
/** rate suitable for the user interface */
public static final int SENSOR_DELAY_UI = 2;//延时:60ms
/** rate (default) suitable for screen orientation changes */
public static final int SENSOR_DELAY_NORMAL = 3;//延时:200ms
4、继承传感器 的监听器.
onSensorChanged:当传感器的值变化时会回调
onAccuracyChanged:当传感器的进度发生改变时会回调
public class SensorActivity extends Activity implements SensorEventListener{
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){
float degree=event.values[0];
RotateAnimation ra=new RotateAnimation(
currentDegree,-degree,Animation.RELATIVE_TO_SELF,
0.5f,Animation.RELATIVE_TO_SELF,0.5f);
ra.setDuration(200);
ra.setFillAfter(true);
mAs_image.startAnimation(ra);
currentDegree=-degree;
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
5、在适当的位置,注销掉传感器。
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
二、LBS 基于位置的服务
使用百度地图,基础地图
1.在百度地图开放平台,进入–开发–Android地图SDK
Android 地图 SDK v4.0.0
百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。
2.申请密钥
点击申请密钥,–注册成为百度的开发者。
注册成功后,进入应用列表,创建应用。
需要,包名,应用名, SHA1 ,就是Android签名证书的sha1值
Windows,运行输入 cmd,进入控制台,按照它的步骤完成操作。获取到 SHA1值。
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。
申请key
Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key
注意:
a. 每个Key唯一对应一个APP,如果您的APP修改了包名或者发布的时候打包的签名文件改变了,则改变前后的APP被视为两个APP。因此,多个APP【包括一份代码多个包名打包】需申请多个与之对应的Key;
b. 在同一个工程中同时使用百度地图SDK、定位SDK、导航SDK 和全景SDK的全部或者任何组合,可以共用同一个key;
c. 如果您在Android SDK开发过程中使用了LBS云服务(如LBS云检索功能),则需要为该服务单独申请一个“服务端”类型的key,代码中调用LBS云服务接口时使用此key即可,注意:此key一定要和AndroidManifest.xml中配置API_KEY的key区分开;
d. Android SDK自v2.1.3版本开始采用了全新的Key验证体系,v2.1.3之前的版本不再维护,如果升级到新版本SDK(v2.1.3及之后的版本)时需要在API控制台重新申请key进行替换。
3.完成后,得到应用AK。 点击进入开发者指南,浏览相关信息。
4.进入重要的下载步骤。选择并下载相应功能的开发资源:
百度LBS Android SDK下载中心包含了Android SDK全部功能的开发包,您可以结合自身需求,自定义选择业务功能,进行打包下载。
开发包是我们要下载的用来开发应用,示例代码和类参考也可以下载学习。
5.学习怎么使用,配置,权限,
a.将你解压的所有文件放到libs文件夹下
b. 在buid.gradle(Module:app) 内,一定要在android{}内添加
sourceSets{
main{
jniLibs.srcDirs=['libs']
}
}
接下来具体的使用,遵循下方网址步骤。
网址:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap
使用百度定位
如没有下载相应SDK资源,进入相关下载里面下载。
1.配置环境
http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/buildprojec
2.获取定位
http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/getloc
注意:每次新版本的定位SDK,开发者除了要更新JAR包之外,也要注意一下SO有无更新,如果SO名称不一样了,也要及时替换老的SO版本,不然会导致定位失败!
学会怎么接入一个第三方的SDK。