Android实现地图轨迹的方法
程序员文章站
2022-06-28 15:46:41
本文实例为大家分享了android实现地图轨迹的具体代码,供大家参考,具体内容如下mainactivity.javapackage com.example.amapdemo;import androi...
本文实例为大家分享了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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。