更新记录
1.0.6(2024-11-12)
- 增加云台控制
- 修复IOS无法开启录音问题
1.0.4(2024-11-01)
增加透传命令
1.0.3(2024-07-05)
增加ios支持
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:11.0 - 14.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:15 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
大华sdk
提供方法
LoadLibrarys
加载库Init
初始化,会触发断线回调device_offline
StartSearchDevices
搜索设备,返回search_id
,触发搜索回调find_device
StopSearchDevices
停止搜索InitDevAccount
(经常性失败,建议使用ip)初始化设备,参数szMac
szUserName
szPwd
szCellPhone
szMail
InitDevAccountByIP
初始化设备,通过ip,参数szIp
szMac
szUserName
szPwd
szCellPhone
szMail
LoginWithHighLevelSecurity
登录,参数szIP
nPort
szUserName
szPassword
,返回login_id
Logout
登出setIP
设置IP,参数szMac
szIP
szSubmask
szGateway
szUserName
szPassWord
依赖登录的方法
StartSearchIPCWifi
wifi配网,依赖登录,参数szSSID
szKeys
QueryRecordFile
查询本地录像列表,参数nRecordFileType
stTimeStart
stTimeEnd
,返回list
,内容ch
filename
size
starttime
endtime
driveno
startcluster
nRecordFileType
bImportantRecID
bHint
bRecType
framenum
SetTimezone
设置时区,参数szTimeZone
默认13,中国时区SetupRecord
开关录像,参数status
设置,开始、关闭录像, 0-关闭录像,1-手动录像,2-自动录像GetRecordState
查看录像开关,参返回值status
0-关闭录像,1-手动录像,2-自动录像ptzControl
云台控制,参数ptz
0上;1下;2左;3右;4变倍+;5变倍-;6变焦+;7变焦-;8光圈+;9光圈-;speed
速度1-8is_stop
布尔值开始还是停止setTime
设置时间,参数timestamp
秒级时间戳getWifiList
获取wifi列表,返回值list
,包含szSSID
szMacAddr
byApConnected
byLinkMode
nRSSIQuality
unApMaxBitRate
byAuthMode
byEncrAlgr
byLinkQuality
byWifiType
TransmitInfoForWeb
web透传,参数cmd
透传命令,返回值info
命令对应的结果
全局回调事件
device_offline
回调包括login_id
登录id
ip
port
find_device
回调包括version
ip
port
sub_mask
gateway
mac
device_type
manu
definition
is_dhcp
verify_data
serial_no
dev_soft_version
detail_type
vendor
dev_name
username
password
http_port
video_input_ch
remote_video_input_ch
video_output_ch
alarm_input_ch
alarm_output_ch
is_new_word_len
new_password
init_status
pwd_reset_way
special_ability
new_detail_type
is_new_username
new_username
pwd_find_version
un_login_func_mask
device_id
country_code
machine_group
ip_version_from
安卓权限
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.CHANGE_WIFI_STATE
IOS权限
com.apple.developer.networking.wifi-info
com.apple.developer.networking.multicast
例子
<template>
<view class="content">
<button @click="LoginWithHighLevelSecurity()">LoginWithHighLevelSecurity</button>
<button @click="TransmitInfoForWeb()">TransmitInfoForWeb</button>
<input type="number" v-model="ptz" placeholder="操作">
<button @click="ptzControl()">操作</button>
<button @click="setIP()">设置ip</button>
<button @click="setTime()">设置时间</button>
<button @click="GetWifiList()">GetWifiList</button>
<button @click="LoadLibrarys()">LoadLibrarys</button>
<button @click="Init()">Init</button>
<button @click="Cleanup()">Cleanup</button>
<button @click="StartSearchDevices()">StartSearchDevices</button>
<button @click="StopSearchDevices()">StopSearchDevices</button>
<button @click="InitDevAccount()">InitDevAccount</button>
<button @click="InitDevAccountByIP()">InitDevAccountByIP</button>
<button @click="Logout()">Logout</button>
<button @click="StartSearchIPCWifi()">StartSearchIPCWifi</button>
<button @click="QueryRecordFile()">QueryRecordFile</button>
<button @click="SetTimezone()">SetTimezone</button>
<button @click="SetupRecord()">SetupRecord</button>
<button @click="GetRecordState()">GetRecordState</button>
</view>
</template>
<script>
const dahuaNative = uni.requireNativePlugin('leruge-native-dahua')
export default {
data() {
return {
ptz: 0,
}
},
onLoad() {
plus.globalEvent.addEventListener('device_offline', res => {
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
})
plus.globalEvent.addEventListener('find_device', res => {
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
})
},
methods: {
// web透传
TransmitInfoForWeb() {
const res = dahuaNative.TransmitInfoForWeb({
cmd: '{"method":"configManager.getConfig","params":{"name":"Network"}}'
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
// 设置时间
setTime() {
const res = dahuaNative.setTime({
timestamp: 1730064888, // 秒级时间戳
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
// 设置ip
setIP() {
const res = dahuaNative.setIP({
szMac: 'd4:43:0e:c3:8b:40',
szIP: '192.168.0.103',
szSubmask: '255.255.255.0',
szGateway: '192.168.0.1',
szUserName: 'admin',
szPassWord: 'hsb12345678'
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
// 方向控制
ptzControl() {
const res = dahuaNative.ptzControl({
ptz: this.ptz, // 操作:0上;1下;2左;3右;4变倍+;5变倍-;6变焦+;7变焦-;8光圈+;9光圈-;
speed: 5, // 速度
is_stop: false, // 是否停止
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
GetWifiList() {
const res = dahuaNative.getWifiList({search_time: 5000})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
LoadLibrarys() {
const res = dahuaNative.LoadLibrarys()
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
test() {
const res = dahuaNative.test()
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
Init() {
const res = dahuaNative.Init()
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
Cleanup() {
const res = dahuaNative.Cleanup()
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
StartSearchDevices() {
const res = dahuaNative.StartSearchDevices()
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
StopSearchDevices() {
const res = dahuaNative.StopSearchDevices()
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
InitDevAccount() {
const res = dahuaNative.InitDevAccount({
szMac: 'd4:43:0e:c3:8b:40',
szUserName: 'admin',
szPwd: 'hsb12345678',
szCellPhone: '',
szMail: 'leruge@163.com'
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
InitDevAccountByIP() {
const res = dahuaNative.InitDevAccountByIP({
szMac: 'd4:43:0e:c3:8b:40',
szUserName: 'admin',
szPwd: 'hsb12345678',
szCellPhone: '',
szMail: 'leruge@163.com',
szIp: '192.168.0.103'
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
StartSearchIPCWifi() {
const res = dahuaNative.StartSearchIPCWifi({
szSSID: 'TP-LINK_6318',
szKeys: '12345678'
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
LoginWithHighLevelSecurity() {
const res = dahuaNative.LoginWithHighLevelSecurity({
szUserName: 'admin',
szPassword: 'hsb12345678',
szIP: '192.168.0.103',
nPort: '37777',
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
Logout() {
const res = dahuaNative.Logout()
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
QueryRecordFile() {
const res = dahuaNative.QueryRecordFile({
nRecordFileType: 0,
stTimeStart: '2024-06-09 00:00:00',
stTimeEnd: '2024-06-09 23:59:59',
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
SetTimezone() {
const res = dahuaNative.SetTimezone({
szTimeZone: 24
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
SetupRecord() {
const res = dahuaNative.SetupRecord({
status: 2
})
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
GetRecordState() {
const res = dahuaNative.GetRecordState()
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
},
}
}
</script>
<style></style>