Modify Android Usb Framework
- PART 1
-
path: vendor/BYD/app/Settings/res/values/strings.xml
purpose: 增加一项新usb mode
detail: 需要支持多国语言
*
<!-- Storage setting. Title for NEW checkbox [CHAR LIMIT=30]-->
<string name="usb_NEW_title">NEW device (NEW)</string>
<!-- Storage setting. Summary for NEW checkbox [CHAR LIMIT=NONE]-->
<string name="usb_NEW_summary">NEW NEW NEW </string>
*
-
purpose: Add preference item to PreferenceScreen
path: packages/appsSettings/res/xml/usb_settings.xml
*
<CheckBoxPreference
android:key="usb_NEW"
android:title="@string/usb_NEW_title"
android:summary="@string/usb_NEW_summary"
/>
*
-
-
PURPOSE: Add New mode to UsbSettings
PATH: packages/apps/Settings/src/com/android/settings/deviceinfo/UsbSettings.java
IMPORTANT:
- 设定new mode为 rndis模式
- UsbSettings在接收到来自UsbDeviceManager的广播,会调用getDefaultFunction()
更新当前(current)enabled function,注意不是default functions
PATCH:
*
+48 private static final String KEY_NEW = "usb_NEW";
+53 private CheckBoxPreference mNEW;
+78 mNEW = (CheckBoxPreference)root.findPreference(KEY_NEW);
+115 else if (UsbManager.USB_FUNCTION_RNDIS.equals(function)) {
mMtp.setChecked(false);
mPtp.setChecked(false);
mNEW.setChecked(true);
}
+112 mNEW.setChecked(false);
+116 mNEW.setChecked(false);
+124 mNEW.setChecked(false);
+132 mNEW.setChecked(true);
+137 mNEW.setChecked(false);
+165 else if (preference == mNEW) {
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_RNDIS, true);
updateToggles(UsbManager.USB_FUNCTION_RNDIS);
}
*
-
-
PURPOSE: About defining Usb Mode in the UsbManager.java
PATH: frameworks/base/core/java/android/hardware/usb/UsbManager.java
NOTE: If you need to add a new usb Mode, you must add your usb mode to UsbManager.java. like
public static final String USB_FUNCTION_NEW = "NEW";
Then you need implementing your new mode in UsbServer(UsbDeviceManager, init.rc, Driver)
-
-
PURPOSE: Debugging UsbDeviceManager
PATH: frameworks/base/core/java/android/hardware/usb/UsbDeviceManager.java
NOTE:
-
path: vendor/BYD/app/Settings/res/values/strings.xml
purpose: 增加一项新usb mode
detail: 需要支持多国语言
*
<!-- Storage setting. Title for NEW checkbox [CHAR LIMIT=30]-->
<string name="usb_NEW_title">NEW device (NEW)</string>
<!-- Storage setting. Summary for NEW checkbox [CHAR LIMIT=NONE]-->
<string name="usb_NEW_summary">NEW NEW NEW </string>
*
-
purpose: Add preference item to PreferenceScreen
path: packages/appsSettings/res/xml/usb_settings.xml
*
<CheckBoxPreference
android:key="usb_NEW"
android:title="@string/usb_NEW_title"
android:summary="@string/usb_NEW_summary"
/>
*
-
-
PURPOSE: Add New mode to UsbSettings
PATH: packages/apps/Settings/src/com/android/settings/deviceinfo/UsbSettings.java
IMPORTANT:
- 设定new mode为 rndis模式
- UsbSettings在接收到来自UsbDeviceManager的广播,会调用getDefaultFunction()
更新当前(current)enabled function,注意不是default functions
PATCH:
*
+48 private static final String KEY_NEW = "usb_NEW";
+53 private CheckBoxPreference mNEW;
+78 mNEW = (CheckBoxPreference)root.findPreference(KEY_NEW);
+115 else if (UsbManager.USB_FUNCTION_RNDIS.equals(function)) {
mMtp.setChecked(false);
mPtp.setChecked(false);
mNEW.setChecked(true);
}
+112 mNEW.setChecked(false);
+116 mNEW.setChecked(false);
+124 mNEW.setChecked(false);
+132 mNEW.setChecked(true);
+137 mNEW.setChecked(false);
+165 else if (preference == mNEW) {
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_RNDIS, true);
updateToggles(UsbManager.USB_FUNCTION_RNDIS);
}
*
-
-
PURPOSE: About defining Usb Mode in the UsbManager.java
PATH: frameworks/base/core/java/android/hardware/usb/UsbManager.java
NOTE: If you need to add a new usb Mode, you must add your usb mode to UsbManager.java. like
public static final String USB_FUNCTION_NEW = "NEW";
Then you need implementing your new mode in UsbServer(UsbDeviceManager, init.rc, Driver)
-
-
PURPOSE: Debugging UsbDeviceManager
PATH: frameworks/base/core/java/android/hardware/usb/UsbDeviceManager.java
NOTE:
-
- PART 2: About setup MTP driver environment