From d4feb21868458d2db8275a7e8440922e5807ed0f Mon Sep 17 00:00:00 2001
From: lzw <lzw@github.aaej.cn>
Date: 星期三, 28 二月 2024 16:09:16 +0800
Subject: [PATCH] 两次枚举 usb ,防止枚举不出来设备
---
app/src/main/AndroidManifest.xml | 2
app/src/main/java/com/fwupgrade/saymanss/deviceplug/UstorageDeviceInstance.java | 26 ++++++++++++
app/src/main/java/com/fwupgrade/saymanss/HomePageActivity.java | 30 +++++++++++++++
app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java | 42 +++++++++++++-------
4 files changed, 83 insertions(+), 17 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 99b23ca..61b138a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,7 +14,7 @@
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
- <!-- <activity android:name=".HomePageActivity"
+<!-- <activity android:name=".HomePageActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenSize"
android:launchMode="singleTask"
diff --git a/app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java b/app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java
index e0ce41b..e45618b 100644
--- a/app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java
+++ b/app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java
@@ -61,6 +61,7 @@
private static final int UPGRADE_FAIL = 3;
private static final int UPGRADE_SUCCESS = 4;
+
private CameraInfo mCamInfo = null;
private static final String TAG = FwUpgradeService.class.getCanonicalName();
private IFwAidlInterface.Stub mBinder = new IFwAidlInterface.Stub() {
@@ -83,6 +84,7 @@
super.onCreate();
Log.i(TAG,"onCreate");
initTarget();
+
initData();
initDeviceSDK();
UStorageTestModule.getInstance().initUStorageDeviceModuleWithVirtualDisk(AppPathInfo.getLogPath());
@@ -117,13 +119,17 @@
case USB_DEVICE_DETACHED:
- boolean isSuccessful1 = (boolean) msg.obj;
- if (isSuccessful1) {
- Toast.makeText(FwUpgradeService.this, "USB璁惧鏉冮檺鐢宠鎴愬姛", Toast.LENGTH_SHORT).show();
- } else {
- Log.i(TAG,"鍙戦�佸け璐ョ粨鏋滃箍鎾粰椹惧煿");
- sendToDriveTrainByBroadCast(0,1);
- sendToNewDriveTrainByBroadCast(0,1);
+ int count = (int) msg.obj;
+ Log.i(TAG,"count="+count);
+ if (count<2) {
+ tty.clear();
+ initTarget();
+ int ret = UstorageDeviceInstance.getInstance().tryAgain(FwUpgradeService.this);
+ if (ret==1){
+ Log.i(TAG,"鍙戦�佸け璐ョ粨鏋滃箍鎾粰椹惧煿");
+ sendToDriveTrainByBroadCast(0,1);
+ sendToNewDriveTrainByBroadCast(0,1);
+ }
}
break;
@@ -150,7 +156,7 @@
int errCode = msg.arg1;
int succ_num = 0, fail_num = 0;
- Log.d("fwup","Upgrade result:" + devName + ", errCode: " + errCode);
+ Log.d("fwup","Upgrade result:" + devName + ", errCode: " + errCode+".ttySize="+tty.size());
if (tty.containsKey(devName)) {
tty.put(devName, errCode == 0? UPGRADE_SUCCESS:UPGRADE_FAIL);
@@ -207,8 +213,10 @@
for (UsbDevice usbDevice: targets) {
if (usbDevice.getDeviceName().compareTo(min) < 0) {
min = usbDevice.getDeviceName();
+
}
}
+ Log.i(TAG,"min="+min);
tty.put(min, UPGRADE_PRESET);
}
@@ -244,16 +252,19 @@
* UstorageDeviceSDK鍒濆鍖�.
*/
private void initDeviceSDK() {
+ int count = 0 ;
int ret = UstorageDeviceInstance.getInstance().tryAttcheDeviceHandle(FwUpgradeService.this, FwUpgradeService.this);
Log.i(TAG,"initDeviceSDk,ret="+ret);
if (ret==1){
+
+ ++count;
+ Log.i(TAG,"鍐嶆鐨勫垵濮嬪寲");
Message message = Message.obtain();
- message.obj = false;
+ message.obj = count;
message.what = USB_DEVICE_DETACHED;
mHander.sendMessageDelayed(message,1000);
-
-
}
+
}
@Override
@@ -298,7 +309,7 @@
String serial = ctrlBlock.getSerial();
- Log.d(TAG,"sonixCamInit " + String.format("vendorId:%d productId:%d fileDescriptor:%d busNum:%d devNum:%d usbfsName:%s devName:%s serial:%s", vendorId, productId, fileDescriptor, busNum, devNum, usbfsName, devName, serial));
+ Log.d(TAG,"sonixCamInit " + String.format("vendorId:%d productId:%d fileDescriptor:%d busNum:%d devNum:%d usbfsName:%s devName:%s serial:%s,tty.size=%d", vendorId, productId, fileDescriptor, busNum, devNum, usbfsName, devName, serial,tty.size()));
if (tty.containsKey(devName) && tty.get(devName) == 0) {
@@ -306,16 +317,17 @@
tty.put(devName, 1);
}
+
+
if (!isTarget) {
+
Log.d(TAG,"Not sonixCam, close");
ctrlBlock.close();
- sendToDriveTrainByBroadCast(0,1);
- sendToNewDriveTrainByBroadCast(0,1);
+
return;
}
Log.d(TAG,"Is sonixCam, upgrade!");
-
Message msg = Message.obtain();
//msg.obj = errCode == 0;
msg.obj = new CameraInfo(vendorId, productId, fileDescriptor, busNum, devNum, usbfsName, devName);
diff --git a/app/src/main/java/com/fwupgrade/saymanss/HomePageActivity.java b/app/src/main/java/com/fwupgrade/saymanss/HomePageActivity.java
index 39cb1b1..dc5c3fa 100644
--- a/app/src/main/java/com/fwupgrade/saymanss/HomePageActivity.java
+++ b/app/src/main/java/com/fwupgrade/saymanss/HomePageActivity.java
@@ -2,6 +2,7 @@
import android.Manifest;
import android.annotation.TargetApi;
+import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -22,6 +23,7 @@
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
+import android.widget.Toast;
import com.fwupgrade.saymanss.adapter.FwFileListAdapter;
import com.fwupgrade.saymanss.deviceplug.IUsbDevicePlugDelegate;
@@ -217,6 +219,33 @@
UStorageTestModule.getInstance().initUStorageDeviceModuleWithVirtualDisk(AppPathInfo.getLogPath());
}
+
+ public void openThirdPartyApp(String pkgName) {
+ try {
+ // 鏇挎崲涓虹涓夋柟搴旂敤绋嬪簭鐨勫寘鍚嶅拰MainActivity鐨勫畬鏁寸被鍚�
+ String mainActivityName = pkgName+".MainActivity";
+
+ // 鍒涘缓Intent鏉ュ惎鍔ㄧ涓夋柟搴旂敤绋嬪簭鐨凪ainActivity
+ Intent intent = new Intent();
+ intent.setComponent(new ComponentName(pkgName, mainActivityName));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+ // 鍚姩Intent
+ startActivity(intent);
+ } catch (Exception e) {
+ // 澶勭悊寮傚父鎯呭喌锛屼緥濡傚簲鐢ㄧ▼搴忔湭瀹夎绛�
+ e.printStackTrace();
+ Toast.makeText(this, "鏃犳硶鍚姩绗笁鏂瑰簲鐢ㄧ▼搴�", Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ //
+// openThirdPartyApp("safeluck.drive.training");
+ }
+
@Override
protected void onNewIntent(Intent intent) {
Log.d(TAG, "onNewIntent");
@@ -226,6 +255,7 @@
@Override
protected void onDestroy() {
+ Log.i(TAG,"onDestroy");
super.onDestroy();
}
diff --git a/app/src/main/java/com/fwupgrade/saymanss/deviceplug/UstorageDeviceInstance.java b/app/src/main/java/com/fwupgrade/saymanss/deviceplug/UstorageDeviceInstance.java
index bd86c51..28fe7bf 100644
--- a/app/src/main/java/com/fwupgrade/saymanss/deviceplug/UstorageDeviceInstance.java
+++ b/app/src/main/java/com/fwupgrade/saymanss/deviceplug/UstorageDeviceInstance.java
@@ -86,6 +86,28 @@
return 0;
}
+ public int tryAgain(Context context){
+ mUsbManager = (UsbManager) context.getSystemService(USB_SERVICE);
+
+ /* Object deviceInfo = null;
+
+ if (null != (deviceInfo = acceptOTGDeviceInfo(mUsbManager))) {
+ //婊¤冻 鍗冲綋鍓嶅瓨鍦∣TG璁惧鎻掑叆 OTG璁惧绫诲瀷
+// initOTGDeviceModule(context, (UsbDevice) deviceInfo);
+ acceptLicense(context, deviceInfo);
+ }*/
+
+ ArrayList<UsbDevice> devices = acceptOTGDeviceInfo(mUsbManager);
+ if (devices==null || devices.size()==0){
+ Log.i("fwup","tryAgain devices==null");
+ return 1;
+ }
+ for (UsbDevice dev: devices) {
+ acceptLicense(context, dev);
+ }
+ return 0;
+ }
+
//<<<--------------------------------------- Usb 鐩稿叧澶勭悊--------------------------------------------
/**
* 鑾峰彇绗﹀悎淇℃伅鐨凮TG璁惧
@@ -96,7 +118,9 @@
ArrayList<UsbDevice> devices = new ArrayList<>();
//鎷垮埌OTG璁惧鍒楄〃
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
-
+ if (deviceList==null || deviceList.size()==0){
+ Log.d("fwup","deviceList涓虹┖ ");
+ }
for (UsbDevice usbDevice : deviceList.values()) {
int productId = usbDevice.getProductId();
// if (productId != 36940) {
--
Gitblit v1.8.0