一:信号图标,3G改为H,G改为E
(frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java)
- static final MobileIconGroup THREE_G = new MobileIconGroup(
- - "3G",
- + "H",
- TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH,
- TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH,
- AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH,
- @@ -282,10 +282,10 @@ class TelephonyIcons {
- TelephonyIcons.TELEPHONY_NO_NETWORK,
- TelephonyIcons.QS_TELEPHONY_NO_NETWORK,
- AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
- - R.string.accessibility_data_connection_3g,
- - TelephonyIcons.ICON_3G,
- + R.string.accessibility_data_connection_3_5g,
- + TelephonyIcons.ICON_H,
- true,
- - TelephonyIcons.QS_DATA_3G
- + TelephonyIcons.QS_DATA_H
- );
- static final MobileIconGroup WFC = new MobileIconGroup(
- @@ -343,7 +343,7 @@ class TelephonyIcons {
- );
- static final MobileIconGroup G = new MobileIconGroup(
- - "G",
- + "E",
- TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH,
- TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH,
- AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH,
- @@ -351,10 +351,10 @@ class TelephonyIcons {
- TelephonyIcons.TELEPHONY_NO_NETWORK,
- TelephonyIcons.QS_TELEPHONY_NO_NETWORK,
- AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
- - R.string.accessibility_data_connection_gprs,
- - TelephonyIcons.ICON_G,
- + R.string.accessibility_data_connection_edge,
- + TelephonyIcons.ICON_E,
- false,
- - TelephonyIcons.QS_DATA_G
- + TelephonyIcons.QS_DATA_E
- );
- static final MobileIconGroup H = new MobileIconGroup(
二:添加可选的网络 3G
(services/Telephony/src/com/android/phone/MobileNetworkSettings.java)
- mButtonEnabledNetworks.setSummary(R.string.network_3G);
- break;
- case Phone.NT_MODE_WCDMA_ONLY:
- + mButtonEnabledNetworks.setValue(Integer.toString(Phone.NT_MODE_WCDMA_ONLY));
- + mButtonEnabledNetworks.setSummary(R.string.network_3G_only);
- + break;
- case Phone.NT_MODE_GSM_UMTS:
- case Phone.NT_MODE_WCDMA_PREF:
- if (!mIsGlobalCdma) {
- <span style="font-size:12px;"><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="network_3G">GSM/WCDMA (Auto)</string>
- <string name="network_3G_only">Only WCDMA</string>
- <string name="network_2G">Only GSM</string>
- <string-array name="enabled_networks_4g_choices" translatable="false">
- <item>@string/network_4G</item>
- <item>@string/network_3G</item>
- <item>@string/network_3G_only</item>
- <item>@string/network_2G</item>
- </string-array>
- <!-- 网络优先级 -->
- <string-array name="enabled_networks_values" translatable="false">
- <item>"9"</item>
- <item>"0"</item>
- <item>"2"</item>
- <item>"1"</item>
- </string-array>
- </resources></span>
三:语言列表中只保留English,Spanish,French,中文
(除了常规的宏里配置VANZO_PRODUCT_LOCALES=es_ES zh_CN fr_FR en_US,还需在frameworks/base/core/res/res/values/locale_config.xml 中删除不要的语言)
四:更改Google默认打开输入法
(packages/inputmethods/)
(LatinIME/java/Android.mk)
- LOCAL_PACKAGE_NAME := LatinIME
- -LOCAL_CERTIFICATE := shared
- +LOCAL_CERTIFICATE := platform
- LOCAL_JNI_SHARED_LIBRARIES := libjni_latinime
- @@ -34,7 +34,7 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
- android-common inputmethod-common android-support-v4 jsr305 latinime-common
- -
- +LOCAL_PRIVILEGED_MODULE := true
- # Do not compress dictionary files to mmap dict data runtime
- LOCAL_AAPT_FLAGS := -0 .dict
(LatinIME/java/AndroidManifest.xml)
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
- <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
- + <uses-permission android:name="android.permission.WRITE_SETTINGS" />
- + <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
- <application android:label="@string/english_ime_name"
- android:icon="@drawable/ic_launcher_keyboard"
- @@ -164,6 +166,12 @@
- </intent-filter>
- </receiver>
- + <receiver android:name="LatinImeRe" android:enabled="true">
- + <intent-filter>
- + <action android:name="android.intent.action.BOOT_COMPLETED" />
- + </intent-filter>
- + </receiver>
- +
- <!-- Content providers -->
- <provider android:name="com.android.inputmethod.dictionarypack.DictionaryProvider"
- android:grantUriPermissions="true"
(LatinIME/java/src/com/android/inputmethod/latin/LatinImeRe.java)
- +package com.android.inputmethod.latin;
- +
- +import android.content.BroadcastReceiver;
- +import android.content.Context;
- +import android.content.Intent;
- +import android.content.SharedPreferences;
- +import android.provider.Settings;
- +import android.util.Log;
- +import android.view.inputmethod.InputMethodInfo;
- +import android.view.inputmethod.InputMethodManager;
- +import android.view.inputmethod.InputMethodSubtype;
- +
- +import android.text.TextUtils;
- +
- +public class LatinImeRe extends BroadcastReceiver {
- +
- + private static final String TAG = "LatinImeRe";
- +
- + @Override
- + public void onReceive(Context context, Intent intent) {
- + // Set the default input language at the system boot completed.
- + if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
- + Log.w(TAG, "onReceive");
- + SharedPreferences sp = context.getSharedPreferences("default_input_language_config",
- + Context.MODE_PRIVATE);
- + boolean hasSet = sp.getBoolean("has_set", false);
- +
- + setDefaultSubtypes(context);
- + sp.edit().putBoolean("has_set", true).commit();
- + }
- + }
- + /**
- + * M: Set the default IME subtype.
- + */
- + private void setDefaultSubtypes(Context context) {
- + final String serviceName = "com.android.inputmethod.latin/.LatinIME";
- + final String currentPackageName = "com.android.inputmethod.latin";
- + final String enable = Settings.Secure.getString(context.getContentResolver(),
- + Settings.Secure.ENABLED_INPUT_METHODS);
- +
- + Log.w(TAG, "setDefaultSubtypes() enable :" + enable);
- +
- + final InputMethodManager imm = (InputMethodManager) context.getSystemService(
- + Context.INPUT_METHOD_SERVICE);
- + final StringBuilder builder = new StringBuilder();
- +
- + // Get sub type hash code
- + for (InputMethodInfo info : imm.getInputMethodList()) {
- + if (currentPackageName.equals(info.getPackageName())) {
- + for (int i = 0; i < info.getSubtypeCount(); i++) {
- + final InputMethodSubtype subtype = info.getSubtypeAt(i);
- + final String locale = subtype.getLocale().toString();
- + //winny
- + Log.w(TAG, "subtype.getLocale().toString :" + locale);
- +
- + if (isDefaultLocale(locale)) {
- + Log.i(TAG, "default enabled subtype locale = " + locale);
- + builder.append(';');
- + builder.append(subtype.hashCode());
- + }
- + }
- +
- + break;
- + }
- + }
- +
- + Log.w(TAG, "after for loop :" + builder.toString());
- + // Insert the sub type
- + if (builder.length() > 0) {
- + final String subtype = builder.toString();
- + builder.setLength(0);
- +
- + final int index = enable.indexOf(serviceName) + serviceName.length();
- + if (enable.length() > index) {
- + builder.append(enable.substring(0, index));
- + builder.append(subtype);
- + builder.append(enable.substring(index));
- + } else if (enable.length() == index) {
- + builder.append(enable);
- + builder.append(subtype);
- + } else {
- + return;
- + }
- + }
- +
- + // Commit the result
- + android.provider.Settings.Secure.putString(context.getContentResolver(),
- + android.provider.Settings.Secure.ENABLED_INPUT_METHODS, builder.toString());
- + }
- + /**
- + * M: Check if the current locale is default or not.
- + */
- + private boolean isDefaultLocale (String locale) {
- +
- + String[] locales= new String[]{"es"};
- + //将默认的语言在此添加,注意写法与method.xml中的subtype语言保持一致,这里es是西班牙语的示例。
- + for (String s : locales) {
- + if (s.equals(locale)) {
- + return true;
- + }
- + }
- +
- + return false;
- +
- + }
- +}
五:收到短信时,手机无振动
(vendor/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/MessagingNotification.java)
- */
- /// M: comment if, change condition
- //if (vibrateAlways || vibrateSilent && nowSilent) {
- - if (notiProf.needVibrate()
- - && audioManager.shouldVibrate(AudioManager.VIBRATE_TYPE_NOTIFICATION)) {
- + if (notiProf.needVibrate()) {
- defaults |= Notification.DEFAULT_VIBRATE;
- }
- /// @}
- @@ -1471,6 +1470,11 @@ public class MessagingNotification {
- }
- }
- }
- + PowerManager mPowerManager = (PowerManager) (context.getSystemService(Context.POWER_SERVICE));
- + PowerManager.WakeLock mWakeLock = null;
- + mWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP
- + | PowerManager.ON_AFTER_RELEASE, "MMS_wake_lock");
- + mWakeLock.acquire(5000);
- nm.notify(NOTIFICATION_ID, notification);
- // add for OP
六:个别SIM卡在搜索网络的时候 4G/3G/2G 前面显示的是null
(frameworks/opt/telephony/src/java/com/android/internal/telephony/RIL.java)
- (mSimOperatorNumeric.equals(strings[i + 2]))) {
- String sCphsOns = null;
- sCphsOns = simRecord.getSIMCPHSOns();
- - if (sCphsOns != null) {
- + if (sCphsOns != null && !sCphsOns.equals("")) {
- strings[i + 0] = sCphsOns;
- Rlog.d(RILJ_LOG_TAG, "plmn name update to CPHS Ons: "
- + strings[i + 0]);
七:去除信号图标 X
(frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java)
- static final int ICON_CARRIER_NETWORK_CHANGE =
- R.drawable.stat_sys_signal_carrier_network_change_animation;
- - static final int ICON_DATA_DISABLED = R.drawable.stat_sys_data_disabled;
- + static final int ICON_DATA_DISABLED = -1;
- static final int QS_ICON_LTE = R.drawable.ic_qs_signal_lte;
- static final int QS_ICON_3G = R.drawable.ic_qs_signal_3g;
- @@ -256,7 +256,7 @@ class TelephonyIcons {
- static final int QS_ICON_CARRIER_NETWORK_CHANGE =
- R.drawable.ic_qs_signal_carrier_network_change_animation;
- - static final int QS_ICON_DATA_DISABLED = R.drawable.ic_qs_data_disabled;
- + static final int QS_ICON_DATA_DISABLED = -1;
- static final MobileIconGroup CARRIER_NETWORK_CHANGE = new MobileIconGroup(
- "CARRIER_NETWORK_CHANGE",
- @Override
- public Icon getIcon() {
- - return Icon.createWithResource(mManager.getContext(), R.drawable.ic_cellular_off);
- + return Icon.createWithResource(mManager.getContext(), -1);
- }
- @Override
八:拨打语音信箱时显示 @@@@@@@@@@@@@@
(packages/apps/Dialer/InCallUI/src/com/android/incallui/ContactInfoCache.java)
- // later determine whether to use the name or nameAlternative when presenting
- displayName = info.name;
- cce.nameAlternative = info.nameAlternative;
- + if ( displayName !=null && displayName.equals("@@@@@@@@@@@@@@")) {
- + displayName = context.getResources().getString(R.string.voicemail) ;
- + }
- displayNumber = number;
- label = info.phoneLabel;
- Log.d(TAG, " ==> name is present in CallerInfo: displayName '" + displayName
九:sim卡1打开数据网络切换sim卡2,数据网络要跟随开打
(packages/apps/Settings/src/com/android/settings/sim/SimDialogActivity.java)
- final SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
- /// M: for plug-in, need to call before setDefaultDataSubId
- mSimManagementExt.setDataState(subId);
- - subscriptionManager.setDefaultDataSubId(subId);
- + TelephonyManager telephonyManager = TelephonyManager.from(context);
- + boolean enableBefore = telephonyManager.getDataEnabled();
- + int preSubId = subscriptionManager.getDefaultDataSubscriptionId();
- + Log.d(TAG, "data flag: " + enableBefore + ", subId: " + subId + ", preSubId: " + preSubId);
- + if (subscriptionManager.isValidSubscriptionId(subId) &&subId != preSubId) {
- + subscriptionManager.setDefaultDataSubId(subId);
- + if (enableBefore) {
- + telephonyManager.setDataEnabled(subId, true);
- + telephonyManager.setDataEnabled(preSubId, false);
- + }
- + }
- /// M: for plug-in, need to call after setDefaultDataSubId
- mSimManagementExt.setDataStateEnable(subId);
- /// M: for plug-in @{
十:CARD 改为 SIM
(frameworks/base/packages/Keyguard/src/com/mediatek/keyguard/Telephony/KeyguardSimPinPukMeView.java)
- /// fetch the latest/updated active sub list.
- SubscriptionInfo info = mUpdateMonitor.getSubscriptionInfoForSubId(subId, forceReload);
- CharSequence displayName = info != null ? info.getDisplayName() : ""; // don't crash
- + displayName = ((String) displayName).replace("CARD 1","SIM 1").replace("CARD 2","SIM 2");
- // M: add for ALPS02475558
- if (info == null) {
- - displayName = "CARD " + Integer.toString(mPhoneId + 1);
- + displayName = "SIM " + Integer.toString(mPhoneId + 1);
- Log.d(TAG, "we set a displayname");
- }
- Log.d(TAG, "resetState() - subId = " + subId + ", displayName = " + displayName);
- mSimManagementExt.setCurrNetworkIcon(holder.icon, mDialogId, position);
- holder.icon.setAlpha(OPACITY);
- } else {
- - holder.title.setText(sir.getDisplayName());
- + holder.title.setText((sir.getDisplayName().toString()).replace("CARD", "SIM"));
- holder.summary.setText(sir.getNumber());
- holder.icon.setImageBitmap(sir.createIconBitmap(mContext));
- /// M: when item numbers is over the screen, should set alpha 1.0f.
十一:设置->设置PIN/密码锁成功后,再进入输入密码界面,无须输入密码直接点击确定,提示“设置已停止运行”
(packages/apps/Settings/src/com/android/settings/ConfirmLockPassword.java)
- mPasswordEntryInputDisabler.setInputEnabled(false);
- - final String pin = mPasswordEntry.getText().toString();
- + String pin = mPasswordEntry.getText().toString();
- + if (pin.equals("")){
- + pin = "0" ;
- + }
- final boolean verifyChallenge = getActivity().getIntent().getBooleanExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false);
- Intent intent = new Intent();
十二:删除phone > 通话 > IP前缀... 这个选项
(packages/services/Telephony/src/com/android/phone/CallFeaturesSetting.java)
- }
- private void setIpFunction() {
- + PreferenceScreen press = getPreferenceScreen();
- Preference prefIp = getPreferenceScreen().findPreference(IP_PREFIX_KEY);
- Intent intent = new Intent(this, IpPrefixPreference.class);
- intent.putExtra(SubscriptionInfoHelper.SUB_ID_EXTRA, mSubscriptionInfoHelper.getSubId());
- if (prefIp != null) {
- prefIp.setIntent(intent);
- }
- + press.removePreference(prefIp);
- }
- private BroadcastReceiver mReceiver = new BroadcastReceiver() {
十三:浏览器默认搜索引擎更改
(vendor/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/preferences/SearchEngineSettings.java)
- mEntries[i] = searchEngines.get(i).getLabel();
- mEntryFavicon[i] = searchEngines.get(i).getFaviconUri();
- if (mEntryValues[i].equals(searchEngineName)) {
- - selectedItem = i;
- + selectedItem = 1;
- }
- }
十四:更改fingerprint认证
(build/tools/buildinfo.sh)
- echo "# Do not try to parse description, fingerprint, or thumbprint"
- echo "ro.build.description=$PRIVATE_BUILD_DESC"
- -echo "ro.build.fingerprint=$VANZO_INNER_CUSTOM_PRODUCT_BRAND/$VANZO_INNER_CUSTOM_PRODUCT_NAME/$VANZO_INNER_CUSTOM_PRODUCT_DEVICE:$PLATFORM_VERSION/$BUILD_ID/`date +%Y%m%d.%H%M%S`:$TARGET_BUILD_TYPE/release-keys"
- -echo "ro.bootimage.build.fingerprint=$VANZO_INNER_CUSTOM_PRODUCT_BRAND/$VANZO_INNER_CUSTOM_PRODUCT_NAME/$VANZO_INNER_CUSTOM_PRODUCT_DEVICE:$PLATFORM_VERSION/$BUILD_ID/`date +%Y%m%d.%H%M%S`:$TARGET_BUILD_TYPE/release-keys"
- +echo "ro.build.fingerprint=Azumi/Speed_Pro_55/Speed_Pro_55:7.0/NRD90M/20170401.113705:user/release-keys"
- +echo "ro.bootimage.build.fingerprint=Azumi/Speed_Pro_55/Speed_Pro_55:7.0/NRD90M/20170401.113705:user/release-keys"
- if [ -n "$BUILD_THUMBPRINT" ] ; then
- echo "ro.build.thumbprint=$BUILD_THUMBPRINT"
- fi
十五:文件管理中更改存储空间大小
(vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java)
- LogUtils.d(TAG, "setSizeText, freeSpace = " + MountPointManager.getInstance().getMountPointFreeSpace(fileInfo.getFileAbsolutePath()) + ",totalSpace = "
- + MountPointManager.getInstance().getMountPointTotalSpace(fileInfo.getFileAbsolutePath()));
- - sb.append(mResources.getString(R.string.free_space)).append(" ");
- - sb.append(freeSpaceString).append(" \n");
- - sb.append(mResources.getString(R.string.total_space)).append(" ");
- - sb.append(totalSpaces).append(" ");
- + sb.append(mResources.getString(R.string.free_space)).append(" ");
- + sb.append(freeSpaceString).append(", ");
- + String path = fileInfo.getFileAbsolutePath();
- + if (MountPointManager.getInstance().isInternalMountPath(path)) {
- + String totalSpacesCustom = "16.0GB";
- + sb.append(mResources.getString(R.string.total_space)).append(" ");
- + sb.append(totalSpacesCustom).append(" ");
- + } else {
- + sb.append(mResources.getString(R.string.total_space)).append(" ");
- + sb.append(totalSpaces).append(" ");
- + }
- textView.setText(sb.toString());
- textView.setVisibility(View.VISIBLE);
- } else {
十六:设置 > 存储 加入总空间/可用空间/系统空间
(packages/apps/Settings/)
(res/values-es/strings_storage.xml)
- +<?xml version="1.0" encoding="UTF-8"?>
- +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- + <string name="storage_detail_total">Memoria Total</string>
- + <string name="storage_detail_available">Memoria Disponible</string>
- + <string name="storage_detail_system">Memoria del Sistema</string>
- +</resources>
(res/values-zh-rCN/strings_storage.xml)
- +<?xml version="1.0" encoding="UTF-8"?>
- +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- + <string name="storage_detail_total">总空间</string>
- + <string name="storage_detail_available">可用</string>
- + <string name="storage_detail_system">系统</string>
- +</resources>
(res/values/strings_storage.xml)
- +<?xml version="1.0" encoding="UTF-8"?>
- +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- + <string name="storage_detail_total">Total Space</string>
- + <string name="storage_detail_available">Available</string>
- + <string name="storage_detail_system">System</string>
- +</resources>
(src/com/android/settings/deviceinfo/PrivateVolumeSettings.java)
- private static final String AUTHORITY_MEDIA = "com.android.providers.media.documents";
- private static final int[] ITEMS_NO_SHOW_SHARED = new int[] {
- + R.string.storage_detail_total,
- + R.string.storage_detail_available,
- + R.string.storage_detail_system,
- R.string.storage_detail_apps,
- };
- private static final int[] ITEMS_SHOW_SHARED = new int[] {
- + R.string.storage_detail_total,
- + R.string.storage_detail_available,
- + R.string.storage_detail_system,
- R.string.storage_detail_apps,
- R.string.storage_detail_images,
- R.string.storage_detail_videos,
- @@ -241,12 +247,24 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
- final long freeBytes = file.getFreeSpace();
- final long usedBytes = totalBytes - freeBytes;
- - final BytesResult result = Formatter.formatBytes(getResources(), usedBytes, 0);
- - mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- - result.value, result.units));
- - mSummary.setSummary(getString(R.string.storage_volume_used,
- - Formatter.formatFileSize(context, totalBytes)));
- - mSummary.setPercent((int) ((usedBytes * 100) / totalBytes));
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(mVolume.getId())) {
- + final long systemBytes = (long) ((16.0 * 1024 * 1024 * 1024) - totalBytes);
- + final BytesResult systemresult = Formatter.formatBytes(getResources(), systemBytes, 0);
- + final BytesResult result = Formatter.formatBytes(getResources(), systemBytes+usedBytes, 0);
- + mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mSummary.setSummary(getString(R.string.storage_volume_used,
- + Formatter.formatFileSize(context, (long) (16.0 * 1024 * 1024 * 1024))));
- + mSummary.setPercent((int) (((systemBytes+usedBytes) * 100) / (float) (16.0 * 1024 * 1024 * 1024)));
- +
- + }else{
- + final BytesResult result = Formatter.formatBytes(getResources(), usedBytes, 0);
- + mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mSummary.setSummary(getString(R.string.storage_volume_used,
- + Formatter.formatFileSize(context, totalBytes)));
- + mSummary.setPercent((int) ((usedBytes * 100) / totalBytes));
- + }
- mExt.updateCustomizedPrivateSettingsPlugin(screen, mVolume);
- mMeasure.forceMeasure();
- mNeedsUpdate = false;
- @@ -276,6 +294,13 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
- private void addDetailItems(PreferenceGroup category, boolean showShared, int userId) {
- final int[] itemsToAdd = (showShared ? ITEMS_SHOW_SHARED : ITEMS_NO_SHOW_SHARED);
- for (int i = 0; i < itemsToAdd.length; ++i) {
- + if (!VolumeInfo.ID_PRIVATE_INTERNAL.equals(mVolume.getId())) {
- + if (itemsToAdd[i] == R.string.storage_detail_total
- + || itemsToAdd[i] == R.string.storage_detail_available
- + || itemsToAdd[i] == R.string.storage_detail_system) {
- + continue;
- + }
- + }
- addItem(category, itemsToAdd[i], null, userId);
- }
- }
- @@ -295,7 +320,20 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
- item.setTitle(titleRes);
- item.setKey(Integer.toString(titleRes));
- }
- - item.setSummary(R.string.memory_calculating_size);
- + final Context context = getActivity();
- + final File file = mVolume.getPath();
- + final long totalBytes = file.getTotalSpace();
- + final long freeBytes = file.getFreeSpace();
- + final long usedBytes = totalBytes - freeBytes;
- + if (titleRes == R.string.storage_detail_total) {
- + item.setSummary("16.00 GB");
- + } else if (titleRes == R.string.storage_detail_available){
- + item.setSummary(Formatter.formatFileSize(context, freeBytes));
- + } else if (titleRes == R.string.storage_detail_system) {
- + item.setSummary(Formatter.formatFileSize(context, (long)(16.0 * 1024 * 1024 * 1024) - totalBytes));
- + } else {
- + item.setSummary(R.string.memory_calculating_size);
- + }
- item.userHandle = userId;
- addPreference(group, item);
- ++mItemPoolIndex;
(src/com/android/settings/deviceinfo/PublicVolumeSettings.java)
- final long freeBytes = file.getFreeSpace();
- final long usedBytes = totalBytes - freeBytes;
- - final BytesResult result = Formatter.formatBytes(getResources(), usedBytes, 0);
- - mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- - result.value, result.units));
- - mSummary.setSummary(getString(R.string.storage_volume_used,
- - Formatter.formatFileSize(context, totalBytes)));
- - mSummary.setPercent((int) ((usedBytes * 100) / totalBytes));
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(mVolume.getId())) {
- + final long systemBytes = (long) ((16.0 * 1024 * 1024 * 1024) - totalBytes);
- + final BytesResult result = Formatter.formatBytes(getResources(), systemBytes+usedBytes, 0);
- + mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mSummary.setSummary(getString(R.string.storage_volume_used,
- + Formatter.formatFileSize(context, (long) (16.0 * 1024 * 1024 * 1024)))+"---");
- + mSummary.setPercent((int) (((usedBytes+systemBytes) * 100) / (float)(16.0 * 1024 * 1024 * 1024)));
- + }else{
- + final BytesResult result = Formatter.formatBytes(getResources(), usedBytes, 0);
- + mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mSummary.setSummary(getString(R.string.storage_volume_used,
- + Formatter.formatFileSize(context, totalBytes)));
- + mSummary.setPercent((int) ((usedBytes * 100) / totalBytes));
- + }
- }
- if (mVolume.getState() == VolumeInfo.STATE_UNMOUNTED) {
- int privateCount = 0;
- long privateUsedBytes = 0;
- long privateTotalBytes = 0;
- + long systemBytes = 0;
- final List<VolumeInfo> volumes = mStorageManager.getVolumes();
- Collections.sort(volumes, VolumeInfo.getDescriptionComparator());
- @@ -190,6 +191,9 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
- final File path = vol.getPath();
- privateUsedBytes += path.getTotalSpace() - path.getFreeSpace();
- privateTotalBytes += path.getTotalSpace();
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(vol.getId())){
- + systemBytes = (long) ((16.0 * 1024 * 1024 * 1024) - path.getTotalSpace());
- + }
- }
- } else if (vol.getType() == VolumeInfo.TYPE_PUBLIC) {
- mExternalCategory.addPreference(
- @@ -229,11 +233,11 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
- }
- }
- - final BytesResult result = Formatter.formatBytes(getResources(), privateUsedBytes, 0);
- - mInternalSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- - result.value, result.units));
- - mInternalSummary.setSummary(getString(R.string.storage_volume_used_total,
- - Formatter.formatFileSize(context, privateTotalBytes)));
- + final BytesResult result = Formatter.formatBytes(getResources(),systemBytes+privateUsedBytes, 0);
- + mInternalSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mInternalSummary.setSummary(getString(R.string.storage_volume_used_total,
- + Formatter.formatFileSize(context, privateTotalBytes+systemBytes)));
- mExt.updateCustomizedStorageSettingsPlugin(mInternalCategory);
- if (mInternalCategory.getPreferenceCount() > 0) {
- getPreferenceScreen().addPreference(mInternalCategory);
- @@ -514,6 +516,8 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
- final List<VolumeInfo> volumes = storageManager.getVolumes();
- long privateUsedBytes = 0;
- long privateTotalBytes = 0;
- + long systemBytes = 0;
- +
- for (VolumeInfo info : volumes) {
- if (info.getType() != VolumeInfo.TYPE_PUBLIC
- && info.getType() != VolumeInfo.TYPE_PRIVATE) {
- @@ -528,7 +532,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
- if (path == null) {
- continue;
- }
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(info.getId())){
- + systemBytes = (long) ((16.0 * 1024 * 1024 * 1024) - path.getTotalSpace());
- + }
- privateUsedBytes += path.getTotalSpace() - path.getFreeSpace();
- privateTotalBytes += path.getTotalSpace();
- }
- mLoader.setSummary(this, mContext.getString(R.string.storage_summary,
- - Formatter.formatFileSize(mContext, privateUsedBytes),
- - Formatter.formatFileSize(mContext, privateTotalBytes)));
- + Formatter.formatFileSize(mContext, systemBytes+privateUsedBytes),
- + Formatter.formatFileSize(mContext, systemBytes+privateTotalBytes)));
- }
- }
(src/com/android/settings/deviceinfo/StorageVolumePreference.java)
- final long freeBytes = path.getFreeSpace();
- final long totalBytes = path.getTotalSpace();
- final long usedBytes = totalBytes - freeBytes;
- + final long systemBytes = (long) ((16.0 * 1024 * 1024 * 1024) - totalBytes);
- final String used = Formatter.formatFileSize(context, usedBytes);
- + final String usedSystem = Formatter.formatFileSize(context, usedBytes+systemBytes);
- final String total = Formatter.formatFileSize(context, totalBytes);
- setSummary(context.getString(R.string.storage_volume_summary, used, total));
- if (totalBytes > 0) {
- mUsedPercent = (int) ((usedBytes * 100) / totalBytes);
- }
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(volume.getId())) {
- + setSummary(context.getString(R.string.storage_volume_summary, usedSystem, "16.0 GB"));
- + if (totalBytes != 0) {
- + mUsedPercent = (int) (((usedBytes+systemBytes) * 100) / (float) (16.0 * 1024 * 1024 * 1024));
- + }
- + } else {
- + setSummary(context.getString(R.string.storage_volume_summary, used, total));
- + if (totalBytes != 0) {
- + mUsedPercent = (int) ((usedBytes * 100) / totalBytes);
- + }
- + }
- +
- if (freeBytes < mStorageManager.getStorageLowBytes(path)) {
- mColor = StorageSettings.COLOR_WARNING;
- icon = context.getDrawable(R.drawable.ic_warning_24dp);
十七:设置 > 存储 顶部加入显示 ROM/RAM
(packages/apps/Settings/)
(res/values/strings.xml)
- + <string name="storage_detail_title">ROM INFORMATION</string>
- + <string name="storage_detail_total">"Total ROM"</string>
- + <string name="storage_detail_system">Total RAM</string>
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- +import java.text.DecimalFormat;
- import android.content.pm.IPackageDataObserver;
- import android.content.pm.PackageInfo;
- import android.content.pm.PackageManager;
- @@ -121,6 +122,8 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
- private int mItemPoolIndex;
- private Preference mExplore;
- + private Preference storage_detail_system;
- + private Preference storage_detail_total;
- private boolean mNeedsUpdate;
- @@ -168,6 +171,8 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
- mCurrentUser = mUserManager.getUserInfo(UserHandle.myUserId());
- mExplore = buildAction(R.string.storage_menu_explore);
- + storage_detail_system = buildAction(R.string.storage_detail_system);
- + storage_detail_total = buildAction(R.string.storage_detail_total);
- mNeedsUpdate = true;
- @@ -195,8 +200,9 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
- final PreferenceScreen screen = getPreferenceScreen();
- screen.removeAll();
- addPreference(screen, mSummary);
- List<UserInfo> allUsers = mUserManager.getUsers();
- final int userCount = allUsers.size();
- @@ -233,6 +239,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
- addItem(screen, R.string.storage_detail_cached, null, UserHandle.USER_NULL);
- if (showShared) {
- + addCategory2(screen);
- addPreference(screen, mExplore);
- }
- @@ -241,12 +248,29 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
- final long freeBytes = file.getFreeSpace();
- final long usedBytes = totalBytes - freeBytes;
- - final BytesResult result = Formatter.formatBytes(getResources(), usedBytes, 0);
- - mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- - result.value, result.units));
- - mSummary.setSummary(getString(R.string.storage_volume_used,
- - Formatter.formatFileSize(context, totalBytes)));
- - mSummary.setPercent((int) ((usedBytes * 100) / totalBytes));
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(mVolume.getId())) {
- + final long systemBytes = (long) ((8.0 * 1024 * 1024 * 1024) - totalBytes);
- + final BytesResult systemresult = Formatter.formatBytes(getResources(), systemBytes, 0);
- + storage_detail_system.setSummary("1.0 GB");
- + storage_detail_total.setSummary("8.0 GB");
- +
- + final BytesResult result = Formatter.formatBytes(getResources(), systemBytes+usedBytes, 0);
- + mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mSummary.setSummary(getString(R.string.storage_volume_used,
- + Formatter.formatFileSize(context, (long) (8.0 * 1024 * 1024 * 1024))));
- + mSummary.setPercent((int) (((systemBytes+usedBytes) * 100) / (float) (8.0 * 1024 * 1024 * 1024)));
- +
- + }else{
- + storage_detail_system.setSummary("1.0 GB");
- + storage_detail_total.setSummary("8.0 GB");
(src/com/android/settings/deviceinfo/PublicVolumeSettings.java)
- final long freeBytes = file.getFreeSpace();
- final long usedBytes = totalBytes - freeBytes;
- - final BytesResult result = Formatter.formatBytes(getResources(), usedBytes, 0);
- - mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- - result.value, result.units));
- - mSummary.setSummary(getString(R.string.storage_volume_used,
- - Formatter.formatFileSize(context, totalBytes)));
- - mSummary.setPercent((int) ((usedBytes * 100) / totalBytes));
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(mVolume.getId())) {
- + final long systemBytes = (long) ((8.0 * 1024 * 1024 * 1024) - totalBytes);
- + final BytesResult result = Formatter.formatBytes(getResources(), systemBytes+usedBytes, 0);
- + mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mSummary.setSummary(getString(R.string.storage_volume_used,
- + Formatter.formatFileSize(context, (long) (8.0 * 1024 * 1024 * 1024)))+"---");
- + mSummary.setPercent((int) (((usedBytes+systemBytes) * 100) / (float)(8.0 * 1024 * 1024 * 1024)));
- + }else{
- + final BytesResult result = Formatter.formatBytes(getResources(), usedBytes, 0);
- + mSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mSummary.setSummary(getString(R.string.storage_volume_used,
- + Formatter.formatFileSize(context, totalBytes)));
- + mSummary.setPercent((int) ((usedBytes * 100) / totalBytes));
- + }
- }
- if (mVolume.getState() == VolumeInfo.STATE_UNMOUNTED) {
- int privateCount = 0;
- long privateUsedBytes = 0;
- long privateTotalBytes = 0;
- + long systemBytes = 0;
- final List<VolumeInfo> volumes = mStorageManager.getVolumes();
- Collections.sort(volumes, VolumeInfo.getDescriptionComparator());
- @@ -190,6 +191,9 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
- final File path = vol.getPath();
- privateUsedBytes += path.getTotalSpace() - path.getFreeSpace();
- privateTotalBytes += path.getTotalSpace();
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(vol.getId())){
- + systemBytes = (long) ((8.0 * 1024 * 1024 * 1024) - path.getTotalSpace());
- + }
- }
- } else if (vol.getType() == VolumeInfo.TYPE_PUBLIC) {
- mExternalCategory.addPreference(
- @@ -229,11 +233,14 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
- }
- }
- - final BytesResult result = Formatter.formatBytes(getResources(), privateUsedBytes, 0);
- - mInternalSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- - result.value, result.units));
- - mInternalSummary.setSummary(getString(R.string.storage_volume_used_total,
- - Formatter.formatFileSize(context, privateTotalBytes)));
- + final BytesResult result = Formatter.formatBytes(getResources(),systemBytes+privateUsedBytes, 0);
- + mInternalSummary.setTitle(TextUtils.expandTemplate(getText(R.string.storage_size_large),
- + result.value, result.units));
- + mInternalSummary.setSummary(getString(R.string.storage_volume_used_total,
- + Formatter.formatFileSize(context, privateTotalBytes+systemBytes)));
- mExt.updateCustomizedStorageSettingsPlugin(mInternalCategory);
- if (mInternalCategory.getPreferenceCount() > 0) {
- getPreferenceScreen().addPreference(mInternalCategory);
(src/com/android/settings/deviceinfo/StorageVolumePreference.java)
- final long freeBytes = path.getFreeSpace();
- final long totalBytes = path.getTotalSpace();
- final long usedBytes = totalBytes - freeBytes;
- + final long systemBytes = (long) ((8.0 * 1024 * 1024 * 1024) - totalBytes);
- final String used = Formatter.formatFileSize(context, usedBytes);
- + final String usedSystem = Formatter.formatFileSize(context, usedBytes+systemBytes);
- final String total = Formatter.formatFileSize(context, totalBytes);
- setSummary(context.getString(R.string.storage_volume_summary, used, total));
- + /*setSummary(context.getString(R.string.storage_volume_summary, used, total));
- if (totalBytes > 0) {
- mUsedPercent = (int) ((usedBytes * 100) / totalBytes);
- + }*/
- + if(VolumeInfo.ID_PRIVATE_INTERNAL.equals(volume.getId())) {
- + setSummary(context.getString(R.string.storage_volume_summary, usedSystem, "8.0 GB"));
- + if (totalBytes != 0) {
- + mUsedPercent = (int) (((usedBytes+systemBytes) * 100) / (float) (8.0 * 1024 * 1024 * 1024));
- + }
- + } else {
- + setSummary(context.getString(R.string.storage_volume_summary, used, total));
- + if (totalBytes != 0) {
- + mUsedPercent = (int) ((usedBytes * 100) / totalBytes);
- + }
- }
- if (freeBytes < mStorageManager.getStorageLowBytes(path)) {
- mColor = StorageSettings.COLOR_WARNING;
- icon = context.getDrawable(R.drawable.ic_warning_24dp);
十八:sim卡应用里删除 toast
(mediatek/proprietary/packages/apps/Stk/src/com/android/stk/StkAppService.java)
- if (mStkContext[slotId].mMainCmd == null) {
- CatLog.w(LOG_TAG, "mMainCmd is null");
- // nothing todo when no SET UP MENU command didn't arrive.
- +/* Vanzo:tanglei on: Tue, 18 Apr 2017 15:43:39 +0800
- mToast = Toast.makeText(mContext.getApplicationContext(),
- R.string.main_menu_not_initialized, Toast.LENGTH_LONG);
- mToast.setGravity(Gravity.BOTTOM, 0, 0);
- mToast.show();
- + */
- +// End of Vanzo:tanglei
- StkAppService.mIsLauncherAcceptInput = true;
- // //Workaround for the toast is not canceled sometimes.
- // Message msg1 = mServiceHandler.obtainMessage(OP_CANCEL_TOAST_MSG);
- @@ -915,10 +918,13 @@ public class StkAppService extends Service implements Runnable {
- */
- if (mStkContext[slotId].mAvailable != STK_AVAIL_AVAILABLE) {
- +/* Vanzo:tanglei on: Tue, 18 Apr 2017 15:43:50 +0800
- mToast = Toast.makeText(mContext.getApplicationContext(),
- R.string.lable_not_available, Toast.LENGTH_LONG);
- mToast.setGravity(Gravity.BOTTOM, 0, 0);
- mToast.show();
- + */
- +// End of Vanzo:tanglei
- StkAppService.mIsLauncherAcceptInput = true;
- // //Workaround for the toast is not canceled sometimes.
- // Message msg1 = mServiceHandler.obtainMessage(OP_CANCEL_TOAST_MSG);
- @@ -3386,6 +3392,7 @@ public class StkAppService extends Service implements Runnable {
- }
- }
- +/* Vanzo:tanglei on: Tue, 18 Apr 2017 15:43:13 +0800
- mToast = toast;
- mToast.setView(v);
- mToast.setDuration(Toast.LENGTH_LONG);
- @@ -3396,6 +3403,8 @@ public class StkAppService extends Service implements Runnable {
- msg1.arg1 = OP_CANCEL_TOAST_MSG;
- msg1.arg2 = slotId;
- mServiceHandler.sendMessageDelayed(msg1, DELAY_TO_CANCEL_TOAST_TIMEOUT);
- + */
- +// End of Vanzo:tanglei
- }
- private void launchEventMessage(int slotId) {
十九:语音邮件通知无法移除
(frameworks/base/telephony/java/android/telephony/CarrierConfigManager.java)
- sDefaults.putBoolean(KEY_SUPPORT_SWAP_AFTER_MERGE_BOOL, true);
- sDefaults.putBoolean(KEY_USE_HFA_FOR_PROVISIONING_BOOL, false);
- sDefaults.putBoolean(KEY_USE_OTASP_FOR_PROVISIONING_BOOL, false);
- - sDefaults.putBoolean(KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL, false);
- + sDefaults.putBoolean(KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL, true);
- sDefaults.putBoolean(KEY_VOICE_PRIVACY_DISABLE_UI_BOOL, false);
- sDefaults.putBoolean(KEY_WORLD_PHONE_BOOL, false);
- sDefaults.putInt(KEY_VOLTE_REPLACEMENT_RAT_INT, 0);
二十:壁纸做过不滑动后(宽X2),锁屏解锁时会闪半张壁纸
(frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java)
- }
- boolean allowWhenShade = false;
- if (ENABLE_LOCKSCREEN_WALLPAPER && artworkDrawable == null) {
- - Bitmap lockWallpaper = mLockscreenWallpaper.getBitmap();
- + Bitmap lockWallpaper;
- + Bitmap PreLockWallpaper = mLockscreenWallpaper.getBitmap();
- + if(PreLockWallpaper != null) {
- + int width = PreLockWallpaper.getWidth();
- + int height = PreLockWallpaper.getHeight();
- + if (width > height) {
- + lockWallpaper = Bitmap.createBitmap(PreLockWallpaper,width/4,0,width/2,height);
- + } else {
- + lockWallpaper = PreLockWallpaper;
- + }
- + } else {
- + lockWallpaper = PreLockWallpaper;
- + }
- if (lockWallpaper != null) {
- artworkDrawable = new LockscreenWallpaper.WallpaperDrawable(
- mBackdropBack.getResources(), lockWallpaper);
二十一:删除投射功能(下拉状态栏及设置里的)
(frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java)
- else if (tileSpec.equals("rotation")) return new RotationLockTile(this);
- else if (tileSpec.equals("flashlight")) return new FlashlightTile(this);
- else if (tileSpec.equals("location")) return new LocationTile(this);
- - else if (tileSpec.equals("cast")) return new CastTile(this);
- + else if (tileSpec.equals("cast")) return null;
- else if (tileSpec.equals("hotspot")) return new HotspotTile(this);
- /* Vanzo:houcongxi on: Tue, 24 May 2016 18:18:29 +0800
- * add superscreenshot
( packages/apps/Settings/res/xml/sound_settings.xml)
- android:fragment="com.android.settings.notification.OtherSoundSettings" />
- <!-- Cast -->
- - <PreferenceScreen
- + <!--<PreferenceScreen
- android:key="wifi_display"
- android:title="@string/wifi_display_settings_title"
- - android:fragment="com.android.settings.wfd.WifiDisplaySettings" />
- + android:fragment="com.android.settings.wfd.WifiDisplaySettings" />-->
- <!-- M: Sound Enhancement -->
- <PreferenceScreen
二十二:拍照人脸美化会生成两张照片
(vendor/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/mode/facebeauty/FaceBeautyMode.java)
- if (!mIFeatureConfig.isVfbEnable()) {
- mIFileSaver.init(FILE_TYPE.JPEG, 0, null, -1);
- long time = System.currentTimeMillis();
- - mIFileSaver.savePhotoFile(data, null, time, mIModuleCtrl.getLocation(), 0,
- - mFileSavedListener);
- + // mIFileSaver.savePhotoFile(data, null, time, mIModuleCtrl.getLocation(), 0,
- + // mFileSavedListener);
- }
- }
- }
二十三:做CE认证必须要有自动接听功能,现在我们的进入工程模式没有自动接听功能,请安排增加上
(vendor/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/PrefsFragment.java)
- if ( !( isTestSim()
- || FeatureSupport.isEngLoad() || FeatureSupport.isUserDebugLoad()
- || ChipSupport.isFeatureSupported(ChipSupport.MTK_USERLOAD_SUPPORT) ) ) {
- - removePreference(screen, "auto_answer");
- Log.d("@M_" + TAG, "it is not an test sim card!");
- }else{
- Log.d("@M_" + TAG, "it is an test sim card or debug load");
- @@ -299,7 +298,6 @@ public class PrefsFragment extends PreferenceFragment {
- }
- if (FeatureSupport.isSupported(FeatureSupport.FK_BSP_PACKAGE)) {
- - removePreference(screen, "auto_answer");
- }
- if (ChipSupport.isFeatureSupported(ChipSupport.MTK_FM_SUPPORT)) {
- @@ -344,7 +342,6 @@ public class PrefsFragment extends PreferenceFragment {
- }
- if (!isVoiceCapable() || isWifiOnly()) {
- - removePreference(screen, "auto_answer");
- removePreference(screen, "repeat_call_test");
- }
二十四:在现在在没有插入耳机的情况也能进入FM测试项进行,且进入FM测试项没有出现提示:请插入耳机
(vendor/mediatek/proprietary/packages/apps/FMRadio/src/com/android/fmradio/TestFM.java)
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- -
- +import android.widget.Toast;
- import com.android.fmradio.FmService.ServiceBinder;
- import java.io.IOException;
- @@ -49,6 +49,8 @@ public class TestFM extends Activity implements OnClickListener {
- private boolean mIsSearch = false;
- + private AudioManager audoManager;
- +
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- @@ -66,6 +68,13 @@ public class TestFM extends Activity implements OnClickListener {
- mSuccess = (Button) findViewById(R.id.success);
- mFail = (Button) findViewById(R.id.fail);
- mSearch = (Button) findViewById(R.id.search);
- + audoManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
- + boolean isHeadsetOn = audoManager.isWiredHeadsetOn();
- + if (!isHeadsetOn){
- + Toast.makeText(this,
- + R.string.fm_no_headset_text,
- + Toast.LENGTH_SHORT).show();
- + }
- mSuccess.setOnClickListener(this);
- mSuccess.setEnabled(false);
- mFail.setOnClickListener(this);
- @@ -73,7 +82,9 @@ public class TestFM extends Activity implements OnClickListener {
- @Override
- public void onClick(View v) {
- if (!mIsSearch) {
- + if(isHeadsetOn){
- mSuccess.setEnabled(true);
- + }
- mIsSearch = true;
- new Thread() {
- public void run() {