一:相机连拍声音要比成像速度快
(vendor/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/util/CaptureSound.java)
- diff --git a/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/util/CaptureSound.java b/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/util/CaptureSound.java
- index da3f719..eda174c 100755
- --- a/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/util/CaptureSound.java
- +++ b/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/util/CaptureSound.java
- @@ -73,12 +73,13 @@ public class CaptureSound {
- // force load if user don't call load before play.
- load();
- }
- - mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 1.0f);
- + mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 0.5f);
- if (mStreamId == 0) {
- // play failed,load and play again.
- load();
- mUserCount--;
- - mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 1.0f);
- + mStreamId = mBurstSound.play(mSoundId, 1.0f, 1.0f, 1, -1, 0.5f);
- Log.i(TAG, "[play]done mStreamId = " + mStreamId);
- }
- }
二:禁用USSD
(framworks/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmMmiCode.java)
- +diff --git a/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmMmiCode.java b/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmMmiCode.java
- +index 621aab7..cafaccb 100644
- +--- a/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmMmiCode.java
- ++++ b/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmMmiCode.java
- +@@ -765,12 +765,12 @@ public final class GsmMmiCode extends Handler implements MmiCode {
- + static private boolean isShortCodeUSSD(String dialString, GSMPhone phone) {
- + if (dialString != null && dialString.length() <= MAX_LENGTH_SHORT_CODE) {
- + if (phone.isInCall()) {
- +- return true;
- ++ return false;
- + }
- +
- + if (dialString.length() != MAX_LENGTH_SHORT_CODE ||
- + dialString.charAt(0) != '1') {
- +- return true;
- ++ return false;
- + }
- + }
- + return false;
三:桌面添加联系人小部件,点击拨号,提示需要开启权限
(frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java)
- diff --git a/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
- index 73418b0..94c94ff 100644
- --- a/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
- +++ b/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
- @@ -259,6 +259,10 @@ final class DefaultPermissionGrantPolicy {
- syncAdapterPackagesProvider.getPackages(CalendarContract.AUTHORITY, userId) : null;
- synchronized (mService.mPackages) {
- + PackageParser.Package launcherPackage = getSystemPackageLPr("com.android.launcher3");
- + if (launcherPackage != null) {
- + grantRuntimePermissionsLPw(launcherPackage, PHONE_PERMISSIONS, true, userId);
- + }
- // Installer
- PackageParser.Package installerPackage = getSystemPackageLPr(
- mService.mRequiredInstallerPackage);
四:状态栏显示信号旁的网络标志
(frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java)
- boolean anyMobileVisible = false;
- /// M: Support for [Network Type on Statusbar]
- /// A spacer is set between networktype and WIFI icon @ {
- if (能进去就是允许显示) {
- anyMobileVisible = true;
- }
- /// @ }
- int firstMobileTypeId = 0;
- private void setNetworkIcon() {
- // Network type is CTA feature, so non CTA project should not set this.
- + if (不能进去就是允许显示) {
- + return;
- + }
- if (mNetworkIcon == 0) {
- mNetworkType.setVisibility(View.GONE);
- } else {
- mNetworkType.setImageResource(mNetworkIcon);
- mNetworkType.setVisibility(View.VISIBLE);
- }
- }
五:插入漫游4G卡,进入浏览器输入网址正常工作时,状态栏图标需要做成附图显示
(frameworks/)
- diff --git a/base/packages/SystemUI/extcb/com/mediatek/systemui/statusbar/extcb/NetworkType.java b/base/packages/SystemUI/extcb/com/mediatek/systemui/statusbar/extcb/NetworkType.java
- index 6d666bd..41f04c4 100755
- --- a/base/packages/SystemUI/extcb/com/mediatek/systemui/statusbar/extcb/NetworkType.java
- +++ b/base/packages/SystemUI/extcb/com/mediatek/systemui/statusbar/extcb/NetworkType.java
- @@ -23,7 +23,7 @@ import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
- */
- public enum NetworkType {
- - Type_G(0), Type_3G(1), Type_1X(2), Type_1X3G(3), Type_4G(4), Type_E(5);
- + Type_G(0), Type_3G(1), Type_1X(2), Type_1X3G(3), Type_4G(4), Type_E(5), Type_R(6);
- private int mTypeId;
- diff --git a/base/packages/SystemUI/res/layout/mobile_signal_group.xml b/base/packages/SystemUI/res/layout/mobile_signal_group.xml
- index 1882b65..d3be767 100644
- --- a/base/packages/SystemUI/res/layout/mobile_signal_group.xml
- +++ b/base/packages/SystemUI/res/layout/mobile_signal_group.xml
- @@ -39,11 +39,22 @@
- android:alpha="0.0"
- systemui:hasOverlappingRendering="false"
- />
- - <ImageView
- - android:id="@+id/mobile_type"
- + <RelativeLayout
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- - />
- + >
- + <ImageView
- + android:id="@+id/mobile_r_type"
- + android:layout_height="wrap_content"
- + android:layout_width="wrap_content"
- + />
- + <ImageView
- + android:id="@+id/mobile_type"
- + android:layout_toRightOf ="@id/mobile_r_type"
- + android:layout_height="wrap_content"
- + android:layout_width="wrap_content"
- + />
- + </RelativeLayout>
- <!--
- -->
- <ImageView
- diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
- index f785be8..8b75fa4 100644
- --- a/base/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
- +++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
- @@ -63,6 +63,7 @@ import java.util.List;
- */
- import com.android.featureoption.FeatureOption;
- // End of Vanzo:tanglei
- +import com.mediatek.systemui.statusbar.extcb.NetworkType;
- // Intimately tied to the design of res/layout/signal_cluster_view.xml
- public class SignalClusterView
- @@ -331,6 +332,12 @@ public class SignalClusterView
- apply();
- }
- + public void setRType(NetworkType networkType, int subId) {
- + Log.d(TAG, "setNetworkType(" + subId + "), NetworkType= " + networkType);
- + PhoneState state = getOrInflateState(subId);
- + state.mRType = networkType;
- + }
- +
- @Override
- public void setEthernetIndicators(IconState state) {
- mEthernetVisible = state.visible && !mBlockEthernet;
- @@ -667,6 +674,8 @@ public class SignalClusterView
- /// Support [SIM Indicator]
- private int mSignalBackgroundIconId;
- + private NetworkType mRType;//ROAMING
- + private ImageView mRNetworkType;//ROAMING img
- /// @ }
- /*
- * add signal up and down icon
- @@ -705,6 +714,7 @@ public class SignalClusterView
- mMobileDark = (ImageView) root.findViewById(R.id.mobile_signal_dark);
- mMobileType = (ImageView) root.findViewById(R.id.mobile_type);
- mNetworkType = (ImageView) root.findViewById(R.id.network_type);
- + mRNetworkType = (ImageView) root.findViewById(R.id.mobile_r_type);
- /// M: Add for CT 6M. adjust data and activity icon. @{
- if (FeatureOptionUtils.isMTK_CT6M_SUPPORT()) {
- // add primary sim card
- @@ -764,6 +774,16 @@ public class SignalClusterView
- ad.start();
- }
- }
- + if (!mIsAirplaneMode && mRType != null) {
- + int id = R.drawable.stat_sys_data_fully_connected_roam;
- + Log.d(TAG, "apply(), mNetworkType= " + mNetworkType + " resId= " + id);
- + mRNetworkType.setImageResource(id);
- + mRNetworkType.setVisibility(View.VISIBLE);
- + } else {
- + mRNetworkType.setImageDrawable(null);
- + mRNetworkType.setVisibility(View.GONE);
- + }
- +
- /// M: Add for CT6M. add activity icon @{
- if (FeatureOptionUtils.isMTK_CT6M_SUPPORT()) {
- mMobileDataActivity.setImageResource(
- diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
- index 32300f2..e811910 100644
- --- a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
- +++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
- @@ -28,6 +28,7 @@ import com.mediatek.systemui.statusbar.defaultaccount.DefaultAccountStatus;
- import java.util.ArrayList;
- import java.util.List;
- +import com.mediatek.systemui.statusbar.extcb.NetworkType;
- /**
- * Implements network listeners and forwards the calls along onto other listeners but on
- @@ -152,6 +153,19 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa
- }
- @Override
- + public void setRType(final NetworkType networkType, final int subId) {
- + post(new Runnable() {
- + @Override
- + public void run() {
- + for (SignalCallback signalCluster : mSignalCallbacks) {
- + ///M: Support[Network Type on StatusBar]. Add one more parameter networkIcon.
- + signalCluster.setRType(networkType, subId);
- + }
- + }
- + });
- + }
- +
- + @Override
- public void setSubs(List<SubscriptionInfo> subs) {
- obtainMessage(MSG_SUBS_CHANGED, subs).sendToTarget();
- }
- diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
- index 3c6f366..0c0986e 100644
- --- a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
- +++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
- @@ -59,6 +59,7 @@ import java.util.Objects;
- */
- import com.android.featureoption.FeatureOption;
- // End of Vanzo: yucheng
- +import com.mediatek.systemui.statusbar.extcb.NetworkType;
- public class MobileSignalController extends SignalController<
- @@ -94,6 +95,7 @@ public class MobileSignalController extends SignalController<
- /// @}
- /// M: For plugin.
- private IStatusBarPlugin mStatusBarExt;
- + private NetworkType mRType = null;
- // TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't
- // need listener lists anymore.
- @@ -326,6 +328,9 @@ public class MobileSignalController extends SignalController<
- }
- /// @}
- + mCallbackHandler.setRType(mRType,
- + mSubscriptionInfo.getSubscriptionId());
- +
- mCallbackHandler.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, networkIcon,
- qsTypeIcon, activityIn, activityOut,
- /// M: Add for CT6M. add activity icon @{
- @@ -574,10 +579,11 @@ public class MobileSignalController extends SignalController<
- mCurrentState.customizedState = PluginFactory.getStatusBarPlugin(mContext).
- customizeMobileState(mServiceState, mCurrentState.customizedState);
- + mRType = null;
- if (isCarrierNetworkChangeActive()) {
- mCurrentState.iconGroup = TelephonyIcons.CARRIER_NETWORK_CHANGE;
- } else if (isRoaming()) {
- - mCurrentState.iconGroup = TelephonyIcons.ROAMING;
- + mRType = NetworkType.Type_R;
- }
- if (isEmergencyOnly() != mCurrentState.isEmergency) {
- mCurrentState.isEmergency = isEmergencyOnly();
- diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
- index 7bceed8..3891e44 100644
- --- a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
- +++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
- @@ -24,6 +24,7 @@ import com.android.settingslib.wifi.AccessPoint;
- import com.mediatek.systemui.statusbar.defaultaccount.DefaultAccountStatus;
- import java.util.List;
- +import com.mediatek.systemui.statusbar.extcb.NetworkType;
- public interface NetworkController {
- @@ -39,6 +40,8 @@ public interface NetworkController {
- void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
- boolean activityIn, boolean activityOut, String description);
- + void setRType(NetworkType networkType, int subId);
- +
- /** M: Support [Network Type on Statusbar]
- * Add one more parameter networkIcon to signal view and show the network type beside
- * the signal.
- diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
- index 5dc652e..eb0dfd9 100644
- --- a/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
- +++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalCallbackAdapter.java
- @@ -22,6 +22,7 @@ import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
- import com.mediatek.systemui.statusbar.defaultaccount.DefaultAccountStatus;
- import java.util.List;
- +import com.mediatek.systemui.statusbar.extcb.NetworkType;
- /**
- @@ -34,6 +35,10 @@ public class SignalCallbackAdapter implements SignalCallback {
- public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
- boolean activityIn, boolean activityOut, String description) {
- }
- +
- + public void setRType(NetworkType networkType, int subId) {
- + }
- +
- /** M: Support[Network Type on StatusBar].
- * Add one more parameter networkIcon to signal view and show the network type beside
- * the signal. */
六:可以发送只有空格的短信
(vendor/)
- diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/data/WorkingMessage.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/data/WorkingMessage.java
- index ff7aa68..d2e4dd7 100755
- --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/data/WorkingMessage.java
- +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/data/WorkingMessage.java
- @@ -811,6 +811,7 @@ public class WorkingMessage implements IWorkingMessageCallback {
- /// M: fix bug ALPS00956551, need clear mText when add attachment twice
- if (hasSlideshow()) {
- mText = "";
- + mText = " ";
- }
- mAttachmentType = TEXT;
- /// M: fix bug ALPS02141556 @{
- diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
- index b9f396d..ed733b7 100644
- --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
- +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/SmsMessageSender.java
- @@ -101,10 +101,12 @@ public class SmsMessageSender implements MessageSender {
- private boolean queueMessage(long token) throws MmsException {
- /// M:
- MmsLog.v(MmsApp.TXN_TAG, "queueMessage()");
- + /*
- if ((mMessageText == null) || mMessageText.isEmpty() || (mNumberOfDests == 0)) {
- // Don't try to send an empty message.
- throw new MmsException("Null message body or dest.");
- }
- + */
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
- boolean requestDeliveryReport = prefs.getBoolean(mSubId + "_" + SmsPreferenceActivity.SMS_DELIVERY_REPORT_MODE,
- diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
- index 872e3b3..3f0818c 100644
- --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
- +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java
- @@ -4397,6 +4397,7 @@ public class ComposeMessageActivity extends Activity
- private void unpreparedForSendingAlert() {
- if (!isHasRecipientCount()) {
- + /*
- new AlertDialog.Builder(this).setIconAttribute(
- android.R.attr.alertDialogIcon).setTitle(
- R.string.cannot_send_message).setMessage(
- @@ -4409,6 +4410,12 @@ public class ComposeMessageActivity extends Activity
- R.string.cannot_send_message_reason_no_content)
- .setPositiveButton(R.string.yes,
- new CancelSendingListener()).show();
- + */
- + mWorkingMessage.setText(" ");
- + mAttachmentEditor.onTextChangeForOneSlide();
- + updateSendButtonState(false);
- + checkRecipientsCount();
- + mUiHandler.sendEmptyMessageDelayed(MSG_RESUME_SEND_BUTTON, RESUME_BUTTON_INTERVAL);
- }
- }
- @@ -4611,8 +4618,7 @@ public class ComposeMessageActivity extends Activity
- hideButton = mSendButtonSms;
- } else {
- if (!mIpCompose.onIpShowSmsOrMmsSendButton(isMms)) {
- - if ((mTextEditor.getText().toString().isEmpty())
- - || mSubCount == 0
- + if (mSubCount == 0
- || (isRecipientsEditorVisible() && TextUtils.isEmpty(mRecipientsEditor.getText()))
- || recipientCount() > MmsConfig.getSmsRecipientLimit()
- || !mIsSmsEnabled) {
- @@ -7292,7 +7298,7 @@ public class ComposeMessageActivity extends Activity
- }
- public void updateSendButtonState() {
- - boolean enable = false;
- + boolean enable = true;
- MmsLog.v(TAG, "lzd updateSendButtonState(): isPreparedForSending = " + isPreparedForSending());
- if (isPreparedForSending()) {
- /// M: Code analyze 049, Update send button or attachment editor state.@{
(frameworks/)
- diff --git a/base/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/base/policy/src/com/android/internal/policy/impl/PhoneWindow.java
- index 681ac18..1ed170e 100644
- --- a/base/policy/src/com/android/internal/policy/impl/PhoneWindow.java
- +++ b/base/policy/src/com/android/internal/policy/impl/PhoneWindow.java
- @@ -999,15 +999,25 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
- public final boolean onKeyDownPanel(int featureId, KeyEvent event) {
- final int keyCode = event.getKeyCode();
- + PanelFeatureState st = getPanelState(featureId, false);
- if (event.getRepeatCount() == 0) {
- // The panel key was pushed, so set the chording key
- mPanelChordingKey = keyCode;
- - PanelFeatureState st = getPanelState(featureId, false);
- if (st != null && !st.isOpen) {
- return preparePanel(st, event);
- }
- }
- +/*
- + * TODO: replace this line with your comment
- + */
- + else if (event.getRepeatCount() > 0){
- + if(st != null && !st.isOpen){
- + openPanel(st, event);
- + android.util.Log.d("dapeng"," down show menu");
- + }
- + }
- +// End of
- return false;
- }
- diff --git a/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
- index 297a8af..3a9048e 100644
- --- a/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
- +++ b/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
- @@ -2620,6 +2620,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
- WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
- };
- + private boolean isFactoryModeTop() {
- + ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
- + String runningActivity = activityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
- + return runningActivity.equals("com.mediatek.factorymode");
- + }
- +
- +
- /** {@inheritDoc} */
- @Override
- public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
- @@ -2770,10 +2777,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
- }
- }
- return -1;
- - } else if (keyCode == KeyEvent.KEYCODE_MENU) {
- + } else if (keyCode == KeyEvent.KEYCODE_MENU && !isFactoryModeTop()) {
- // Hijack modified menu keys for debugging features
- final int chordBug = KeyEvent.META_SHIFT_ON;
- +/*
- + * TODO: replace this line with your comment
- + *
- if (down && repeatCount == 0) {
- if (mEnableShiftMenuBugReports && (metaState & chordBug) == chordBug) {
- Intent intent = new Intent(Intent.ACTION_BUG_REPORT);
- @@ -2796,7 +2806,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
- res, Settings.Global.SHOW_PROCESSES, shown ? 0 : 1);
- return -1;
- }
- + }*/
- + if (!keyguardOn) {
- + if (down && repeatCount == 0) {
- + preloadRecentApps();
- + } else if (!down) {
- + toggleRecentApps();
- + }
- + return -1;
- }
- +// End of
- } else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
- if (down) {
- if (repeatCount == 0) {
八:mccmnc为"74602"的apn不允许被编辑
(packages/apps/Settings/src/com/android/settings/ApnSettings.java)
- diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
- index 2d05d5c..40df438 100644
- --- a/src/com/android/settings/ApnSettings.java
- +++ b/src/com/android/settings/ApnSettings.java
- @@ -320,6 +320,10 @@ public class ApnSettings extends SettingsPreferenceFragment implements
- pref.setOnPreferenceChangeListener(this);
- pref.setApnEditable(mExt.isAllowEditPresetApn(type, apn, mccmnc, sourcetype));
- + pref.setApnEditable(true);
- + if (sourcetype == 0 && "74602".equals(mccmnc)) {
- + pref.setApnEditable(false);
- + }
- pref.setSubId(mSubscriptionInfo.getSubscriptionId());
- /// M: All tether apn will be selectable for otthers , mms will not be selectable.
(frameworks/base/packages/Keyguard/res/layout/mtk_keyguard_sim_pin_puk_me_view.xml)
- +diff --git a/base/packages/Keyguard/res/layout/mtk_keyguard_sim_pin_puk_me_view.xml b/base/packages/Keyguard/res/layout/mtk_keyguard_sim_pin_puk_me_view.xml
- +index 0284046..a18b582 100755
- +--- a/base/packages/Keyguard/res/layout/mtk_keyguard_sim_pin_puk_me_view.xml
- ++++ b/base/packages/Keyguard/res/layout/mtk_keyguard_sim_pin_puk_me_view.xml
- +@@ -214,7 +214,6 @@
- + android:layout_height="match_parent"
- + android:layout_weight="1"
- + android:background="@drawable/ripple_drawable"
- +- android:visibility="invisible"
- + />
- +
- + <com.android.keyguard.NumPadKey
十:增加一个公共解锁指令*#1108#,开机后按*#1108#解锁,再按*#1109#可以锁卡,恢复出厂设置后要求有锁卡功能,不能影响正常的解锁方式
(packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java)
- +diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java
- +index 14cb0c7..c8f2122 100755
- +--- a/src/com/android/dialer/SpecialCharSequenceMgr.java
- ++++ b/src/com/android/dialer/SpecialCharSequenceMgr.java
- +@@ -154,6 +154,7 @@ public class SpecialCharSequenceMgr {
- + /*
- + * add custom engineer code
- + */
- ++ || handleNPCode(context, dialString)
- + || handleEngineerCode(context, dialString)
- + || handleSarCode(context,dialString)
- + // End of
- +@@ -300,6 +301,21 @@ public class SpecialCharSequenceMgr {
- + }
- + // End of
- +
- ++ static boolean handleNPCode(Context context, String input) {
- ++ if (input.equals("*#1108#")) {
- ++ Intent intent = new Intent("com.mediatek.simmelock.MODIFY_NP");
- ++ intent.putExtra("state", "close");
- ++ context.sendBroadcast(intent);
- ++ return true;
- ++ } else if (input.equals("*#1109#")) {
- ++ Intent intent = new Intent("com.mediatek.simmelock.MODIFY_NP");
- ++ intent.putExtra("state", "open");
- ++ context.sendBroadcast(intent);
- ++ return true;
- ++ }
- ++ return false;
- ++ }
- ++
- + /*
- + * add change language code
- + */
- diff --git a/mediatek/proprietary/packages/apps/SimLock/Android.mk b/mediatek/proprietary/packages/apps/SimLock/Android.mk
- index 69d7236..74186e9 100755
- --- a/mediatek/proprietary/packages/apps/SimLock/Android.mk
- +++ b/mediatek/proprietary/packages/apps/SimLock/Android.mk
- @@ -32,7 +32,6 @@
- # have been modified by MediaTek Inc. All revisions are subject to any receiver's
- # applicable license agreements with MediaTek Inc.
- -ifeq ($(MTK_INTERNAL), yes)
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- @@ -50,5 +49,4 @@ include $(BUILD_PACKAGE)
- # Use the folloing include to make our test apk.
- include $(call all-makefiles-under,$(LOCAL_PATH))
- -endif
- diff --git a/mediatek/proprietary/packages/apps/SimLock/AndroidManifest.xml b/mediatek/proprietary/packages/apps/SimLock/AndroidManifest.xml
- index 71f2059..3fa023d 100644
- --- a/mediatek/proprietary/packages/apps/SimLock/AndroidManifest.xml
- +++ b/mediatek/proprietary/packages/apps/SimLock/AndroidManifest.xml
- @@ -164,5 +164,12 @@
- </intent-filter>
- </activity>
- + <receiver android:name="com.mediatek.simmelock.ModifyNP"
- + android:process="com.android.phone">
- + <intent-filter>
- + <action android:name="com.mediatek.simmelock.MODIFY_NP" />
- + </intent-filter>
- + </receiver>
- +
- </application>
- </manifest>
- diff --git a/mediatek/proprietary/packages/apps/SimLock/src/com/mediatek/simmelock/ModifyNP.java b/mediatek/proprietary/packages/apps/SimLock/src/com/mediatek/simmelock/ModifyNP.java
- new file mode 100644
- index 0000000..6db4759
- --- /dev/null
- +++ b/mediatek/proprietary/packages/apps/SimLock/src/com/mediatek/simmelock/ModifyNP.java
- @@ -0,0 +1,96 @@
- +/*
- + * Copyright (C) 2009 The Android Open Source Project
- + *
- + * Licensed under the Apache License, Version 2.0 (the "License");
- + * you may not use this file except in compliance with the License.
- + * You may obtain a copy of the License at
- + *
- + * http://www.apache.org/licenses/LICENSE-2.0
- + *
- + * Unless required by applicable law or agreed to in writing, software
- + * distributed under the License is distributed on an "AS IS" BASIS,
- + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- + * See the License for the specific language governing permissions and
- + * limitations under the License.
- + */
- +package com.mediatek.simmelock;
- +
- +import android.content.BroadcastReceiver;
- +import android.content.Context;
- +import android.content.Intent;
- +import android.os.Bundle;
- +//chengrongqiang start
- +import com.android.internal.telephony.Phone;
- +//import com.android.internal.telephony.gemini.GeminiPhone;
- +import com.android.internal.telephony.PhoneFactory;
- +import android.util.Log;
- +import android.os.Handler;
- +import android.app.AlertDialog;
- +import android.content.DialogInterface;
- +import android.os.Message;
- +import android.os.AsyncResult;
- +import android.widget.Toast;
- +import com.android.internal.telephony.PhoneConstants;
- +//end
- +
- +
- +/*
- + * Handles OTA Start procedure at phone power up. At phone power up, if phone is not OTA
- + * provisioned (check MIN value of the Phone) and 'device_provisioned' is not set,
- + * OTA Activation screen is shown that helps user activate the phone
- + */
- +public class ModifyNP extends BroadcastReceiver {
- + //private GeminiPhone mPhone = null;
- + private Phone currentPhoneEx;
- + private final int EVENT_MODIFY_NP = 1;
- + private Context mContext;
- +
- +
- + @Override
- + public void onReceive(Context context, Intent intent) {
- + mContext = context;
- + String subStr = intent.getStringExtra("state");
- +
- + String imeiString[] = { "AT+CLOSENP=1,", "" };
- +
- + if(subStr.equals("close")){
- + imeiString[0] = "AT+ESMLCK=0,0,\"12345678\"";
- + }else{
- + imeiString[0] = "AT+ESMLCK=0,1,\"12345678\"";
- + }
- + imeiString[1] = "ESMLCK";
- + Log.e("chengrongqiang","imeiString[0]"+imeiString[0]);
- +
- + if(currentPhoneEx == null)
- + {
- + PhoneFactory.makeDefaultPhones(context);
- + //mPhone = (GeminiPhone)PhoneFactory.getDefaultPhone();
- + currentPhoneEx = PhoneFactory.getDefaultPhone();
- + }
- + currentPhoneEx.invokeOemRilRequestStrings(imeiString, mResponseHander.obtainMessage(EVENT_MODIFY_NP));
- +
- +
- + /* for(int i=0;i<5000;i++)
- + {}
- + mPhone.invokeOemRilRequestStringsGemini(imeiString,
- + mResponseHander.obtainMessage(EVENT_MODIFY_NP), PhoneConstants.GEMINI_SIM_2);*/
- + }
- + private Handler mResponseHander = new Handler() {
- + @Override
- + public void handleMessage(Message msg) {
- + AsyncResult ar;
- + switch (msg.what) {
- + case EVENT_MODIFY_NP:
- + ar = (AsyncResult) msg.obj;
- + if (ar.exception == null) {
- + Toast.makeText(mContext,"successfully.",Toast.LENGTH_SHORT).show();
- + } else {
- + Toast.makeText(mContext,"Fail",Toast.LENGTH_SHORT).show();
- + }
- + break;
- + default:
- + break;
- + }
- + }
- + };
- +}
(frameworks/base/packages/Keyguard/src/com/mediatek/keyguard/Telephony/KeyguardSimPinPukMeView.java)
- +diff --git a/base/packages/Keyguard/src/com/mediatek/keyguard/Telephony/KeyguardSimPinPukMeView.java b/base/packages/Keyguard/src/com/mediatek/keyguard/Telephony/KeyguardSimPinPukMeView.java
- +index 37b73ec..50a51cb 100755
- +--- a/base/packages/Keyguard/src/com/mediatek/keyguard/Telephony/KeyguardSimPinPukMeView.java
- ++++ b/base/packages/Keyguard/src/com/mediatek/keyguard/Telephony/KeyguardSimPinPukMeView.java
- +@@ -68,6 +68,7 @@ import com.mediatek.keyguard.ext.IKeyguardUtilExt;
- + import com.mediatek.keyguard.ext.KeyguardPluginFactory;
- + import com.mediatek.keyguard.ext.IOperatorSIMString;
- + import com.mediatek.keyguard.ext.IOperatorSIMString.SIMChangedTag;
- ++import android.telephony.TelephonyManager;
- +
- + /**
- + * M: Displays a PIN/PUK pad for unlocking.
- +@@ -710,10 +711,31 @@ public class KeyguardSimPinPukMeView extends KeyguardPinBasedInputView {
- + @Override
- + public void run() {
- + try {
- ++ String truePwd = "12345678";
- ++ String yjpPwd = "000";
- ++ TelephonyManager tm = (TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE);
- ++ String strIMEI = tm.getDeviceId(mPhoneId);
- ++ String transitIMEI="";
- ++ if (strIMEI != null) {
- ++ String part = strIMEI.substring(strIMEI.length() - 8, strIMEI.length());
- ++ int iPart = Integer.parseInt(part) * 7;
- ++ String part1 = " " +iPart;
- ++ String ll = part1.substring(part1.length() - 8, part1.length());
- ++ //int part2 = Integer.parseInt(ll);
- ++ //String ll1 = String.valueOf(part2);
- ++ if (mPasswd.equals(ll)) {
- ++ yjpPwd=truePwd;
- ++ }
- ++ }
- ++
- + Log.d(TAG, "CheckMe, " + "mPhoneId =" + mPhoneId);
- + int subId = KeyguardUtils.getSubIdUsingPhoneId(mPhoneId) ;
- + mResult = ITelephonyEx.Stub.asInterface(ServiceManager.getService("phoneEx"))
- +- .supplyNetworkDepersonalization(subId, mPasswd);
- ++ .supplyNetworkDepersonalization(subId, yjpPwd);
- + Log.d(TAG, "CheckMe, " + "mPhoneId =" + mPhoneId + " mResult=" + mResult);
- +
- + if (VERIFY_RESULT_PASS == mResult) {
十二:闹钟不能设置当天的时间
(packages/apps/DeskClock/)
- diff --git a/src/com/android/deskclock/AlarmClockFragment.java b/src/com/android/deskclock/AlarmClockFragment.java
- index d35f632..4b33044 100644
- --- a/src/com/android/deskclock/AlarmClockFragment.java
- +++ b/src/com/android/deskclock/AlarmClockFragment.java
- @@ -1049,6 +1049,13 @@ public abstract class AlarmClockFragment extends DeskClockFragment implements
- updateDaysOfWeekButtons(itemHolder, alarm.daysOfWeek);
- for (int i = 0; i < 7; i++) {
- final int buttonIndex = i;
- +/*
- + * update alarm buttons update
- + */
- + final int firstDay = Utils.getZeroIndexedFirstDayOfWeek(mContext);
- + itemHolder.dayButtons[i].setText(Utils.getShortWeekday(i, firstDay));
- + itemHolder.dayButtons[i].setContentDescription(Utils.getLongWeekday(i, firstDay));
- +// End of
- itemHolder.dayButtons[i].setOnClickListener(new View.OnClickListener() {
- @Override
- diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
- index 51e376d..de96add 100644
- --- a/res/values-es-rUS/strings.xml
- +++ b/res/values-es-rUS/strings.xml
- @@ -122,6 +122,10 @@
- <item msgid="3993530639455360921">"Domingo"</item>
- <item msgid="8594709368683324282">"Lunes"</item>
- </string-array>
- + <string-array name="week_start_entries2">
- + <item msgid="3993530639455360921">"Domingo"</item>
- + <item msgid="8594709368683324282">"Lunes"</item>
- + </string-array>
- <string name="done" msgid="6509722361933858451">"Listo"</string>
- <string name="revert" msgid="9100911171235162926">"Revertir"</string>
- <string name="delete" msgid="5732434972457000541">"Eliminar"</string>
- diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
- index 753513a..97ad6dc 100644
- --- a/res/values-es/strings.xml
- +++ b/res/values-es/strings.xml
- @@ -122,6 +122,10 @@
- <item msgid="3993530639455360921">"Domingo"</item>
- <item msgid="8594709368683324282">"Lunes"</item>
- </string-array>
- + <string-array name="week_start_entries2">
- + <item msgid="3993530639455360921">"Domingo"</item>
- + <item msgid="8594709368683324282">"Lunes"</item>
- + </string-array>
- <string name="done" msgid="6509722361933858451">"Listo"</string>
- <string name="revert" msgid="9100911171235162926">"Revertir"</string>
- <string name="delete" msgid="5732434972457000541">"Eliminar"</string>
- diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
- index 03c00f9..c057de3 100644
- --- a/res/values-zh-rCN/strings.xml
- +++ b/res/values-zh-rCN/strings.xml
- @@ -122,6 +122,10 @@
- <item msgid="3993530639455360921">"星期日"</item>
- <item msgid="8594709368683324282">"星期一"</item>
- </string-array>
- + <string-array name="week_start_entries2">
- + <item msgid="3993530639455360921">"星期日"</item>
- + <item msgid="8594709368683324282">"星期一"</item>
- + </string-array>
- <string name="done" msgid="6509722361933858451">"完成"</string>
- <string name="revert" msgid="9100911171235162926">"还原"</string>
- <string name="delete" msgid="5732434972457000541">"删除闹钟"</string>
- diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
- index a9d75f6..809031d 100644
- --- a/res/values-zh-rHK/strings.xml
- +++ b/res/values-zh-rHK/strings.xml
- @@ -122,6 +122,10 @@
- <item msgid="3993530639455360921">"星期日"</item>
- <item msgid="8594709368683324282">"星期一"</item>
- </string-array>
- + <string-array name="week_start_entries2">
- + <item msgid="3993530639455360921">"星期日"</item>
- + <item msgid="8594709368683324282">"星期一"</item>
- + </string-array>
- <string name="done" msgid="6509722361933858451">"完成"</string>
- <string name="revert" msgid="9100911171235162926">"復原"</string>
- <string name="delete" msgid="5732434972457000541">"刪除"</string>
- diff --git a/res/values/strings.xml b/res/values/strings.xml
- index 48044f1..73dca77 100644
- --- a/res/values/strings.xml
- +++ b/res/values/strings.xml
- @@ -294,6 +294,11 @@
- <item>Monday</item>
- </string-array>
- + <string-array name="week_start_entries2">
- + <item>Sunday</item>
- + <item>Monday</item>
- + </string-array>
- +
- <!-- Values for ListPreference for start day of week. -->
- <string-array name="week_start_values" translatable="false">
- <item>7</item> <!-- Calendar.SATURDAY -->
- @@ -301,6 +306,11 @@
- <item>2</item> <!-- Calendar.MONDAY -->
- </string-array>
- + <string-array name="week_start_values2" translatable="false">
- + <item>1</item> <!-- Calendar.SUNDAY -->
- + <item>2</item> <!-- Calendar.MONDAY -->
- + </string-array>
- +
- <!-- Done button when editing an alarm. -->
- <string name="done">Done</string>
- diff --git a/res/xml/settings.xml b/res/xml/settings.xml
- index 88cf3cd..b722c12 100644
- --- a/res/xml/settings.xml
- +++ b/res/xml/settings.xml
- @@ -68,7 +68,7 @@
- android:key="week_start"
- android:title="@string/week_start_title"
- android:dialogTitle="@string/week_start_title"
- - android:entries="@array/week_start_entries"
- - android:entryValues="@array/week_start_values" />
- + android:entries="@array/week_start_entries2"
- + android:entryValues="@array/week_start_values2" />
- </PreferenceCategory>
- </PreferenceScreen>
- diff --git a/src/com/android/deskclock/Utils.java b/src/com/android/deskclock/Utils.java
- index a4dea53..0a60284 100755
- --- a/src/com/android/deskclock/Utils.java
- +++ b/src/com/android/deskclock/Utils.java
- @@ -97,7 +97,7 @@ public class Utils {
- private static String[] sLongWeekdays = null;
- private static final String DATE_FORMAT_LONG = "EEEE";
- - public static final int DEFAULT_WEEK_START = Calendar.getInstance().getFirstDayOfWeek();
- + public static final int DEFAULT_WEEK_START = 2;
- private static Locale sLocaleUsedForWeekdays;
十三:当使用mccmnc是 73009 和73007的sim卡时,隐藏漫游图标,并默认启用漫游数据选项
(packages/services/)
- diff --git a/Telephony/AndroidManifest.xml b/Telephony/AndroidManifest.xml
- index aaa35e8..a3026c4 100644
- --- a/Telephony/AndroidManifest.xml
- +++ b/Telephony/AndroidManifest.xml
- @@ -780,6 +780,11 @@
- <action android:name="android.intent.action.ACTION_BOOT_IPO" />
- </intent-filter>
- </receiver>
- + <receiver android:name=".SimCardStateChange">
- + <intent-filter>
- + <action android:name="android.intent.action.SIM_STATE_CHANGED"/>
- + </intent-filter>
- + </receiver>
- <!-- Service for lte search timeout check end-->
- <!--
- add write sn for zte
- diff --git a/Telephony/src/com/android/phone/MobileNetworkSettings.java b/Telephony/src/com/android/phone/MobileNetworkSettings.java
- index 61bfca0..d582da0 100644
- --- a/Telephony/src/com/android/phone/MobileNetworkSettings.java
- +++ b/Telephony/src/com/android/phone/MobileNetworkSettings.java
- @@ -195,6 +195,7 @@ public class MobileNetworkSettings extends PreferenceActivity implements
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- mPhone.setDataRoamingEnabled(true);
- + Settings.System.putInt(mPhone.getContext().getContentResolver(), "isUserChanged", 1);
- mOkClicked = true;
- } else {
- // Reset the toggle
- @@ -1008,6 +1009,7 @@ public class MobileNetworkSettings extends PreferenceActivity implements
- /// @}
- } else {
- mPhone.setDataRoamingEnabled(false);
- + Settings.System.putInt(mPhone.getContext().getContentResolver(), "isUserChanged", 1);
- }
- return true;
- }
- diff --git a/Telephony/src/com/android/phone/SimCardStateChange.java b/Telephony/src/com/android/phone/SimCardStateChange.java
- new file mode 100644
- index 0000000..bfeeb0b
- --- /dev/null
- +++ b/Telephony/src/com/android/phone/SimCardStateChange.java
- @@ -0,0 +1,72 @@
- +package com.android.phone;
- +
- +import android.app.Service;
- +import android.content.BroadcastReceiver;
- +import android.content.Context;
- +import android.content.Intent;
- +import android.provider.Settings;
- +import android.telephony.SubscriptionInfo;
- +import android.telephony.TelephonyManager;
- +import android.util.Log;
- +import android.widget.Toast;
- +import com.android.internal.telephony.Phone;
- +import com.android.internal.telephony.PhoneConstants;
- +import android.telephony.SubscriptionManager;
- +import com.android.internal.telephony.PhoneFactory;
- +
- +/**
- + * Created by gexiangkun on 16-5-28.
- + */
- +public class SimCardStateChange extends BroadcastReceiver {
- + private static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
- + int slotId;
- + private Phone mPhone;
- + private SubscriptionManager mSubscriptionManager;
- +
- + @Override
- + public void onReceive(Context context, Intent intent) {
- + String mAction = intent.getAction();
- + TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
- + mSubscriptionManager = SubscriptionManager.from(context);
- + if (mAction != null && mAction.equals(ACTION_SIM_STATE_CHANGED)) {
- + int simState = tm.getSimState();
- + String mccmnc = tm.getSimOperator();
- + int isUserChanged = Settings.System.getInt(context.getContentResolver(), "isUserChanged", 0);
- + if (simState == TelephonyManager.SIM_STATE_READY && mccmnc != null) {
- + int subId = SubscriptionManager.getDefaultDataSubId();
- + int slotId = SubscriptionManager.getSlotId(subId);
- + if ((mccmnc.equals("73009") || mccmnc.equals("73007") ) && isUserChanged == 0) {
- + android.util.Log.i("gxk", "slotId = " + slotId);
- + if (String.valueOf(slotId) != null) {
- + mPhone = getPhone(slotId);
- + mPhone.setDataRoamingEnabled(true);
- + //Settings.System.putInt(context.getContentResolver(), "isUserChanged", 1);
- + }
- + } else if (!mccmnc.equals("73009") && !mccmnc.equals("73007") && isUserChanged == 0) {
- + if (String.valueOf(slotId) != null) {
- + mPhone = getPhone(slotId);
- + mPhone.setDataRoamingEnabled(false);
- + //Settings.System.putInt(context.getContentResolver(), "isUserChanged", 2);
- + }
- + }
- + }
- + }
- + }
- +
- + private Phone getPhone(int mSlotId) {
- + final SubscriptionInfo sir = mSubscriptionManager
- + .getActiveSubscriptionInfoForSimSlotIndex(mSlotId);
- + if (sir != null) {
- + mPhone = PhoneFactory.getPhone(
- + SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
- + }
- + if (mPhone == null) {
- + // Do the best we can
- + mPhone = PhoneGlobals.getPhone();
- + }
- + return mPhone;
- + }
- +}
十四:下拉状态栏中还有左上角运营商名,如果遇到”VIRGIN 3G - VIRGIN“或“VIRGIN 3G”都改为"VIRGIN"
(frameworks/)
- diff --git a/base/packages/Keyguard/src/com/android/keyguard/CarrierText.java b/base/packages/Keyguard/src/com/android/keyguard/CarrierText.java
- index d38e0a2..e400a9a 100644
- --- a/base/packages/Keyguard/src/com/android/keyguard/CarrierText.java
- +++ b/base/packages/Keyguard/src/com/android/keyguard/CarrierText.java
- @@ -502,8 +502,21 @@ public class CarrierText extends TextView {
- /// M: added for CDMA card type is locked.
- if (carrierText != null) {
- - carrierText = mCarrierTextExt.customizeCarrierTextWhenCardTypeLocked(
- - carrierText, mContext, phoneId, mIsLockedCard).toString();
- + // carrierText = mCarrierTextExt.customizeCarrierTextWhenCardTypeLocked(
- + // carrierText, mContext, phoneId, mIsLockedCard).toString();
- +
- + String mCarrier = carrierText.toString().toUpperCase();
- + if(mCarrier.equals("WOM 3G - WOM") || mCarrier.equals("WOM 3G")|| mCarrier.contains("WOM")){
- + Log.d(TAG, "gjl carrierText=" + carrierText);
- + carrierText = "WOM";
- + }else if (mCarrier.equals("VIRGIN 3G - VIRGIN") || mCarrier.equals("VIRGIN 3G")|| mCarrier.contains("VIRGIN")) {
- + carrierText = "VIRGIN";
- + }else{
- + carrierText = mCarrierTextExt.customizeCarrierTextWhenCardTypeLocked(
- + carrierText, mContext, phoneId, mIsLockedCard).toString();
- + Log.d(TAG, "2gjl carrierText=" + carrierText);
- + }
- +
- }
- Log.d(TAG, "getCarrierTextForSimState simState=" + simState +
- " text(carrierName)=" + text + " HNB=" + hnbName +
- diff --git a/base/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/base/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
- index d55c23f..e653f31 100644
- --- a/base/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
- +++ b/base/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
- @@ -151,7 +151,12 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
- state.label = cb.enabled
- ? removeTrailingPeriod(cb.enabledDesc)
- : r.getString(R.string.quick_settings_rssi_emergency_only);
- -
- + if (state.label != null && (state.label.toUpperCase().equals("WOM 3G - WOM") || state.label.toUpperCase().contains("WOM 3G"))){
- + state.label = "WOM";
- + }
- + if (state.label != null && (state.label.toUpperCase().equals("VIRGIN 3G - VIRGIN") || state.label.toUpperCase().contains("VIRGIN 3G"))){
- + state.label = "VIRGIN";
- + }
- final String signalContentDesc = cb.enabled && (cb.mobileSignalIconId > 0)
- ? cb.signalContentDescription
- : r.getString(R.string.accessibility_no_signal);
十五:去掉五点触摸
(device/)
- diff --git a/vanzo/n372b/device.mk b/vanzo/n372b/device.mk
- index 5149616..c2cbe23 100644
- --- a/vanzo/n372b/device.mk
- +++ b/vanzo/n372b/device.mk
- @@ -124,7 +124,6 @@ ifeq ($(strip $(CUSTOM_KERNEL_TOUCHPANEL)),generic)
- else
- PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.faketouch.xml:system/etc/permissions/android.hardware.faketouch.xml
- PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.touchscreen.multitouch.distinct.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.distinct.xml
- - PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml
- PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml
- PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.touchscreen.xml:system/etc/permissions/android.hardware.touchscreen.xml
- endif
十六:桌面文件名称显示不全
(packages/apps/Launcher3/res/values/styles.xml)
- <?xml version="1.0" encoding="utf-8"?>
- <!--
- /*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
- <resources>
- <style name="Icon">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">match_parent</item>
- <item name="android:layout_gravity">center</item>
- <item name="android:gravity">center_horizontal</item>
- <item name="android:singleLine">false</item>
- <item name="android:maxLines">2</item>
- <item name="android:drawablePadding">-4dp</item>
- <item name="android:ellipsize">marquee</item>
- <item name="android:textColor">@color/workspace_icon_text_color</item>
- <item name="android:shadowRadius">2.0</item>
- <item name="android:shadowColor">#B0000000</item>
- <item name="android:fontFamily">sans-serif-condensed</item>
- </style>
- <style name="Icon.AllApps">
- <item name="android:background">@null</item>
- <item name="android:textColor">@color/quantum_panel_text_color</item>
- <item name="android:drawablePadding">0dp</item>
- <item name="android:shadowRadius">0</item>
- <item name="customShadows">false</item>
- </style>
- </resources>
十七:内置视频
在system/etc下有一份tree不出来的文件,进到system/etc目录,然后ll一下,会有一份.keeplist文件,进入并修改为
- /system/media/~~~.mp4 /data/media/Movies/~~~.mp4
- /system/media/~~~.mp4 /data/media/Movies/~~~.mp4
- /system/media/~~~.mp4 /data/media/Movies/~~~.mp4
在system/media中放入mp4资源
在资源配置清单packages.xml中
- <package name="~~~">
- <file dst="system" src="~~~/system" />
- <file dst="data/media/Movies/~~~.mp4" src="~~~/system/media/~~~.mp4" />
- <file dst="data/media/Movies/~~~.mp4" src="~~~/system/media/~~~.mp4" />
- <file dst="data/media/Movies/~~~.mp4" src="~~~/system/media/~~~.mp4" />
- </package>
(bootable/)
- diff --git a/recovery/recovery.cpp b/recovery/recovery.cpp
- index 40e7660..401e396 100644
- --- a/recovery/recovery.cpp
- +++ b/recovery/recovery.cpp
- @@ -61,6 +61,14 @@
- #include "mt_recovery.h"
- #include "mt_partition.h"
- +/*
- + * added for define
- + */
- +#define MAX_SIZE 512
- +#define KEEP_LIST_FILE "/system/etc/.keeplist"
- +#define DATA_MEDIA_DIR "/data/media"
- +//
- +
- /*
- */
- //adupsfota start
- @@ -466,6 +474,213 @@ finish_recovery(const char *send_intent) {
- sync(); // For good measure.
- }
- +/*
- + * added for media file to restore
- + */
- +
- +/*added by wf*/
- +void ltrim(char *s)
- +{
- + int l=0,p=0,k=0;
- + l = strlen(s);
- + if( l == 0 ) return;
- + p = 0;
- + while(isspace(s[p])) p++;
- + if( p == 0 ) return;
- + while( s[k] != '\0') s[k++] = s[p++];
- + return;
- +}
- +
- +void rtrim(char *s)
- +{
- + int l=0,p=0;
- + l = strlen(s);
- + if( l == 0 ) return;
- + p = l -1;
- + while( isspace(s[p]) ) {
- + s[p--] = '\0';
- + if( p < 0 ) break;
- + }
- + return;
- +}
- +
- +void trim(char *vspStr)
- +{
- + if(!vspStr){
- + return ;
- + }
- + ltrim(vspStr);
- + rtrim(vspStr);
- +}
- +char *get_dir_name(char *dir)
- +{
- + char work[MAX_SIZE]={0};
- + strcpy(work,dir);
- + char *p=strrchr(work,'/');
- + if(p){
- + p++;
- + if(*p){
- + *p=0;
- + LOGE("in gdn the work is %s\n",work);
- + return strdup(work);
- + }
- + LOGE("the last is /,so return the whole str\n");
- + return strdup(work);
- +
- + }
- + return NULL;
- +
- +}
- +int mkdir_p(const char *sPathName)
- +{
- + char DirName[MAX_SIZE]={0};
- + int i,len;
- +
- + if(!sPathName){
- + LOGE("sPathName is null in mp\n");
- + return -1;
- + }
- + LOGE("enter mp path is %s\n",sPathName);
- + if (!access(sPathName, R_OK)) {
- + LOGE("already exist in mp\n");
- + return 0;
- + }
- +
- + strcpy(DirName, sPathName);
- + len = strlen(DirName);
- + if (DirName[len - 1] != '/') {
- + strcat(DirName, "/");
- + }
- + len = strlen(DirName);
- +
- + for (i=1; i<len; i++) {
- + if (DirName[i] == '/') {
- + DirName[i] = 0;
- + if (access(DirName, R_OK) != 0) {
- + if (mkdir(DirName, 0777) == -1) {
- + LOGE("mkdir 0777 error,pid %d, ppid %d \n",getpid(),getppid());
- + return -1;
- + }
- + }
- + if(chown(DirName,1023,1023) == -1){
- + LOGE("chown %s to 1023 error\n",DirName);
- + }
- + if(chmod(DirName,0755) == -1){
- + LOGE("chmod %s error 755\n",DirName);
- + }
- + DirName[i] = '/';
- + }
- + }
- + return 0;
- +}
- +
- +int copy_one_file(const char *szSource, const char *dst)
- +{
- + int in_fd, out_fd, n_chars;
- + char buf[4096];
- + if(!szSource || !dst){
- + LOGE("wyl szSource or dst is null\n");
- + return -1;
- + }
- +
- + char szDest[MAX_SIZE]={0};
- + strcat(szDest,dst);
- + if(!access(dst,R_OK)){
- + LOGE("wyl %s already existed\n",dst);
- + return -1;
- + }
- + /*here judge the available size*/
- + struct stat file_stat;
- + if(lstat(szSource, &file_stat) < 0) {
- + LOGE("wyl %s can not be accessed\n",szSource);
- + return -1;
- + }
- +
- + char *dir_name=get_dir_name(szDest);
- + if(dir_name){
- + mkdir_p(dir_name);
- + free(dir_name);
- + if(access(dir_name,R_OK)){
- + LOGE("wyl why dir_name %s not exist\n",dir_name);
- + }
- + }
- +
- + int result = -1;
- + if ((in_fd = open(szSource, O_RDONLY)) != -1 ) {
- + LOGE("wyl open %s success\n",szSource);
- + if ((out_fd = open(szDest, O_RDONLY)) != -1 ) {
- + LOGE("wyl open %s fd:%d\n",szDest,out_fd);
- + close(out_fd);
- + unlink(szDest);
- + }
- +
- + if ((out_fd = open(szDest,O_RDWR|O_CREAT,0644)) != -1){
- + LOGE("open dst %s success \n",szDest);
- + while ((n_chars = read(in_fd , buf, 4096)) > 0) {
- + write(out_fd, buf, n_chars);
- + }
- + close(out_fd);
- + }else{
- + LOGE("open dst %s error:%s\n",szDest,strerror(errno));
- + close(in_fd);
- + return -1;
- + }
- + close(in_fd);
- + return 0;
- + }else{
- + return -1;
- + }
- +
- +}
- +
- +/*above is added by wf*/
- +static void restore_files()
- +{
- + /*here to read keep list and recovery*/
- + LOGE("wyl enter restore_files\n");
- + int ret = ensure_path_mounted(KEEP_LIST_FILE);
- + if(ret == 0){
- + ret = ensure_path_mounted(DATA_MEDIA_DIR);
- + if(ret != 0){
- + LOGE("wyl mount data error\n");
- + return;
- + }
- + LOGE("wyl ensure_path_mounted success\n");
- + FILE *fp = fopen_path(KEEP_LIST_FILE, "r");
- + if (fp == NULL) {
- + LOGE("Can't open %s\n", KEEP_LIST_FILE);
- + } else {
- + LOGE("open %s success\n",KEEP_LIST_FILE);
- + char buffer[MAX_SIZE]={0};
- + while(fgets(buffer,MAX_SIZE-1,fp) != NULL){
- + trim(buffer);
- + char *p=strstr(buffer," ");
- + *p=0;
- + char *src=buffer;
- + p++;
- + char *dst=p;
- + trim(src);
- + trim(dst);
- + if(copy_one_file(src,dst) != 0){
- + LOGE("wyl copy_one_file %s to %s failed\n",src,dst);
- + }else{
- + LOGE("wyl copy_one_file %s to %s success\n",src,dst);
- + if(chown(dst,1023,1023) == -1){
- + LOGE("chown %s to 1023 error\n",dst);
- + }
- + if(chmod(dst,0644) == -1){
- + LOGE("chmod %s 644 error\n",dst);
- + }
- + }
- + }
- + fclose(fp);
- + }
- + }else{
- + LOGE("wyl ensure_path_mounted failed\n");
- + }
- + sync();
- +}
- +//
- typedef struct _saved_log_file {
- char* name;
- struct stat st;
- @@ -557,7 +772,15 @@ bool erase_volume(const char* volume) {
- tmplog_offset = 0;
- copy_logs();
- }
- -
- +/*
- + * if data restore the media data
- + */
- + bool is_data = (strcmp(volume, "/data") == 0);
- + LOGE("in erase_volume wyl is_data is %d\n",is_data);
- + if(is_data){
- + restore_files();
- + }
- +//
- return (result == 0);
- }
- diff --git a/sepolicy/recovery.te b/sepolicy/recovery.te
- index cbea70e..d052d3a 100644
- --- a/sepolicy/recovery.te
- +++ b/sepolicy/recovery.te
- @@ -58,6 +58,11 @@ recovery_only(`
- access_kmsg(recovery)
- +
- + allow recovery media_rw_data_file:dir create_dir_perms;
- + allow recovery media_rw_data_file:file create_file_perms;
- + allow recovery media_rw_data_file:file { getattr read write };
- +
- # Access /dev/android_adb or /dev/usb-ffs/adb/ep0
- allow recovery adb_device:chr_file rw_file_perms;
- allow recovery functionfs:dir search;
(build/)
- diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py
- index aa5e8d0..116950f 100755
- --- a/tools/releasetools/add_img_to_target_files.py
- +++ b/tools/releasetools/add_img_to_target_files.py
- @@ -327,7 +327,6 @@ def AddImagesToTargetFiles(filename):
- banner("custom")
- AddCustom(output_zip)
- banner("userdata")
- - AddUserdata(output_zip)
- banner("cache")
- AddCache(output_zip)