广东触点科技有限公司 触点云 Android 端源码

陈德华 18f3a49806 Update 'app/src/main/java/com/fbee/util/StrUtil.java' 7 months ago
.gradle a6384900d3 优化网络请求 1 year ago
.idea a6384900d3 优化网络请求 1 year ago
app 18f3a49806 Update 'app/src/main/java/com/fbee/util/StrUtil.java' 7 months ago
gradle a6384900d3 优化网络请求 1 year ago
.gitignore b7d8e8576c Merge branch 'master' of https://gitee.com/trudian/tdcloud 1 year ago
LICENSE 3b936c0aa1 fist commit 1 year ago
README.md 936eb21b0a Update 'README.md' 7 months ago
build.gradle 3b936c0aa1 fist commit 1 year ago
gradlew a6384900d3 优化网络请求 1 year ago
gradlew.bat 4af431ed03 bat 1 year ago
local.properties a6384900d3 优化网络请求 1 year ago
settings.gradle 3b936c0aa1 fist commit 1 year ago

README.md

触点云 Android 端源码

概述

触点云是一款与我司自有的硬件产品实现联动交互控制的SDK。您可以使用该APP和我司的相对应的门口机、门禁机、停车场道闸等设备进行控制。同时根据社区生态触点云APP 还拥有,积分商城,周边小店,物业服务,增值服务,智能家居,家庭管理模块。 image

智慧社区中主要分业主与访客,业主可以通过集成该SDK的手机APP,轻松且安全的出入社区大门及楼栋相对应的大门。业主的车及访客的车进入小区都可以通过集成该SDK的手机APP进行进出小区的相应预约设置。如果想进一步了解触点云业务或者购买我们公司的智能设备的可以登录泛达集团官网触点云开放平台

业务场景

家庭管理使用场景

管理家庭成功,让每个家庭成员也有同等的业务功能。如果你的房子用于出租,则有房东与租客关系,利用家庭管理关系租客在正常租房时可以有相应开门权限,当退租的时候。则不能使用原有的权限。 image

增值服务使用场景

提供平台给业主二手物品交易,提供房屋买卖平台和推荐获收益渠道 image

积分商场使用场景

让业主足不出户就能优惠的购买的日常需要的物品,同时与周边的餐饮店合作提供优惠的价格给业主。 image image

物业服务使用场景

物业报修方便小区业主的日常家电维修、物业缴费方便小区业主物业缴费,水电缴费、物业通知方便小区获取小区最新的公告信息。 image

智能家居使用场景

无缝接入,适配涂鸦智能、安心家智能、飞比智能家居、 控制(照明、安防、传感器、厨房电器等智能家居设备),并可以根据不同房间(厨房、客厅、厕所、卧室等)进行分类管理 ,自定义场景模式设置 image

门禁开门能力使用场景

二维码识别开门

业主或者访客使用二维码进行识别开门,业主把手机产生的二维码分享给访客,访客收到当前门禁的二维码即可通过门禁扫描二维码方便出入小区。

授权码开门

业主或者访客查看授权按键码在门口机上输入相对应的授权按键码开门,业主也可以把手机产生的授权按键码分享给访客,访客收到当前门禁的授权按键码即可在门禁上通过输入授权按键码方便出入小区。

远程一键开门

小区使用我司的联网门禁设备,业主只需要通过集成该SDK的手机APP即可在APP上使用远程一键开门。

蓝牙一键开门

小区使用我司的蓝牙门禁设备,业主只需要通过集成该SDK的手机APP即可点击蓝牙开门后一键开门,因蓝牙通信的距离限制建议使用蓝牙开门的时候保持与门禁的距离在三米范围内。

人脸识别开门

小区使用我司的人脸识别门禁设备,业主只需要通过集成该SDK的手机APP上传自己的人脸进行授权,授权成功后业主通过门禁扫描人脸验证成功即可自动开门。

云对讲能力使用场景

