My Commit on USB Mass Storage
【修改】
mMountService
.setExternalUsbMassStorageEnabled (
true
); @MountService.java
->
enableExternalUsbMassStorage() @StorageManager.java
->
onStorageStateChanged()
@UsbStorageActivity.java, CALLBACK
-> Condition,condition,condition,condition
- UsbSettings上的Mass Storage选项怎样添加上去?
【观察】
【结果】
在UsbDeviceManager.java代码中
updateUsbNotification部分,通过读取volume allowMassStorage配置信息,决定了是否显示USB Notification。
"Touch for other USB options"@Notification -> "PTP, MTP" @PreferenceFragment
一旦用户点击了Notification,会跳转到UsbSettings preference fragment界面。现在的问题是UMS
是怎样添加到UsbSettings Fragment中的呢?
【修改】 配置storage 属性
FILE: vendor/intel/mfld_pr2/overlays/frameworks/base/core/res/res/xml/storage_list.xml
LINE: +39
android:allowMassStorage
=
"true"
+45
android:allowMassStorage
=
"true"
2. 步骤规划
step1: 实现mass storage
step2: 实现external sd mass storage feature
【修改】 vold.fstab 让vold挂载到mmc
FILE: vendor/intel/mfld_pr2/vold.fstab
LINE:
#dev_mount sdcard_ext /
mnt
/sdcard_ext auto /devices/pci0000:00/0000:00:04.0/mmc_host/mmc1
#/devices/pci0000:00/0000:00:02.3/gadget/lun0
# build-in memory
dev_mount
sdcard
/
mnt
/
sdcard 7
/devices/pci0000:00/0000:00:01.0/mmc_host/mmc0
/devices/pci0000:00/0000:00:02.3/gadget/lun0
# external sdcard memory
dev_mount sdcard_ext /
mnt
/sdcard_ext auto
/devices/pci0000:00/0000:00:04.0/mmc_host/mmc1
/devices/pci0000:00/0000:00:02.3/gadget/lun1
----------------------------------------------------------------------------------------------------------------------------------
-
FILE: UsbManager.java
*
<li>
{@link #USB_FUNCTION_MASS_STORAGE }
boolean extra indicating whether the
* mass storage function is enabled
FILE: IMountService.java
*
/**
* Enables / disables USB mass storage. The caller should check
* actual status of enabling/disabling USB mass storage via
* StorageEventListener.
*/
public
void
setUsbMassStorageEnabled(
boolean
enable)
throws
RemoteException
*
FILE: MountServiceListener.java
*
/**
* USB Mass storage connection state has changed.
*
*
@param
connected True if UMS is connected.
*/
void
onUsbMassStorageConnectionChanged (
boolean
connected) {
*
<search>
onUsbMassStorageConnectionChanged
FILE: DatabaseHelper.java
*
loadBooleanSetting(stmt, Settings.Secure.
USB_MASS_STORAGE_ENABLED
,
R.bool.def_usb_mass _storage_enabled);
*
FILE: frameworks/base/packages/SettingsProvider/res/values/defaults.xml
*
<
bool
name
=
"def_usb_mass_storage_enabled"
>
true
</
bool
>
*
-
01-01 00:22:57.469: E/UsbSettings(527): UsbAccessoryMode false