BC310L硬件接口文档
按键、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_CAMERA(27) |
短按--拍照; |
短按拍照壹张;录像中拍照抽帧实现。息屏时可点亮屏幕,同时开始拍照; 副摄利用内置相机应用拍照(可屏幕设置闪光灯)。 |
灯光键 |
|
短按:启停红外夜拍灯,长按:启停红蓝警示灯 双击:开启和关闭激光灯。 |
|
FN键 |
KEYCODE_VOLUME_UP(24) |
短按:音量加 长按:静音模式:开启或关闭静音(开启后录像没有声音,静音录像模式指示灯为红黄交替);
|
|
2. 按键消息定义
广播:android.intent.action.SIDE_KEY_INTENT
消息字段1:key_code 获取int型按键值
消息字段2:key_event 获取int型值,0代表短按,1代表长按,2代表双击。
消息字段3:key_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;
}
}
}}
}