当有访客拜访,需要进入楼栋大门时,访客站在门禁正前方,业主可以通过集成该SDK的手机APP进行远程监视,查看门禁镜头面前的人员是不是真的是你的访客,如果是界面下方点击开门,门禁即可自动打开。另外访客也可以在门禁上输入业主的房号,业主的手机收到呼叫后接听,查看门禁镜头面前的人员是不是你的访客,如果是界面下方点击开门,门禁即可自动打开。

电梯预约能力使用场景

当业主出门的时候,提前打开集成该SDK的手机APP进入APP中的电梯预约功能,在显示可电梯预约的列表中点击呼梯,电梯即可自动到达你所在楼层。

车牌预约管理能力使用场景

当小区搭载公司的智能道闸后,业主可以通过集成该SDK的手机APP管理自己的汽车出入小区权限。当业主在APP上点击相应车牌进行一键锁车后,则所戴该车牌的汽车无法进出小区,直到业主点击解锁后方可进出小区。当有访客想把汽车驶入小区,业主可以通过车牌预约功能预约访客车牌在预约的有效时间内可以自由出入小区。

手动集成步骤

手动集成压缩包下载链接:前往下载

tdcloud_sdk.zip集成压缩包内容 td-cloud-1.1.0.aar(触点业务核心包) td-sip-1.1.0.aar(触点云对讲业务核心包)

SDK文件移植

解压缩tdcloud_sdk.zip集成压缩包。 复制td-cloud-1.1.0.aar到工程 libs/ 目录下。 复制td-sip-1.1.0.aar到工程 libs/目录下。

配制build.gradle

dependencies {
    implementation(name: 'td-cloud-1.1.0', ext: 'aar')
    implementation(name: 'td-sip-1.1.0', ext: 'aar')
}

配置AndroidManifest.xml

根据Demo压缩包里的AndroidManifest.xml样例文件,来配置应用程序项目的 AndroidManifest.xml。 AndroidManifest示例

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.td.tdfunction">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application
        android:name=".TDApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@style/Theme.cloud">
        <activity
            android:name="com.td.tdsip.VideoActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" />
        <service android:name="com.td.tdsip.TdSipManager" />
        <service android:name="tru.cn.com.trudianlibrary.bluetooth.controller.utils.BluetoothLeService" />
    </application>
</manifest>

添加代码

TDCloud SDK提供的API接口,都主要集中在tru.cn.com.trudianlibrary.bluetooth.controller.utils.TrudianEG类里。

init初始化SDK

public void init(Application context, TDLibraryBean tdLibraryBean, boolean isDebug) 在自己的项目中自定义的Application中做SDK初始化.(注:rsaKey,appId,appKey,domain这些参数在我司提供的后台配置完成后获得)

public class TDApplication extends Application  {

    @Override
    public void onCreate() {
        super.onCreate();
        String rsaKey =“ewihfuewufe***ewfeowjfe”;
        String appId = "10***00";
        String appKey = "e17****ec09";
		String domain = "https://tdc***.com"
        TDLibraryBean tdLibraryBean = new TDLibraryBean(domain,rsaKey,appId,appKey);
        TrudianEG.getInstance().init(this,tdLibraryBean, BuildConfig.DEBUG);
    }}

SDK账号登录

在自己的项目中登录后所得到的泛达功能SDK的账号、密码进行功能SDK登录,并自己保存相关的返回信息,可参考demo的com.farbell.farbellfunction.activity.LoginActivity类处理逻辑

    TrudianEG.getInstance().login(account, pwd, new RequestCallBackImpl<NetOutLoginByPasswordBean>(LoginActivity.this){
                        @Override
                        protected void onStart() {
                            super.onStart();
                        }

                        @Override
                        protected void onFinally() {
                            super.onFinally();
                        }

                        @Override
                        protected void onSuccess(NetOutLoginByPasswordBean data, String msg) {
                            super.onSuccess(data, msg);
                        }

                        @Override
                        protected void onException(Exception e, String msg) {
                            super.onException(e, msg);
                        }

                        @Override
                        protected void onUnCatchStatus(int status, String msg, String data) {
                            super.onUnCatchStatus(status, msg, data);
                        }
                    } );

开门业务

远程开门

