欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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>

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