本文实例为大家分享了android实现地图轨迹的具体代码,供大家参考,具体内容如下
mainactivity.java
package com.example.amapdemo;
import android.app.activity;
import android.os.bundle;
import android.widget.toast;
import com.amap.api.track.amaptrackclient;
import com.amap.api.track.errorcode;
import com.amap.api.track.ontracklifecyclelistener;
import com.amap.api.track.trackparam;
import com.amap.api.track.query.entity.locationmode;
import com.amap.api.track.query.model.addterminalrequest;
import com.amap.api.track.query.model.addterminalresponse;
import com.amap.api.track.query.model.addtrackresponse;
import com.amap.api.track.query.model.distanceresponse;
import com.amap.api.track.query.model.historytrackresponse;
import com.amap.api.track.query.model.latestpointresponse;
import com.amap.api.track.query.model.ontracklistener;
import com.amap.api.track.query.model.paramerrorresponse;
import com.amap.api.track.query.model.queryterminalrequest;
import com.amap.api.track.query.model.queryterminalresponse;
import com.amap.api.track.query.model.querytrackresponse;
public class mainactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
final amaptrackclient amaptrackclient = new amaptrackclient(getapplicationcontext());
final long serviceid = 291742; // 这里填入你创建的服务id
final string terminal = "user-123"; // 唯一标识某个用户或某台设备的名称
amaptrackclient.setinterval(5, 30);//报周期设置为30s:
amaptrackclient.setcachesize(20);//设置缓存
amaptrackclient.setlocationmode(locationmode.device_sensors);//定位
final ontracklifecyclelistener ontracklifecyclelistener = new ontracklifecyclelistener() {
@override
public void onbindservicecallback(int i, string s) {
}
@override
public void onstartgathercallback(int status, string msg) {
if (status == errorcode.tracklisten.start_gather_sucee || status == errorcode.tracklisten.start_gather_already_started) {
toast.maketext(mainactivity.this, "定位采集开启成功!", toast.length_short).show();
} else {
toast.maketext(mainactivity.this, "定位采集启动异常!", toast.length_short).show();
}
}
@override
public void onstarttrackcallback(int status, string msg) {
if (status == errorcode.tracklisten.start_track_sucee || status == errorcode.tracklisten.start_track_sucee_no_network || status == errorcode.tracklisten.start_track_already_started) {
amaptrackclient.startgather(this);
} else {
toast.maketext(mainactivity.this, "轨迹上报服务服务启动异常," + msg, toast.length_short).show();
}
}
@override
public void onstopgathercallback(int i, string s) {
}
@override
public void onstoptrackcallback(int i, string s) {
}
};
// queryterminalrequest=new queryterminalrequest(serviceid, terminal);
// amaptrackclient.queryterminal(queryterminalrequest,driverneworderactivity.this);
amaptrackclient.queryterminal(new queryterminalrequest(serviceid, terminal), new ontracklistener() {
@override
public void onqueryterminalcallback(queryterminalresponse queryterminalresponse) {
if (queryterminalresponse.issuccess()) {
if (queryterminalresponse.gettid() <= 0) {
amaptrackclient.addterminal(new addterminalrequest(terminal, serviceid), new ontracklistener() {
@override
public void onqueryterminalcallback(queryterminalresponse queryterminalresponse) {
}
@override
public void oncreateterminalcallback(addterminalresponse addterminalresponse) {
if (addterminalresponse.issuccess()) {
long terminalid = addterminalresponse.gettid();
amaptrackclient.starttrack(new trackparam(serviceid, terminalid), ontracklifecyclelistener);
} else {
toast.maketext(mainactivity.this, "请求失败," + addterminalresponse.geterrormsg(), toast.length_short).show();
}
}
@override
public void ondistancecallback(distanceresponse distanceresponse) {
}
@override
public void onlatestpointcallback(latestpointresponse latestpointresponse) {
}
@override
public void onhistorytrackcallback(historytrackresponse historytrackresponse) {
}
@override
public void onquerytrackcallback(querytrackresponse querytrackresponse) {
}
@override
public void onaddtrackcallback(addtrackresponse addtrackresponse) {
}
@override
public void onparamerrorcallback(paramerrorresponse paramerrorresponse) {
}
});
} else {
long terminalid = queryterminalresponse.gettid();
amaptrackclient.starttrack(new trackparam(serviceid, terminalid), ontracklifecyclelistener);
}
} else {
toast.maketext(mainactivity.this, "请求失败," + queryterminalresponse.geterrormsg(), toast.length_short).show();
}
}
@override
public void oncreateterminalcallback(addterminalresponse addterminalresponse) {
}
@override
public void ondistancecallback(distanceresponse distanceresponse) {
}
@override
public void onlatestpointcallback(latestpointresponse latestpointresponse) {
}
@override
public void onhistorytrackcallback(historytrackresponse historytrackresponse) {
}
@override
public void onquerytrackcallback(querytrackresponse querytrackresponse) {
}
@override
public void onaddtrackcallback(addtrackresponse addtrackresponse) {
}
@override
public void onparamerrorcallback(paramerrorresponse paramerrorresponse) {
}
});
}
}
androidmainifest配置文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.amapdemo">
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.internet" />
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.write_external_storage" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.read_phone_state" />
<!--允许程序访问cellid或wifi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.access_coarse_location" />
<uses-permission android:name="android.permission.wake_lock"/>
<uses-permission android:name="android.permission.bluetooth"/>
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.access_coarse_location"/>
<!--用于访问gps定位-->
<uses-permission android:name="android.permission.access_fine_location"/>
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.access_network_state"/>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.access_wifi_state"/>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.change_wifi_state"/>
<!--用于申请调用a-gps模块-->
<uses-permission android:name="android.permission.access_location_extra_commands"/>
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.access_coarse_location"></uses-permission>
<!--用于访问gps定位-->
<uses-permission android:name="android.permission.access_fine_location"></uses-permission>
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.access_network_state"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.access_wifi_state"></uses-permission>
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<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>
<!--用于申请调用a-gps模块-->
<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
android:allowbackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundicon="@mipmap/ic_launcher_round"
android:supportsrtl="true"
android:theme="@style/theme.amapdemo">
<!-- <service android:name="com.amap.api.track.amaptrackservice" />-->
<service android:name="com.amap.api.location.apsservice" />
<activity android:name=".mainactivity">
<intent-filter>
<action android:name="android.intent.action.main" />
<category android:name="android.intent.category.launcher" />
</intent-filter>
</activity>
<meta-data android:name="com.amap.api.v2.apikey"
android:value="388784de5a9c159ac13b5e3db130c0ad"/>
<service android:name="com.amap.api.track.amaptrackservice" />
</application>
</manifest>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
失约的慌言