远程开门是对于我司的联网门口机,业主有相对应的可以开的门禁设备,当有访客访问业主或者业主自己有进出需要的时候在手机上点击远程一键开门,门禁设备收到指令后自己开门。通过当前的社区ID,调用 TrudianEG.getInstance().getRemoteEntranceGuard(String communityId,RequestCallBack requestCallBack) 获得用户所有的可以远程开门的门禁列表,调用 TrudianEG.getInstance().openRemoteEntranceGuard(String acID,RequestCallBack requestCallBack) 对你选定的门禁机进行远程开门 相关流程可以参考TDCloud项目里的 com.farbell.farbellfunction.fragment.RemoteOpenDoorFragment类进行处理。

二维码开门

二维码开门的使用场景更多是访客拜访,进入小区时业主可以提前预设好权限二维码发送给访客,访客收到二维码,打开门禁的二维码扫描,对准二维码。门禁机识别认证成功后自动开门。 通过当前的社区ID,调用 API TrudianEG.getInstance().getAuthQrcode(String communityId,int houseId,RequestCallBack requestCallBack) 获取用于开门的二维码信息,呈现在界面上生成二维码,通过门口机扫描实现二维码识别开门的功能

按键码开门

按键码开门的使用场景是每个门禁会生成对应的按键码,业主或者访客记住对应的门禁机按键码,在门禁机上输入按键码,门禁验证成功后自动开门。 通过当前的社区ID,调用 TrudianEG.getInstance().getNumberCode(String communityId,RequestCallBack requestCallBack) 获取用于开门的按键码信息,呈现在界面上生成每个门禁对应的按键码,在门口机输入相对应门禁的按键码信息来开门的功能

蓝牙开门

蓝牙开门的使用场景在于业主通过手机在离门禁机三米以内的范围里点击蓝牙开门,蓝牙或自动匹配门禁蓝牙,发送开门指令,门禁接收指令验证成功后自动开门。 蓝牙开门的接入请跳转至蓝牙开门SDK模块

人脸识别开门

业主通过手机APP或者物业采集人脸后,出入小区的大门、楼栋大门。只需要站在门禁正前方,门禁自动识别到人脸验证成功后自动开门。 集成人脸识别功能中SDK提供了人脸注册功能,调用 TrudianEG.getInstance().saveFace(String mFaceId,String imageIds,String houseIds,String niceName,int mUserType,RequestCallBack requestCallBack) 查询已经注册的人脸列表进行可视管理,调用 TrudianEG.getInstance().showFaceCards(String communityId,int type,RequestCallBack requestCallBack)

云对讲

云对讲业务在于业主可以通过手机实时查看门禁附近的画面信息,当有访客呼叫或者业主主动监视查看门禁,镜头里呈现的人是不是业主的访客,然后自主判断是不是给予开门的业务,从而方便又安全的管理小区人员进出能力。 云对讲的接入请跳转至云对讲 SDK模块

电梯预约

电梯预约的使用场景是方便业主出门前提前让电梯到达业主所居住的楼层,使业主一出门就能进入电梯,而不需要在电梯门口等待,节省业主通行时间。 通过当前的社区ID,调用 TrudianEG.getInstance().getElevatorList(String communityId,RequestCallBack requestCallBack) 来查询可预约电梯列表,调用 TrudianEG.getInstance().sendReservationElevator(StringacID,RequestCallBackrequestCallBack) 实现呼梯功能

车牌预约

车牌预约的使用场景是让业主的小车在小区里面更加的安全,当业主对他的汽车进行车牌锁定后,对应的汽车将无法出入小区,直到业主对其进行解锁为止。另外一种情景是访客有进入小区需求时,业主可以通过车牌预约提前输入访客车牌号进入时间等设置完成后访客进入小区,智能道闸可以通过扫描车牌号验证业主预约的数据对其判断是否打开道闸 1、我的车牌管理 通过当前的社区ID,调用 TrudianEG.getInstance().getMyCarNoList(String communityId,RequestCallBack requestCallBack) 查询车牌列表,调用 TrudianEG.getInstance().unlockCarNo(String acID,int type,RequestCallBack requestCallBack) 实现一键锁车与解锁的功能 2、车牌预约 实现车牌预约可通过当前的社区ID,调用 TrudianEG.getInstance().parkingSubscribe(String communityId,String optionsIDs,String beginTime,String endTime,String carNumber,RequestCallBack requestCallBack) 实现取消预约,调用 TrudianEG.getInstance().cancelOrder(String mOrderID,RequestCallBack requestCallBack) 查询预约记录详情,调用 TrudianEG.getInstance().getOrderDetail(String mOrderID,RequestCallBack requestCallBack)

