你可以通过一次简单的位置同步的来了解 Realtime Location 的用法。
环境准备
- 支持 Android Studio 1.4 以上
- 支持 JDK 7.0 以上版本
- 支持 Android 手机系统 4.0.3 以上版本,即 Android SDK 15 以上版本
1. 创建应用
首先,你需要在控制面板中创建应用。
2. 安装 SDK
SDK 的安装方式有两种,你可以任选其一:
<dependency> <groupId>com.wilddog.location</groupId> <artifactId>wilddog-location-android</artifactId> <version>0.1.2</version> </dependency>
|
在build.gradle中添加:
dependencies { compile 'com.wilddog.location:wilddog-location-android:0.1.2' }
|
如果出现文件重复导致的编译错误,可以选择在build.grade中添加packagingOptions:
android { ... packagingOptions { exclude 'META-INF/services/com.fasterxml.jackson.core.ObjectCodec' exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory' exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.properties' exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml' exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties' exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml' exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties' exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties' exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml' exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.xml' exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties' exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml' exclude 'META-INF/maven/com.wilddog.client/wilddog-core-android/pom.xml' exclude 'META-INF/maven/com.wilddog.client/wilddog-core-android/pom.properties' exclude 'META-INF/maven/com.wilddog.client/wilddog-auth-android/pom.xml' exclude 'META-INF/maven/com.wilddog.client/wilddog-auth-android/pom.properties' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/notice' exclude 'META-INF/notice.txt' exclude 'META-INF/license' exclude 'META-INF/license.txt' } }
|
3. 配置 Android 权限
在 AndroidMainfest.xml 文件中添加:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission> <application ... > <meta-data android:name="com.amap.api.v2.apikey" android:value="高德key" /> <service android:name="com.amap.api.location.APSService" > </service> </application>
|
4. 初始化 Wilddog Location 服务
WilddogOptions options = new WilddogOptions.Builder().setSyncUrl("https://<wilddog appId>.wilddogio.com").build(); WilddogApp.initializeApp(this, options); SyncReference ref = WilddogSync.getInstance().getReference(); WilddogLocation location = new WilddogLocation(ref);
|
5. 位置上传
开启位置上传之后,你可以监听的 Key 的位置变化。
startTracingPosition(String key)
方法可以根据 Key 向云端持续上传设备的位置,如果 Key 不存在,云端会自动创建。默认为 5s 上传一次位置数据。
location.startTracingPosition("key");
|
6. 位置监听
addPositionListener(String key, PositionListener listener)
用于实时获取指定 Key 的最新位置信息。
location.addPositionListener("key", new Location.PositionListener() {
@Override public void onDataChange(String key, Position position) { Log.e(TAG, "current position"+position ); }
@Override public void onCancelled(SyncError syncError) {
} });
|