android4.2的存储模式默认为MTP存储,相比USB大容量存储,MTP存储具有 无需挂载U盘模式,可以传输文件,这样的好处就是可以不影响adb工作的情况下,通过Windows资源管理器就可以直接传输文件;可以方便的从我的电脑的本地硬盘区分开是移动设备等优点,但是其缺点是 整体性能不如USB大容量存储高,实测确实传输速度受了点影响;对于部分文件格式,比如不为多媒体的,图片、音乐、视频文件可能提示设备不支持的对话框,如果手机当做U盘传输部分文件总会弹出 不支持的文件格式提示对话框;对于大文件传输不是很稳定,有时候会提示出错,当然部分电脑的MTP驱动较老,在Linux系统下,Ubuntu的MTPFS较为稳定。
在项目中,需要将MTP存储方式改成USB大容量存储,以较方便的访问内置和外置存储卡,方法是在buildinfo.sh或项目对应的mk文件中加上
PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.usb.config=mass_storage,adb
即可,这样,会在编译生成的build.prop文件中生成响应的默认属性值persist.sys.usb.config=mass_storage,adb(mass_storage为存储方式,adb是adb调试打开),
在UsbManager.java中得到默认存储方式:
public String getDefaultFunction() {
String functions = SystemProperties.get("persist.sys.usb.config", "");
int commaIndex = functions.indexOf(',');
if (commaIndex > 0) {
return functions.substring(0, commaIndex);
} else {
return functions;
}
}
同理,设置MTP存储方式的属性值
PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.usb.config=mtp,adb