title: 快速入门

你可以通过一次简单的位置同步的来了解 Realtime Location 的用法。

环境准备

  • 支持 Android Studio 1.4 以上
  • 支持 JDK 7.0 以上版本
  • 支持 Android 手机系统 4.0.3 以上版本,即 Android SDK 15 以上版本

1. 创建应用

首先,你需要在控制面板中创建应用。

2. 安装 SDK

SDK 的安装方式有两种,你可以任选其一:

  • 使用 Maven
  1. <dependency>
    <groupId>com.wilddog.location</groupId>
    <artifactId>wilddog-location-android</artifactId>
    <version>0.1.2</version>
    </dependency>
  • 使用 Gradle

在build.gradle中添加:

  1. dependencies {
    compile 'com.wilddog.location:wilddog-location-android:0.1.2'
    }

如果出现文件重复导致的编译错误,可以选择在build.grade中添加packagingOptions:

  1. android {
  2. ...
  3. packagingOptions {
  4. exclude 'META-INF/services/com.fasterxml.jackson.core.ObjectCodec'
  5. exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'
  6. exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.properties'
  7. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml'
  8. exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
  9. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml'
  10. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties'
  11. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties'
  12. exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
  13. exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.xml'
  14. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties'
  15. exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml'
  16. exclude 'META-INF/maven/com.wilddog.client/wilddog-core-android/pom.xml'
  17. exclude 'META-INF/maven/com.wilddog.client/wilddog-core-android/pom.properties'
  18. exclude 'META-INF/maven/com.wilddog.client/wilddog-auth-android/pom.xml'
  19. exclude 'META-INF/maven/com.wilddog.client/wilddog-auth-android/pom.properties'
  20. exclude 'META-INF/NOTICE'
  21. exclude 'META-INF/LICENSE'
  22. exclude 'META-INF/notice'
  23. exclude 'META-INF/notice.txt'
  24. exclude 'META-INF/license'
  25. exclude 'META-INF/license.txt'
  26. }
  27. }

3. 配置 Android 权限

在 AndroidMainfest.xml 文件中添加:

  1. <!--用于进行网络定位-->
  2. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
  3. <!--用于访问GPS定位-->
  4. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
  5. <!--获取运营商信息,用于支持提供运营商信息相关的接口-->
  6. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
  7. <!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
  8. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
  9. <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
  10. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
  11. <!--用于访问网络,网络定位需要上网-->
  12. <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  13. <!--用于读取手机当前的状态-->
  14. <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
  15. <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
  16. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
  17. <!--用于申请调用A-GPS模块-->
  18. <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
  19. <!--用于申请获取蓝牙信息进行室内定位-->
  20. <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
  21. <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
  22. <application
  23. ...
  24. >
  25. <!-- 设置高德key -->
  26. <meta-data
  27. android:name="com.amap.api.v2.apikey"
  28. android:value="高德key" />
  29. <!-- 定位需要的服务 -->
  30. <service android:name="com.amap.api.location.APSService" >
  31. </service>
  32. </application>

4. 初始化 Wilddog Location 服务

  1. // 初始化
  2. WilddogOptions options = new WilddogOptions.Builder().setSyncUrl("https://<wilddog appId>.wilddogio.com").build();
  3. WilddogApp.initializeApp(this, options);
  4. SyncReference ref = WilddogSync.getInstance().getReference();
  5. WilddogLocation location = new WilddogLocation(ref);

5. 位置上传

开启位置上传之后,你可以监听的 Key 的位置变化。 startTracingPosition(String key)方法可以根据 Key 向云端持续上传设备的位置,如果 Key 不存在,云端会自动创建。默认为 5s 上传一次位置数据。

  1. location.startTracingPosition("key");

6. 位置监听

addPositionListener(String key, PositionListener listener) 用于实时获取指定 Key 的最新位置信息。

  1. location.addPositionListener("key", new Location.PositionListener() {
  2. @Override
  3. public void onDataChange(String key, Position position) {
  4. Log.e(TAG, "current position"+position );
  5. }
  6. @Override
  7. public void onCancelled(SyncError syncError) {
  8. }
  9. });