Giter VIP home page Giter VIP logo

gaodeliabrary's Introduction

轨迹回放动画

二维码下载

二维码下载

v2.0.0版本使用说明

优势:解决使用高德地图,百度地图等,无法在app处于后台时持续定位(比如service中)或者在后台定位一段时间后app被杀死的问题。主要思路就是循环播放非常短的一段无声音乐(由音乐app受启发)。

引入依赖库后(由于jcenter已停止维护,请自行下载源码来依赖)

#implementation 'com.github.BLiYing:GaodeLiabrary:v2.0.0'

1.在manifest中注册后台服务

<service
android:name="com.example.gaodelibrary.GaodeLibraryService"
android:enabled="true"
android:exported="false"
/>

2.注册wake_lock权限(位置权限也需要自己动态申请)

<uses-permission android:name="android.permission.WAKE_LOCK" />

3.在基类application中初始化

UtilsContextOfGaode.init(this);

在具体页面中使用:

备注:v2.0.0版本去掉了2D和3D地图包,只保留轨迹点采集功能,实时画线功能需要自己去实现了。库中自带setUpMap(trackPoints)方法可参考

第一步,初始化

如果只是单纯使用高德地图的定位功能:
GaodeEntity gaodeEntity = new GaodeEntity("上下文");
//初始化定位相关参数
gaodeEntity.initLocation();
//开始定位
gaodeEntity.startLocation();
//关闭定位
gaodeEntity.closeLocation();

如果需要采集轨迹点:
//参数说明:context上下文;startClass点击通知栏跳转的页面;resIdIcon通知栏图标;
//因为需要持续采集,所以用到了后台服务,必须告知用户;
GaodeEntity gaodeEntity = new GaodeEntity(Context context, Class<?> startClass,int resIdIcon);
//开始采集轨迹,此方法中处理了手机休眠和切换应用后app可能被杀死导致应用无法持续采集轨迹问题;
gaodeEntity.startTrace();
//停止采集
gaodeEntity.stopTrace();

第二步,需要经纬度则实现相应回调监听

OnGaodeLibraryListen.LocationListen得到AMapLocation对象;

如果需要画出连续的实时轨迹图:

获取AMapLocation后,可以过滤掉你不需要的点,比如
//速度为0时不进行业务运算
float speed = aMapLocation.getSpeed();
                if (speed == 0) {
                    return;
                }
//精度大于100米的点不进行业务运算
float accuracy = aMapLocation.getAccuracy();
                if (accuracy > 100) {
                    return;
                }
                
如果需要实时画线,声明一个List<LatLng>数组变量trackPoints来容纳轨迹点LatLng;

画线方法:
trackPoints.add(currentLatLng);
//库中自带setUpMap(trackPoints)方法可参考,由于v2.0.0版本去掉了2d和3d地图包,只能自己单独实现;

距离方法:
//计算上一个经纬度和下一个经纬度距离然后叠加
float distance = AMapUtils.calculateLineDistance(lastLatLng, currentLatLng);


抽稀后上传:

/**
* 道格拉斯-普克算法抽稀之后上传,可以显著压缩采集点数量同时不影响轨迹显示,
* 节约一定的上传流量,保持手持端和web端显示一致
*/
Douglas douglas = new Douglas(new ArrayList<>(trackPoints), 2);
ArrayList<LatLng> latLngs_compress = douglas.compress();

小米神隐模式引导关闭,库中自带OSUtils和XiaomiDeviceUtil类

 boolean is_xiaomi = OSUtils.ROM_TYPE.MIUI.name().equals(OSUtils.getRomType().name());
        boolean hasset = SPUtils.getInstance(ResUtils.getContext()).getBoolean("go_set", false);

        if (is_xiaomi && !hasset) {
            android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(this);
            builder.setTitle(R.string.xiaomiMind);
            builder.setMessage(“为了不影响您的应用使用轨迹功能时退到后台无法使用定位功能,小米手机需要手动开启后台配置--选择 无限制”);
            builder.setCancelable(false);
            builder.setPositiveButton(R.string.go_set, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    SPUtils.getInstance(ResUtils.getContext()).putBoolean("go_set", true);
                    XiaomiDeviceUtil.toConfigApp(StartInspectionActivity.this, XiaomiDeviceUtil.getAppProcessName(ResUtils.getContext()), getString(R.string.app_name));
                }
            });
            builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
            builder.create().show();

        }

gaodeliabrary's People

Contributors

bliying avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gaodeliabrary's Issues

关于保活的思路还有轨迹降噪滤波

我现在也在做相关轨迹采集,然后遇到了后台位置不上报的问题,已经加了前台服务还有后台定位权限,看到您有说使用wakelock权限还有前台服务播报无声音乐,加上这两个之后请问还有什么补充吗

另外看到代码里有轨迹平滑处理,卡尔曼那里的算法实在是看不懂。请问有没有撰写相关算法博客呀或者微信交流指点一下

小米手机失效

小米手机如果是默认的省电模式的话,在后台是不记录轨迹的

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.