[高通SDM450][Android 9.0] 虹软人脸算法WIFI信息变化导致授权失败

虹软人脸算法WIFI信息变化导致授权失败

开发平台基本信息

芯片: 高通SDM450
版本: Android 9.0
kernel: msm-4.9

补丁下载地址

https://gitee.com/Hebin320/csdn_patch

前言

人脸算法授权会获取设备终端的一些硬件信息进行算法绑定,而如果设备终端的信息发生改变算法授权就会失效;上一篇讲到了IMEI发生变化导致虹软算法失效的解决,具体可以看 虹软人脸识别因IMEI变化导致授权失败

问题描述

虹软算法在绑定设备终端的硬件信息中,有保存wifi的硬件信息,而wifi的硬件信息会随着wifi驱动的卸载与加载发生变化,而Android原生的代码中,开关wifi都会卸载、挂载wifi驱动;这使得在使用人脸算法的时候,开关wifi算法会认为设备终端的硬件信息发生了改变。

解决方法

通过问题的分析,可以得出解决方案就是在开关wifi的时候,只有第一次才会去加载wifi驱动,加载成功之后,再开关wifi都不要去卸载以及重新挂载wifi驱动;并且在开机的时候,系统拉起来之前,去开关一次wifi,把wifi驱动挂载。修改文件路径是:

  1. frameworks/opt/net/wifi/libwifi_hal/driver_tool.cpp
  2. frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java

具体修改patch如下:

diff --git a/libwifi_hal/driver_tool.cpp b/libwifi_hal/driver_tool.cpp
old mode 100644
new mode 100755
index 3089ee0..3f2774d
--- a/libwifi_hal/driver_tool.cpp
+++ b/libwifi_hal/driver_tool.cpp
@@ -44,16 +44,33 @@ bool DriverTool::TakeOwnershipOfFirmwareReload() {
   return true;
 }
 
+bool isFirstLoad = true;
+bool isLoadDriver = false;
+
 bool DriverTool::LoadDriver() {
-  return ::wifi_load_driver() == 0;
+  //return ::wifi_load_driver() == 0;
+  if(isFirstLoad){
+	  if(::wifi_load_driver() == 0){
+		  isFirstLoad = false;
+		  isLoadDriver = true;
+		  return true;
+	  }
+	  return false;
+  }else{
+	  isLoadDriver = true;
+	  return true;
+  }
 }
 
 bool DriverTool::UnloadDriver() {
-  return ::wifi_unload_driver() == 0;
+  //return ::wifi_unload_driver() == 0;
+  isLoadDriver = false;
+  return true;
 }
 
 bool DriverTool::IsDriverLoaded() {
-  return ::wifi_unload_driver() != 0;
+  //return ::wifi_unload_driver() != 0;
+  return isLoadDriver;
 }
 
 bool DriverTool::IsFirmwareModeChangeNeeded(int mode) {
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
old mode 100644
new mode 100755
index fc98f4e..27ded35
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -654,7 +654,25 @@ public class WifiServiceImpl extends IWifiManager.Stub {
             } catch (RemoteException e) {
                 /* ignore - local call */
             }
-        }
+        }else{
+			try {
+                setWifiEnabled(mContext.getPackageName(), true);
+            } catch (RemoteException e) {
+                /* ignore - local call */
+            }
+			final WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Thread.sleep(1000);
+                        wifiManager.setWifiEnabled(false);
+                    } catch (InterruptedException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
+		}
     }
 
     public void handleUserSwitch(int userId) {
-- 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值