进阶功能

请参考:

API:Android

调试指南

Android SDK网络问题解析

Android 客户端网络不稳定,会导致App有时候无法及时收到云对讲呼叫、开门反馈、人脸上传等消息。 很多开发者认为这是因为服务器不稳定、延迟,甚至有时候认为系统出问题了。本文目的是从各个方面来分析Android网络导致的TDCloud不能正常工作的问题。

TDCloud正常工作的必要条件

首先,我们需要知道,TDCloud SDK并不是集成到App后就必然一直工作的。

其正常工作的必要条件是:APP的网络保持着连接。

而Android设备的网络的复杂性、不稳定性,是Android设备开发最复杂的地方之一。

另外,每款手机的网络能力也是千差万别的。国内很多杂牌手机在网络方面甚至会有严重的问题。大品牌厂商的手机则要好很多。

只要TDCloud的网络连接是正常的,则: TDCloud提供的功能都可正常使用。

部分系统的特殊处理导致问题

MIUI V5系统

自启动管理:默认情况下,手机开机后,只有系统默认的服务可以启动起来。除非在自启动管理界面,设置允许第三方程序自启动。 网络助手:可以手动禁止已安装的第三方程序访问2G/3G和WIFI的网络和设置以后新安装程序是否允许访问2G/3G和WIFI的网络。

4.4以上的android系统

在设置->应用,强行停止 应用程序后该程序无法再自启动,就算重新开机也一样,一定要手动开启才能运行起来。

让我们从目前得到的反馈来整理调试的思路

1、手机休眠时收不到 云对讲呼叫 消息,解锁或屏幕灯亮则可以成功接收

这个现象表明,手机休眠时,TDCloud SDK“被迫”与服务器端的网络失去了连接。 TDCloud SDK的工作原理是要确保在手机休眠时也能正常的工作,即休眠时也可以及时地收到 云对讲呼叫 消息。实际上TDCloud在大部分上手机上都能达到此效果。

这个“被迫”,是由Android设备的环境所导致的。涉及的原因有如下几个方面:

手机本身的网络设置。标准版本的Android ROM是没有这个设置的,但某些特殊的ROM可能会有这方面的设置。 手机上的安全、省电工具软件额外做的事情 上述的特殊机制会关闭网络。网络一旦连接上,TDCloud也会连接上服务器,从而 云对讲呼叫 消息就会收到。

2、有时候收到TDCloud云对讲呼叫 消息很及时,有时候则要等几分钟 TDCloud会监听网络切换广播。当网络关闭时,把原来TDCloud连接关闭。当有新的网络时,创建 TDCloud连接。

另外,RTC会定时发送心跳。如果之前的网络已经断了,则会重新连接。 应该说,当前的网络连接策略还是相对简单的,这样做的目的是:省电、省流量。 3、完全使用不了触点去SDK所有功能 如果集成之后就完全使用不了触点去SDK所有功能,则很有可能是某个地方配置错误,优先查看客户端日志,配合文档进行定位: Android SDK 集成指南

技术支持

当出现问题时:

请仔细阅读文档,查看是否有遗漏。 Android FAQ 也可以在触点云开放平台联系我们的技术支持微信客服
为了更快速的解决问题,在寻求帮助时,请提供下列信息: 你所调用的是什么API,所传参数,完整的报错信息,出现异常的时间点 如果是SDK问题请提供对应的SDK版本和完整的日志记录,日志信息请使用TXT文件上传 出现异常的设备是Android ,列出具体的机型和系统