微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 双SD卡切换(SD SWAP) 方案,如何恢复“设置->存储->默认存储器”的用户选择功能

双SD卡切换(SD SWAP) 方案,如何恢复“设置->存储->默认存储器”的用户选择功能

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
在双SD卡切换方案中,默认会屏蔽Setting中的默认存储器选择功能,这样设计主要是考虑如果把SD卡卸载,
/mnt/sdcard就会被移除,会使得AP会看不到放到mnt/sdcard下的Multi-media data的
thumbnail,导致AP去query media DB会出错,如使得拍照应用预览不到存储在SD卡里的照片。


若客户有需求想要把“选择默认存储器”的功能恢复出来,如果可以接受以上提到的限制,请参考以下solution。


[SOLUTION]
修改涉及到的文件:
- package/app/settings/。/deviceinfo/memory.java:恢复“默认存储器”的选择
功能
- StorageManager.java的getDefaultPath()方法:取得“默认存储器”的实际路径
针对ICS2版本:
1. 修改package/app/settings/。/deviceinfo/Memory.java
修改点:下面的代码可能跟贵司现有的代码不一致,但思路是一样的,即: 把原来通过
FeatureOption.mtk_SWAP_STATIC_MODE包着的“移除默认存储器选择功能”的代码段disable掉
,如下:
public void onCreate(Bundle icicle) {
. . . . . .
if(FeatureOption.MTK_2SDCARD_SWAP) {
//把判断条件里的FeatureOption.MTK_SWAP_STATIC_MODE修改成false
if(FeatureOption.MTK_SWAP_STATIC_MODE) à false
{
getPreferenceScreen().removePreference(mDefaultWriteCategory);
}
IntentFiLTEr mFilter = new IntentFilter();
mFilter.adDACtion(ACTION_DYNAMIC_SD_SWAP);
getActivity().registerReceiver(mDynSwapReceiver, mFilter);
}
}
. . . . . .
public void onResume() {
....
// 把判断条件里的FeatureOption.MTK_SWAP_STATIC_MODE修改成false
// if(!(FeatureOption.MTK_2SDCARD_SWAP &&
FeatureOption.MTK_SWAP_STATIC_MODE)) { à false
dynamicShowDefaultWriteCategory();
}
---------
public boolean onPreferenceChange(Preference preference, Object newValue){
//把判断条件里的FeatureOption.MTK_SWAP_STATIC_MODE修改成false
if(FeatureOption.MTK_2SDCARD_SWAP && FeatureOption.MTK_SWAP_STATIC_MODE) {
à false
return false;
}
if (preference != null && preference instanceof RadioButtonPreference) {
if(mDeafultWritePathPref != null) {
mDeafultWritePathPref.setChecked(false);
}
mStorageManager.setDefaultPath(preference.getKey());
mDeafultWritePathPref = (RadioButtonPreference)preference;
return true;
}
return false;
}
private final Runnable mUpdateRunnable = new Runnable() {
public void run() {
//把判断条件里的FeatureOption.MTK_SWAP_STATIC_MODE修改成false
if(!(FeatureOption.MTK_2SDCARD_SWAP && FeatureOption.MTK_SWAP_STATIC_MODE
) ) { à false
dynamicShowDefaultWriteCategory();
}
}
};
. . . . . .
2. StorageManager.java
把getDefaultPath()方法改成以下这样:
public static String getDefaultPath() {
String path = DEFAULT_PATH;
try {
path = SystemProperties.get(PROP_SD_DEFAULT_PATH, DEFAULT_PATH);
} catch (IllegalArgumentException e) {
Log.e(TAG, "IllegalArgumentException when get default path:"+e);
}
Log.i(TAG, "getDefaultPath path="+path);
return path;
}:
. . . . . .
针对ICS版本:
1. 修改package/app/settings/。/deviceinfo/Memory.java
下面的代码可能跟贵司现有的代码不一致,但思路是一样的,即: 把原来通过FeatureOption.
MTK_2SDCARD_SWAP包着的“移除默认存储器选择功能”的代码段enable,如下:
主要有以下修改点:
// 把判断条件里的!FeatureOption.MTK_2SDCARD_SWAP修改成true,让代码可以被执行到
if(!FeatureOption.MTK_2SDCARD_SWAP) { à true
dynamicShowDefaultWriteCategory();
}
. . . . . .
public boolean onPreferenceChange(Preference preference, Object newValue){
//把判断条件里的FeatureOption.MTK_2SDCARD_SWAP修改成false,让代码不要被执行到
if(FeatureOption.MTK_2SDCARD_SWAP) { à false
return false;
}
. . . . . .
//把判断条件里的FeatureOption.MTK_2SDCARD_SWAP修改成false,让代码不要被执行到
if(FeatureOption.MTK_2SDCARD_SWAP) { à false
getPreferenceScreen().removePreference(mDefaultWriteCategory);
}
. . . . . .
2. StorageManager.java
把getDefaultPath()方法改成以下这样:
public static String getDefaultPath() {
String path = DEFAULT_PATH;
try {
path = SystemProperties.get(PROP_SD_DEFAULT_PATH, DEFAULT_PATH);
} catch (IllegalArgumentException e) {
Log.e(TAG, "IllegalArgumentException when get default path:"+e);
}
Log.i(TAG, "getDefaultPath path="+path);
return path;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top