BC310L硬件接口文档

发布时间: 2025-08-25 19:21:58

按键、LED等硬件接口适配说明文档(V1.1

一、按键控制

1.下面表格是执法仪按键与键值对应表:

监听按键广播, "android.intent.action.SIDE_KEY_INTENT"

Bundle bundle =intent.getExtras();Log.d(TAG,msg: "key_code" + bundle.getInt( key: "key_code"));Log.d(TAG,msg:"key_event" + bundle.getInt( key: "key_event"));Log.d(TAG, msg: "key_status" + bundle.getInt( key: "key_status")+ "\n");

int keyCode = bundle.getInt( key: "key_code");//键值

 

int keyEvent = bundle.getInt( key:"key_event");//0:短按 1:长按 2:双击int keystatus = bundle.getInt( key: "key_status”);//PTT 0:按下 1:抬起,其它按键只有 1

按键

按键值

功能描述

备注

键盘

 

所有按键启动或关闭功能项对应语音及震动提示

 

PTT

285

短按--对讲

不按:接听;按住:讲话

录像键

KEYCODE_F5(135)

短按--录像                                                                                                                    长按--隐蔽录像模式:长按启停外放声光(开启后所有指示灯不亮,包括激光灯和红外灯,警示灯,状态灯。关闭提示音,保留震动提示)录像包含启动MIC

待机状态:短按开启或关闭录像伴随震动和提示音,录像指示灯红色慢闪烁(一次/2秒),息屏时可点亮屏幕,同时开始录像;

SOS按键

284

短按:启动录像并上传。
录像状态下长按:重点文件标识

短按:发送报警信息至软件后台;现场位置信息和视频画面回传到指挥中心。后台软件界面自动弹出报警音和现场画面,同时将位置信息传给同组人员(后台软件实现的功能);                                                                                              录像状态时:长按启停重点文件标识。

录音键


KEYCODE_VOLUME_DOWN(25)

短按:音量减    
长按:录音

开机状态时:长按:开始/停止录音;息屏时可点亮屏幕,同时开始录音;录音开启红灯闪烁,关闭后回归待机绿色指示灯。                               

拍照键

KEYCODE_CAMERA(27)

短按--拍照;
长按--启停白光灯

短按拍照壹张;录像中拍照抽帧实现。息屏时可点亮屏幕,同时开始拍照;        副摄利用内置相机应用拍照(可屏幕设置闪光灯)。

灯光键


KEYCODE_F3(133)

短按:启停红外夜拍灯,长按:启停红蓝警示灯

双击:开启和关闭激光灯。

 

FN

KEYCODE_VOLUME_UP(24)

短按:音量加                                                                                                                    长按:静音模式:开启或关闭静音(开启后录像没有声音,静音录像模式指示灯为红黄交替);

 

 

 

2. 按键消息定义

广播:android.intent.action.SIDE_KEY_INTENT

消息字段1key_code 获取int型按键值

消息字段2key_event 获取int型值,0代表短按,1代表长按,2代表双击。

消息字段3key_status 获取int型值 0代表按下,1代表抬起(up

重要说明:为防止按键广播发送过于频繁,阻塞系统导致广播延迟发送,只发送了按键UP事件的广播。

 

二、LED控制

无特殊要求的情况下,所有灯的亮度一律默认为最大(6)即可。

设备名

操作节点

操作方式

备注

红色LED

/sys/light_if/red

写操作:有效值0-6,1-6打开红色LED,数值越大,亮度越高,0关闭LED

 

绿色LED

/sys/light_if/green

写操作:有效值0-6,1-6打开绿色LED,数值越大,亮度越高,0关闭LED

 

蓝色LED

/sys/light_if/blue

写操作:有效值0-6,1-6打开黄色LED,数值越大,亮度越高,0关闭LED

 

红色警示灯

/sys/light_if/jsd_red

写操作:有效值0-6,1-6打开警示灯,数值越大,亮度越高,0关闭警示灯

 

蓝色警示灯

/sys/light_if/jsd_blue

写操作:有效值0-6,1-6打开警示灯,数值越大,亮度越高,0关闭警示灯

 

Camera红外滤光

/sys/light_if/cam_ir_cut

打开:写字符类型1,on或者en

关闭:写字符类型0,off或者dis

:1(打开状态),0(关闭状态)

 

感光

/sys/light_if/als_raw

此接口只支持读操作

注意:返回值为带换行符的数字字符串,表示环境亮度值,无单位

根据感光值自动控制红外灯开启和关闭

感光阈值上限

/sys/light_if/als_high_thrd

此接口只支持读操作,读取到值大于此阈值关闭红外。

注意:返回值为带换行符的数字字符串

 

感光阈值下限

/sys/light_if/als_low_thrd

此接口只支持读操作,读取到值小于此阈值打开红外。

注意:返回值为带换行符的数字字符串

 

红外灯

/sys/light_if/ir

打开:写字符类型1,on或者en

关闭:写字符类型0,off或者dis

:1(打开状态),0(关闭状态)

 

闪光灯

 /dev/torchlight

 

 

 

 

红外 黑白模式

广播:com.android.intent.action.Cust_Interface

字段1 "cust_interface_action" 设置为 "setCameraBWMode"

字段2 "cust_interface_data"  "on"时打开相机黑白模式“off”为关闭黑白

红外灯接口:/sys/light_if/ir  0 为关闭,写1打开

滤光片接口:/sys/light_if/cam_ir_cut  0为关闭,写1打开

:夜视效果需要打开相机黑白模式+开滤光片+开红外灯(非必要)

 

 

 

 

 

 

 

U盘模式

 

格式化分区:"android.intent.action.format.udisk" USB切换内存分区为U盘模式:"android.intent.action.switch.ums_udisk" USB切换T卡为U盘模式:"android.intent.action.switch.ums_sdcard" USB切换成ADB"android.intent.action.switch.adb" usb断开一般都要发送此广播) APP写分区路径:/mnt/udisk

 

android.intent.action.switch.ums_sdcard 里面的这个 就是 u

 

 

注意:1.相机避免闪烁默认为50HZ(接口:CaptureRequest.CONTROL_AE_ANTIBANDING_MODE)

 

代码示例:try{

mCaptureRequest = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);

mCaptureRequest.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AE_ANTIBANDING_MODE_50HZ);

} catch (CameraAccessException e) {

e.printStackTrace();

}

 

2.     PTT对讲,对讲麦请适配为背面顶部麦(主麦)

 

 

防抖设置方法

前提是需要适配的系统支持防抖算法

Android 需要使用 camera2 配置,在 camera2 参数去配置,app 自己做防抖开关,开启防

抖开关每次重新开始调用摄像头初始化一次,最后成功调用到 EIS 接口才算成功

public void setCameraAntiShake(boolean flag) {

Log.d(TAG, "setCameraAntiShake flag:" +flag);

if(flag){

final int[] availableVideoStabilization = mCharacteristics.get(

CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES);

Log.e(TAG, "availableVideoStabilization:" +availableVideoStabilization);

if (availableVideoStabilization == null || availableVideoStabilization.length ==

0) {

Log.e(TAG, "Optical stabilization not available");

}else{

for (int mode : availableVideoStabilization) {

Log.d(TAG, "availableVideoStabilization:"+mode);

if

(mode

==

CaptureRequest.CONTROL_VIDEO_STABILIZATION_MODE_ON) {

Log.d(TAG, "Using video stabilization.");

// 开启 EIS

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_VIDEO_STABILIZATION_MOD

E, CaptureRequest.CONTROL_VIDEO_STABILIZATION_MODE_ON);

break;

}

}

}}

}