# dfl_test **Repository Path**: sunysan/dfl_test ## Basic Information - **Project Name**: dfl_test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-18 - **Last Updated**: 2025-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README /** * 车灯管理 */ public class LampManager { private static final String TAG = "LampManager"; private Context mContext; private final LampCallback lampCallback = new LampCallback(); private ILamp mLamp; private boolean isConnecting = false; private long startConnectTime; @SuppressLint("StaticFieldLeak") private static LampManager instance; private LampManager() { } public static synchronized LampManager getInstance() { if (instance == null) { synchronized (LampManager.class) { if (instance == null) { instance = new LampManager(); } } } return instance; } public void init(Context mContext) { this.mContext = mContext; if (!isConnecting || Math.abs(System.currentTimeMillis() - startConnectTime) > CommonConstants.CUSTOMAPI_TIMEOUT) { LoggerUtil.e(TAG, "mLamp is null, reInit!"); isConnecting = true; startConnectTime = System.currentTimeMillis(); ThreadPoolManager.getInstance().post(() -> { LoggerUtil.e(TAG, "BaseManager create"); BaseManager.create(mContext, Constants.DFL_VEHICLE_BCM_LAMP_LAMP_SERVICE, new APICreateCallback() { @Override public void onAPICreateCallback(APIStateType.APIState apiState, String s, IBaseAPI iBaseAPI) { LoggerUtil.e(TAG, "onAPICreateCallback; apiState=" + apiState.ordinal() + ",iBaseAPI=" + iBaseAPI + ",s=" + s); isConnecting = false; if (Constants.DFL_VEHICLE_BCM_LAMP_LAMP_SERVICE.equals(s)) { synchronized (this) { if (apiState == APIStateType.APIState.SUCCESS && iBaseAPI instanceof ILamp) { mLamp = (ILamp) iBaseAPI; registerCallback(); LoggerUtil.d(TAG, "onAPICreateCallback; create success"); // getInitData(); } else { // 不成功或者连接断开 mLamp = null; LoggerUtil.d(TAG, "onAPICreateCallback; create failed"); } } } } @Override public void onMethodStateCallback(APIStateType.APIState apiState, String s) { LoggerUtil.d(TAG, "onMethodStateCallback; APIState =" + apiState + ", s = " + s); } }); }); } } /** * 注册监听 */ private void registerCallback() { try { mLamp.registerLampCallback(lampCallback); } catch (Exception e) { handleException("registerCallback", e); } } /** * 室内灯色温及亮度控制 * @param type 0 控制开关 1 亮度 2 色温 * @param zone 0 ALL 1 前左 2 前右 3 后左 4 后右 * @param status 0 关闭 1 打开 * //控制开关:0 关闭 1 打开 * //色温:【1,100】 * //亮度:【1,100】 */ public void setInternalLightColandBriStatus(int type, int zone, int status) { LoggerUtil.e(TAG, "室内灯色温及亮度控制:setInternalLightColandBriStatus type= " + type + ",zone = " + zone + ",status = " + status); if (checkService()) { try { mLamp.setInternalLightColandBriStatus(type, zone, status); } catch (Exception e) { handleException("setInternalLightColandBriStatus", e); } } } /** * 室内灯色温及亮度控制 * * @param type 0 控制开关 1 亮度 2 色温 * @param zone 0 ALL 1 前左 2 前右 3 后左 4 后右 * @return int status:0 关闭 1 打开 * //控制开关:0 关闭 1 打开 * //色温:【1,100】 * //亮度:【1,100】 */ public int getInternalLightColandBriStatus(int type, int zone) { int status = STATE_UNKNOWN; if (checkService(false)) { try { status = mLamp.getInternalLightColandBriStatus(type, zone); LoggerUtil.e(TAG, "getInternalLightColandBriStatus type = " + type + ",zone = " + zone); } catch (Exception e) { handleException("getInternalLightColandBriStatus", e); } } return status; } /** * 室内灯开门联动开关 * @param status 0 全关 1 四门单独 2 全开 */ public void setIntLightDoorLinkStatus(int status) { LoggerUtil.e(TAG, "setIntLightDoorLinkStatus status = " + status); if (checkService()) { try { mLamp.setIntLightDoorLinkStatus(status); } catch (Exception e) { handleException("setIntLightDoorLinkStatus", e); } } } /** * 室内灯开门联动开关 * @return status */ public int getIntLightDoorLinkStatus() { int status = STATE_UNKNOWN; if (checkService(false)) { try { status = mLamp.getIntLightDoorLinkStatus(); LoggerUtil.e(TAG, "getIntLightDoorLinkStatus"); } catch (Exception e) { handleException("getIntLightDoorLinkStatus", e); } } return status; } /** * 检查服务连接是否正常 * * @return true正常,false异常,需要重连 */ public boolean checkService(boolean isToast) { if (mLamp == null) { if (isToast) { LoggerUtil.e(TAG, mContext.getString(R.string.setting_error)); } init(mContext); return false; } return true; } public boolean checkService() { return checkService(true); } /** * 处理异常场景 */ private void handleException(String tag, Exception e) { if (e instanceof NullServiceException) { mLamp = null; } e.printStackTrace(); LoggerUtil.e(TAG, tag + ", " + e); } /** * 车灯回调 */ private static class LampCallback implements ILampCallback { /** * 车前大灯 * * @param status 0 关 1 位置灯 2 近光灯 3 自动大灯 */ @Override public void onHeadLampStatusChange(int status) { LoggerUtil.e(TAG, "车前大灯:onHeadLampStatusChange status= " + status); } /** * 车大灯灯语设置和状态显示 * (SOA灯语) * * @param type 1 生日快乐 2 Nissan主题 3 春节 4 元旦 * @param status 0 停止 1 开始 */ @Override public void onHeadLampSOASignalStatusChange(int type, int status) { LoggerUtil.e(TAG, "车大灯灯语设置和状态显示:onHeadLampSOASignalStatusChange type, status= " + type + " , " + status); } /** * 自动远近光灯 * * @param status 0 关 1 开 */ @Override public void onAutomaticNearFarLampStatusChange(int status) { LoggerUtil.e(TAG, "自动远近光灯:onAutomaticNearFarLampStatusChange status= " + status); } /** * 车灯高度调节 * * @param status 1 低 2 中 3 标准 4 高 */ @Override public void onHeadLampHeightChange(int status) { LoggerUtil.e(TAG, "车灯高度调节:onHeadLampHeightChange status= " + status); } /** * 后雾灯 * * @param status 0 关 1 开 */ @Override public void onRearFogLampStatusChange(int status) { LoggerUtil.e(TAG, "onRearFogLampStatusChange status= " + status); } /** * 车灯灯语 * * @param status int status: * 0 关;1 星辰 (soa灯语);2 铃音;3 呱呱,喵喵,咩咩;4 圣诞;5 迎宾&解锁;6 上锁; * 7 快充;8 慢充;9 停车等待 * LK1A专用: * 10 Nissan;11 Hi;12 叮叮;13 喵喵;14 钵;15 短停提醒;16 接近告警; * 21 自定义灯语1 22 自定义灯语2 23 烟花(631) */ @Override public void onLampSignalStatusChange(int status) { LoggerUtil.e(TAG, "车灯灯语:onLampSignalStatusChange status= " + status); } /** * 室内灯亮度及色温控制 * * @param type 0 控制开关 1 亮度 2 色温 * @param zone 0 ALL 1 前左 2 前右 3 后左 4 后右 * @param status 0 关闭 1 打开 * 控制开关:0 关闭 1 打开 * 色温:【1,100】 * 亮度:【1,100】 */ @Override public void onInternalLightColandBriStatusChange(int type, int zone, int status) { LoggerUtil.e(TAG, "室内灯亮度及色温控制:onInternalLightColandBriStatusChange type = " + type + ", zone =" + zone + ", status = " + status); } /** * 室内灯开门联动开关 * * @param status int status: 0 全关 1 四门单独 2 全开 */ @Override public void onIntLightDoorLinkStatusChange(int status) { LoggerUtil.e(TAG, "室内灯开门联动开关:onIntLightDoorLinkStatusChange status = " + status); } @Override public void onMakeupMirrorStatusChange(int i, int i1, int i2) { } /** * 场景灯语 * * @param scene 1 迎宾&解锁 2 上锁 3 快充 4 慢充 5 停车等待 LK1A专用:6 短停提醒 7 接近告警 * @param status 0 关闭 1 开启 */ @Override public void onScenarioLampSignalStatusChange(int scene, int status) { LoggerUtil.e(TAG, "场景灯语:onScenarioLampSignalStatusChange scene= " + scene + " status = " + status); } /** * 位置灯状态反馈 * * @param position 1 左前 2 右前 3 中间左侧 4 中间右侧 5 后位置灯 * @param status 0 关闭 1 开启 */ @Override public void onPositionLampStatusChange(int position, int status) { LoggerUtil.e(TAG, "位置灯状态反馈:onPositionLampStatusChange position= " + position + " status = " + status); } /** * 近光灯状态反馈 * * @param status 0 关闭 1 开启 2 只有左近光灯开启 3 只有右近光灯开启 4 近光灯异常 */ @Override public void onLowBeamStatusChange(int status) { LoggerUtil.e(TAG, "onLowBeamStatusChange status= " + status); } /** * 远光灯状态反馈 * * @param status 0 关闭 1 开启 2 只有左远光灯开启 3 只有右远光灯开启 4 远光灯异常 */ @Override public void onHighBeamStatusChange(int status) { LoggerUtil.e(TAG, "onHighBeamStatusChange status= " + status); } /** * 双闪&转向灯状态反馈 * * @param direction 1 左 2 右 * @param status 0 关闭 1 开启 2 灯异常(前转向灯才有) */ @Override public void onDirectionIndicatorLampStatusChange(int direction, int status) { LoggerUtil.e(TAG, "onDirectionIndicatorLampStatusChange direction= " + direction + " status = " + status); } /** * 日行灯状态反馈 * * @param status 0 关闭 1 开启 2 只有左日行灯开启 3 只有右日行灯开启 4 日行灯异常 */ @Override public void onDaytimeRunningLampStatusChange(int status) { LoggerUtil.e(TAG, "onDaytimeRunningLampStatusChange status= " + status); } /** * 刹车灯状态反馈 * * @param status 0 关闭 1 开启 */ @Override public void onBrakeLampStatusChange(int status) { LoggerUtil.e(TAG, "onBrakeLampStatusChange status= " + status); } /** * 尾灯皮肤设置和状态显示 * * @param status 0 关 */ @Override public void onTailLightSkinStatusChange(int status) { LoggerUtil.e(TAG, "onTailLightSkinStatusChange status " + status); } /** * 大灯/尾灯音乐律动开关和状态显示 * * @param status :0 关闭 1 开启 */ @Override public void onLampMusicRhythmStatus(int status) { // TODO: 2023/11/30 新增 LoggerUtil.d(TAG, "onLampMusicRhythmStatus i=" + status); } /** * 大灯/尾灯音乐律动个数百分比设置和状态显示 * * @param result */ @Override public void onLampMusicRhythmPercentChange(int result) { // TODO: 2023/11/30 新增 LoggerUtil.d(TAG, "onLampMusicRhythmPercentChange i=" + result); } /** * 大灯/尾灯音乐律动亮度设置和状态显示 * @param brightness:0~100 */ @Override public void onLampMusicRhythmBrightnessChange(int brightness) { // TODO: 2023/11/30 新增 LoggerUtil.d(TAG, "onLampMusicRhythmBrightnessChange i=" + brightness); } /** * 大灯/尾灯音乐律动子灯效设置和状态显示 * @param result :1-5预留子灯效 */ @Override public void onLampMusicRhythmEffectChange(int result) { // TODO: 2023/11/30 新增 LoggerUtil.d(TAG, "onLampMusicRhythmEffectChange i=" + result); } /** * 大灯/尾灯音乐律动开始结束控制和状态显示 * @param result : 0 开始 1 结束 */ @Override public void onLampMusicRhythmChange(int result) { // TODO: 2023/11/30 新增 LoggerUtil.d(TAG, "onLampMusicRhythmChange i=" + result); } /** * 自定义灯语动效设置和状态显示 * @param customID 0、无替换或还原; 1、自定义灯语1; 2、自定义灯语2;3~6 预留;7、no request * @param type 0、no request 1、闪烁 2、BlingBling 3、呼吸 */ @Override public void onCustomLampSignalEffectChange(int customID, int type) { LoggerUtil.e(TAG, "onCustomLampSignalEffectChange customID= " + customID + "type=" + type); } /** * 自定义灯语替换场景灯语设置和状态显示 * @param scene 1、迎宾&解锁 2、上锁 3、快速充电 4、慢速充电 5、停车等待 6、转向 7、急刹车告警 * 8、短停提醒 9、倒车提醒 10、危险警告提醒 * @param customID 0、无替换或还原; 1、自定义灯语1; 2、自定义灯语2;3~6 预留;7、no request */ @Override public void onCustomInsteadScenarioSignalChange(int scene, int customID) { LoggerUtil.e(TAG, "onCustomInsteadScenarioSignalChange scene= " + scene + "customID=" + customID); } /** * 星环灯开关和状态显示 * @param status 0、关 1、开 */ @Override public void onA2PositionLampStatusChange(int status) { LoggerUtil.e(TAG, "onA2PositionLampStatusChange status= " + status); } } } if (position == 6) {// 灯光-室内灯控制-开关-全开开启 // int status = LampManager.getInstance().getInternalLightColandBriStatus(0,0); // 室内灯光全开启 status = 1, zone = 0 LampManager.getInstance().setInternalLightColandBriStatus(0, 0, 1); CommonToastUtils.show(toast + LampManager.getInstance().getInternalLightColandBriStatus(0, 0)); } else if (position == 7) {// 灯光-室内灯控制-开门点亮室内灯-全开选择开启 int status = LampManager.getInstance().getIntLightDoorLinkStatus(); // 先判断是否已是全开状态,是的话设置为关 if (status == 2) { LampManager.getInstance().setIntLightDoorLinkStatus(0); } // 再将状态设置为全开 status = 2 LampManager.getInstance().setIntLightDoorLinkStatus(2); CommonToastUtils.show(toast + LampManager.getInstance().getIntLightDoorLinkStatus()); }