您的位置:首页技术文章
文章详情页

Android实现地图轨迹的方法

【字号: 日期:2022-09-19 14:23:32浏览:6作者:猪猪

本文实例为大家分享了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; // 这里填入你创建的服务idfinal 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> <applicationandroid: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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。

标签: Android
相关文章: