专栏首页腾讯位置服务基于腾讯位置服务定位实现物业巡检防作弊场景

基于腾讯位置服务定位实现物业巡检防作弊场景

前言

在物业管理中,小区内人员巡检还是非常常见的工作之一,为了降低物业的投入,设计了采用扫描二维码的形式辅助系统检测每个员工巡检的位置,以便进行常规的物业巡检工作。虽然二维码既便宜又易用,然而由于其可拍照和被动的模式,会导致作弊的问题,因此在常规的扫码中,需要增加定位功能以便辅助系统鉴别作弊行为。

系统的方案设计

巡检任务按照端的不同,分为两部分,一部分在App内实现,一部分在PC后台实现,其分工大抵如下:

  • PC端: 对巡检任务进行定义并分派,不同的人员分派不同的巡检任务。当人员通过app进行巡检后,后台可以查询任务的完成情况,通过二维码确定每个巡检点都巡检过,通过人员的位置历史对巡检任务的人员轨迹进行回放。因为没有引入电子围栏,所以只能按照轨迹人工判断是否作弊。不过本身防止作弊的问题就是一种威慑,因此效果并不会太差。
  • App端:人员通过App进行登录,登录后获取自己的巡检任务,按照巡检的指示,对各个巡检点进行扫码打卡。app在打开后开启连续定位,并按照一定的速率定时上传到位置库。
image.png

由于是应用在小区的巡检工作中,因此对于定位的精度还是有很大要求的,至少不能偏差太多。

腾讯位置服务SDK集成

Android下集成sdk

技术选型为Android定位SDK室内服务

1、解压sdk,先放jar包到libs

image.png

2、安放so 到 jniLibs

image.png

3、配置项目gradle配置和模块gradle配置

google()
jcenter()
 mavenCentral()
image.png

再修改模块gradle配置

image.png
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
}

4、给予App相应的权限

修改AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.pms">

    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/Theme.Pms">
        <activity
            android:name=".ui.login.LoginActivity"
            android:label="@string/title_activity_login">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">

        </activity>
        <meta-data android:name="TencentMapSDK" android:value="你的key,你的key,这个不配获取不了坐标位置" />
    </application>


    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!-- 通过GPS得到精确位置 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 通过网络得到粗略位置 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 访问网络. 某些位置信息需要从网络服务器获取 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 访问WiFi状态. 需要WiFi信息用于网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 修改WiFi状态. 发起WiFi扫描, 需要WiFi信息用于网络定位 -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <!-- 访问网络状态, 检测网络的可用性. 需要网络运营商相关信息用于网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 访问网络的变化, 需要某些信息用于网络定位 -->
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <!-- 访问手机当前状态, 需要device id用于网络定位 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 支持A-GPS辅助定位 -->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <!-- 用于 log 日志 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

5、同步下项目

点击Android Studio的文件菜单内的Sync Project With Gradle Files.

6、自定义Application,在里面增加位置服务的初始化。

package com.example.pms;

import android.app.Application;

import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheEntity;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.https.HttpsUtils;
import com.lzy.okgo.interceptor.HttpLoggingInterceptor;
import com.lzy.okgo.model.HttpHeaders;
import com.tencent.map.geolocation.TencentLocationManager;

public class MyApplication  extends Application {

    public  static  MyApplication  app;

    public  static  MyApplication  getInstance(){
        return  app;
    }

    public TencentLocationManager mLocationManager;

    @Override
    public void onCreate() {
        super.onCreate();
        app = this;
        //初始化,easy的很~~~
        mLocationManager = TencentLocationManager.getInstance(this);
    }
}

7、连续定位开启

放在了 MainActivity内

import android.os.Bundle;
import android.util.Log;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.tencent.map.geolocation.TencentLocation;
import com.tencent.map.geolocation.TencentLocationListener;
import com.tencent.map.geolocation.TencentLocationRequest;

//实现接口定义 TencentLocationListener 监控位置信息
public class MainActivity extends AppCompatActivity implements TencentLocationListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);       

        //建立请求
        TencentLocationRequest request = TencentLocationRequest.create();
        //我们只需要经纬度和地址名称
        request. setRequestLevel(TencentLocationRequest. REQUEST_LEVEL_NAME);
        //允许使用GPS
        request.setAllowGPS(true);
        //需要开启室内定位
        request.setIndoorLocationMode(true);
        //请求连续定位,这里默认是10s间隔定时推送位置信息。
        MyApplication.getInstance().mLocationManager.requestLocationUpdates(request, this);
    }

    @Override
    public void onLocationChanged(TencentLocation location, int error, String reason) {
        // do your work
        String s = String.format("%s %s (%f %f %f)",location.getAddress(),location.getName(),location.getLatitude(),location.getLongitude(),location.getAltitude());
        Log.i("location",s);
    }

    @Override
    public void onStatusUpdate(String name, int status, String desc) {
        // do your work
    }

}

腾讯地图轨迹回放

有了地址的支持,地图轨迹回放就非常容易了,腾讯提供了动态轨迹,可以参考如下代码。

function initMap() {
            var center = new TMap.LatLng(39.984104, 116.307503);

            //初始化地图
            var map = new TMap.Map("container", {
                zoom:12,//设置地图缩放级别
                center: center,//设置地图中心点坐标
                mapStyleId: "style1" //个性化样式
            });
            //初始化轨迹图并添加至map图层
            new TMap.visualization.Trail({
                pickStyle:function(item){ //轨迹图样式映射函数
                    return {
                        width: 2
                    }
                },
                startTime: 0,//动画循环周期的起始时间戳
                showDuration: 120,//动画中轨迹点高亮的持续时间
                playRate:30 // 动画播放倍速

            })
            .addTo(map)
            .setData(trailData);//设置数据
        }
    </script>
image.png

作者:webmote

链接:https://webmote.blog.csdn.net/article/details/111352712

来源:CSDN

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文链接:https://webmote.blog.csdn.net/article/details/111352712

我来说两句

0 条评论
登录 后参与评论

相关文章

  • AI会是考试作弊的终结者吗?

    ? 当考试变成交易,谁能笑到最后? 2017年,一部根据2014年SAT亚洲考场舞弊案改编的电影《天才枪手》一上映并引发轰动。 从校园到跨国行动,步步升级的作...

    腾讯云AI
  • 毫厘之间尽在掌握,腾讯高精定位来了!

    ? 从三千多年前古希腊哲学家柏拉图的终极三问“我是谁?我从哪里来?我要到哪里去?”,到现代社会中的人们打开手机里的地图软件随时查看自己的位置,从古至今,人们对...

    腾讯位置服务
  • 打通虚拟与现实,LBS游戏解决方案上线

    就在今天,广大游戏玩家的盛宴,一年一度的ChinaJoy刚刚在上海落下了帷幕。在本届ChinaJoy的展台上,众多AR类游戏又吸引了众多游戏迷和观众的眼球。

    腾讯位置服务
  • 手游加固-腾讯云手游安全MTP

    腾讯云手游安全MTP针对市面通用手游外挂进行打击,同时提供腾讯游戏专用加固壳,全方位保护手游安全

    用户3570397
  • 互联网业务安如磐石之根基——IDC物理安全

    【物理安全是安全管理的基础】 什么是物理安全?撇开一板一眼的概念定义,我们先来看看下面这个小场景: 在一个风和日丽的下午,我们驱车拜访一位朋友,在与朋友欢聚一堂...

    腾讯数据中心
  • 热点聚焦 | AI如何加持智慧旅游

    ? 2020世界人工智能大会近日在上海成功举办。在当前新冠疫情防控常态化的背景下,2020世界人工智能大会利用信息技术,将线上与线下相结合,以“云端峰会”的形...

    腾讯文旅
  • 银行「视频柜员」——TRTC全线上金融服务解决方案

    疫情期间,想办理银行金融业务,又担心外面不安全?现在不用你出门,「视频柜员」就能把银行搬到你家里。贷款远程面签、POS机商户巡检,这些业务全能办。

    腾讯移动推送 TPNS
  • 数据中心智能安防新突破:腾讯觅踪亮相DCD

    ? 6月25日,第十届DCD上海数据中心国际峰会在上海举办,腾讯数据中心研发总监岳上在现场首次披露了数据中心智能安防解决方案——腾讯觅踪。腾讯觅踪将传统数据中...

    腾讯技术工程官方号
  • 如何捍卫IDC运营安全

    腾讯是中国最大的互联网综合服务提供商之一,面向互联网海量用户提供优质的在线生活服务。而腾讯分布全国的IDC、服务器网络基础设施及运营人员是腾讯得以面向用户提供优...

    腾讯数据中心

扫码关注云+社区

领取腾讯云代金券