Android6.0 MTK 需求文档(五)
一:图库中的照片全屏显示
(packages/apps/Gallery2/)
第一种:
diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.javaindex 0592bf4..e2667d3 100755--- a/src/com/android/gallery3d/app/PhotoPage.java+++ b/src/com/android/gallery3d/app/PhotoPage.java@@ -39,6 +39,9 @@ import android.content.pm.ResolveInfo; import android.content.res.Configuration; import android.graphics.Rect; import android.net.Uri;+import android.view.WindowManager;+import android.view.Window;+import android.graphics.Color; import android.nfc.NfcAdapter; import android.nfc.NfcAdapter.CreateBeamUrisCallback; import android.nfc.NfcEvent;@@ -1237,6 +1240,9 @@ public abstract class PhotoPage extends ActivityState implements if (mShowBars) return; mShowBars = true; mOrientationManager.unlockOrientation();+ Window win = mActivity.getWindow();+ win.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);+ win.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); mActionBar.show(); mActivity.getGLRoot().setLightsOutMode(false); /// M: [FEATURE.MODIFY] automatic layer visibility change @{@@ -1260,7 +1266,21 @@ public abstract class PhotoPage extends ActivityState implements if (!mShowBars) return; mShowBars = false; mActionBar.hide();- mActivity.getGLRoot().setLightsOutMode(true);+ Window win = mActivity.getWindow();+ win.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);+ int flags = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN+ + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION+ + | View.SYSTEM_UI_FLAG_FULLSCREEN+ + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY+ + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);+ + win.getDecorView().setSystemUiVisibility(flags);+ win.setNavigationBarColor(Color.TRANSPARENT);+ //mActivity.getGLRoot().setLightsOutMode(true); mHandler.removeMessages(MSG_HIDE_BARS); refreshBottomControlsWhenReady(); }@@ -2168,6 +2188,9 @@ public abstract class PhotoPage extends ActivityState implements mSensorManager.registerListener(this, proxmitySensor, SensorManager.SENSOR_DELAY_NORMAL); } // End of Vanzo:hanshengpeng+ Window win = mActivity.getWindow();+ win.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);+ win.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); if (mMuteVideo != null) { mMuteVideo.setMuteHasPaused(false); mMuteVideo.needPlayMuteVideo();@@ -2252,6 +2275,9 @@ public abstract class PhotoPage extends ActivityState implements mScreenNailSet = null; mScreenNailItem = null; }+ Window win = mActivity.getWindow();+ win.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);+ win.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); mActivity.getGLRoot().setOrientationSource(null); if (mBottomControls != null) mBottomControls.cleanup();
第二种:
diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.javaindex 0df2170..9b522cd 100755--- a/src/com/android/gallery3d/app/PhotoPage.java+++ b/src/com/android/gallery3d/app/PhotoPage.java@@ -116,6 +116,9 @@ import com.mediatek.galleryframework.base.BottomControlLayer; import com.mediatek.galleryframework.base.PhotoPageBottomViewControls; import com.mediatek.galleryframework.base.LayerManager; import com.mediatek.galleryframework.base.MediaData;+import android.view.WindowManager;+import android.view.Window;+import android.graphics.Color; /* Vanzo:hanshengpeng on: Sun, 24 Jan 2016 14:44:43 +0800 */ import android.os.SystemProperties;@@ -1183,6 +1186,8 @@ public abstract class PhotoPage extends ActivityState implements if (mShowBars) return; mShowBars = true; mOrientationManager.unlockOrientation();+ Window win = mActivity.getWindow();+ win.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); mActionBar.show(); mActivity.getGLRoot().setLightsOutMode(false); /// M: [FEATURE.MODIFY] automatic layer visibility change @{@@ -1206,6 +1211,9 @@ public abstract class PhotoPage extends ActivityState implements if (!mShowBars) return; mShowBars = false; mActionBar.hide();+ Window win = mActivity.getWindow();+ win.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);+ win.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); mActivity.getGLRoot().setLightsOutMode(true); mHandler.removeMessages(MSG_HIDE_BARS); refreshBottomControlsWhenReady();@@ -2165,6 +2173,7 @@ public abstract class PhotoPage extends ActivityState implements mScreenNailSet = null; mScreenNailItem = null; }+ mActivity.getGLRoot().setOrientationSource(null); if (mBottomControls != null) mBottomControls.cleanup();
(packages/apps/Launcher3/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java)
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.javaindex e299302..5ac7b2b 100755--- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java@@ -1059,11 +1059,15 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { if (partner == null || !partner.hideDefaultWallpaper()) { // Add an entry for the default wallpaper (stored in system resources)+/*+ * TODO: replace this line with your comment WallpaperTileInfo defaultWallpaperInfo = Utilities.ATLEAST_KITKAT ? getDefaultWallpaper() : getPreKKDefaultWallpaperInfo(); if (defaultWallpaperInfo != null) { bundled.add(0, defaultWallpaperInfo); }+ */+// End of Vanzo:yujianpeng } return bundled; }
三:wifi默认关闭
(packages/apps/Launcher3/)
diff --git a/AndroidManifest.xml b/AndroidManifest.xmlindex df22272..8929289 100755--- a/AndroidManifest.xml+++ b/AndroidManifest.xml@@ -70,6 +70,8 @@ + + diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.javaindex 9366659..7c30d9d 100644--- a/src/com/android/launcher3/Launcher.java+++ b/src/com/android/launcher3/Launcher.java@@ -146,6 +146,9 @@ import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import com.android.featureoption.FeatureOption;+import android.net.NetworkInfo;+import android.net.wifi.WifiManager;+import android.net.ConnectivityManager; // End of Vanzo:hanshengpeng /**@@ -5163,6 +5166,18 @@ public class Launcher extends Activity editor.apply(); } + private void closeWifiGps() {+ // Intent sh = new Intent("com.android.settings.location.CLOSE");+ //sendBroadcast(sh);+ final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);+ ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);+ NetworkInfo netWork = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI);+ if (wifiManager == null || netWork.isConnected()) {+ return;+ }+ wifiManager.setWifiEnabled(false);+ }+ @Thunk void showFirstRunClings() { // The two first run cling paths are mutually exclusive, if the launcher is preinstalled // on the device, then we always show the first run cling experience (or if there is no@@ -5175,6 +5190,7 @@ public class Launcher extends Activity } else { launcherClings.showLongPressCling(true); }+ closeWifiGps(); } }
四:手机插入SD卡时,默认存储器为SD卡
(packages/apps/Settings/)
diff --git a/AndroidManifest.xml b/AndroidManifest.xmlindex c8b252a..bed2c41 100644--- a/AndroidManifest.xml+++ b/AndroidManifest.xml@@ -3173,6 +3173,12 @@ add fp control -+ + + + + + + diff --git a/src/com/android/settings/UsbBroadCastReceiver.java b/src/com/android/settings/UsbBroadCastReceiver.javanew file mode 100644index 0000000..b578167--- /dev/null+++ b/src/com/android/settings/UsbBroadCastReceiver.java@@ -0,0 +1,26 @@+package com.android.settings;++import android.content.BroadcastReceiver;+import android.content.Context;+import android.content.Intent;+import android.provider.Settings;+import android.util.Log;+import android.os.storage.IMountService;+import com.mediatek.storage.StorageManagerEx;++public class UsbBroadCastReceiver extends BroadcastReceiver {+ String TAG = "UsbBroadCastReceiver";+ String ExternalStoragePath = StorageManagerEx.getExternalStoragePath();+++ public void onReceive(Context context, Intent intent) {++ Log.i(TAG,"receive change request");+ if (Intent.ACTION_MEDIA_MOUNTED.equals(intent.getAction())) {+ StorageManagerEx.setDefaultPath(ExternalStoragePath);+ }+ }++}
五:GPS默认节电模式
(packages/apps/Settings/src/com/android/settings/location/LocationSettings.java)
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.javaindex 3b71e79..3324c4d 100644--- a/src/com/android/settings/location/LocationSettings.java+++ b/src/com/android/settings/location/LocationSettings.java@@ -385,7 +385,7 @@ public class LocationSettings extends LocationSettingsBase @Override public void onSwitchChanged(Switch switchView, boolean isChecked) { if (isChecked) {- setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);+ setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_BATTERY_SAVING); } else { setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_OFF); }
六:更改在线壁纸名称
(packages/apps/Settings/src/com/android/settings/WallpaperTypeSettings.java)
diff --git a/src/com/android/settings/WallpaperTypeSettings.java b/src/com/android/settings/WallpaperTypeSettings.javaindex 9046bfb..138167c 100644--- a/src/com/android/settings/WallpaperTypeSettings.java+++ b/src/com/android/settings/WallpaperTypeSettings.java@@ -31,6 +31,8 @@ import com.android.settings.search.SearchIndexableRaw; import java.util.ArrayList; import java.util.List;+import java.util.Locale; public class WallpaperTypeSettings extends SettingsPreferenceFragment implements Indexable { @@ -70,7 +72,14 @@ public class WallpaperTypeSettings extends SettingsPreferenceFragment implements pref.setIntent(prefIntent); CharSequence label = info.loadLabel(pm); if (label == null) label = info.activityInfo.packageName;- pref.setTitle(label);+ String locale = Locale.getDefault().getLanguage();+ if("es".equals(locale )&&label.equals("Online Wallpaper")){ + pref.setTitle("Fondo de pantalla en línea");+ }else{+ pref.setTitle(label);+ } parent.addPreference(pref); } }
七:相机默认防闪做到60
(vendor/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml)
diff --git a/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml b/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xmlindex 607f6a0..a01f714 100755--- a/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml+++ b/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml@@ -684,6 +684,7 @@ add 16M 16_9 + - 60hz
- auto
- off
- 50hz
八:文件管理改变可用空间到4.16G和总容量8G
(vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java)
diff --git a/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java b/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.javaindex 47b8813..ccceac6 100644--- a/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java+++ b/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java@@ -47,7 +47,7 @@ import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.mediatek.filemanager.service.FileManagerService; import com.mediatek.filemanager.utils.FileUtils; import com.mediatek.filemanager.utils.LogUtils;@@ -319,8 +319,10 @@ public class FileInfoAdapter extends BaseAdapter { if (fileInfo.isDirectory()) { if (MountPointManager.getInstance().isMountPoint(fileInfo.getFileAbsolutePath())) { StringBuilder sb = new StringBuilder();- String freeSpaceString = FileUtils.sizeToString(MountPointManager.getInstance().getMountPointFreeSpace(fileInfo.getFileAbsolutePath()));- String totalSpaces = FileUtils.sizeToString(MountPointManager.getInstance().getMountPointTotalSpace(fileInfo.getFileAbsolutePath()));+ //String freeSpaceString = FileUtils.sizeToString(MountPointManager.getInstance().getMountPointFreeSpace(fileInfo.getFileAbsolutePath()));+ String freeSpaceString = "4.16 GB";+ //String totalSpaces = FileUtils.sizeToString(MountPointManager.getInstance().getMountPointTotalSpace(fileInfo.getFileAbsolutePath()));+ String totalSpaces = "8.00 GB"; LogUtils.d(TAG, "setSizeText, file name = " + fileInfo.getFileName() + ",file path = " + fileInfo.getFileAbsolutePath()); LogUtils.d(TAG, "setSizeText, freeSpace = " + MountPointManager.getInstance().getMountPointFreeSpace(fileInfo.getFileAbsolutePath()) + ",totalSpace = "
九:添加内存信息
(vendor/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DeviceInfoSettings.java)
diff --git a/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DeviceInfoSettings.java b/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DeviceInfoSettings.javaindex 4a1252a..ffdfd0d 100755--- a/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DeviceInfoSettings.java+++ b/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DeviceInfoSettings.java@@ -69,6 +69,8 @@ public class DeviceInfoSettings extends Activity { addRow(name,value); line = reader.readLine(); }+ addRow("RAM:","KINGSTON 1GB");+ addRow("ROM:","KINGSTON 8GB"); } reader.close();
十:默认浏览器--------本地浏览器设为默认浏览,打开链接(消费提示音等)不会弹出选择浏览器提示框,默认搜索引擎----Google
(frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java)
diff --git a/base/services/core/java/com/android/server/pm/PackageManagerService.java b/base/services/core/java/com/android/server/pm/PackageManagerService.javaindex bf86b54..f640a8b 100644--- a/base/services/core/java/com/android/server/pm/PackageManagerService.java+++ b/base/services/core/java/com/android/server/pm/PackageManagerService.java@@ -2632,11 +2632,55 @@ public class PackageManagerService extends IPackageManager.Stub { // are all flushed. Not really needed, but keeps things nice and // tidy. Runtime.getRuntime().gc();-+ setDefaultBrowser(); // Expose private service for system components to use. LocalServices.addService(PackageManagerInternal.class, new PackageManagerInternalImpl()); } + private final void setDefaultBrowser(){+ Log.d("debug_default","setDefaultBrowser is called.");+ if(!isFirstBoot()) {+ Log.d("debug_default","not first boot, return");+ return;+ } + String str1 = "android.intent.category.DEFAULT";+ String str2 = "android.intent.category.BROWSABLE";+ String str3 = "android.intent.action.VIEW";+ //intent filter+ IntentFilter filter = new IntentFilter(str3);+ filter.addCategory(str1);+ filter.addCategory(str2);+ filter.addDataScheme("http");+ //intent+ Intent intent = new Intent(str3);+ intent.addCategory(str2);+ intent.addCategory(str1);+ Uri uri = Uri.parse("http://");+ intent.setDataAndType(uri, null);+ ComponentName component = new ComponentName("com.android.browser","com.android.browser.BrowserActivity");+ List resolveInfoList = queryIntentActivities(intent,intent.getType(),PackageManager.GET_INTENT_FILTERS, 0);+ int size = resolveInfoList.size();+ ComponentName[] arrayOfComponentName = new ComponentName[size];+ boolean no_UC = true;+ for (int i = 0; i < size; i++)+ {+ ActivityInfo activityInfo = resolveInfoList.get(i).activityInfo;+ String packageName = activityInfo.packageName;+ String className = activityInfo.name;+ if (packageName.equals("com.android.browser")) no_UC = false;+ ComponentName componentName = new ComponentName(packageName, className);+ arrayOfComponentName[i] = componentName;+ }+ if (no_UC){+ Log.d("debug_default","no uc package");+ return;+ }else{+ Log.d("debug_default","uc package is in, set it as Preferred.");+ }+ addPreferredActivity2(filter,IntentFilter.MATCH_CATEGORY_SCHEME, arrayOfComponentName,component);+ Log.d("debug_default","add UC to PreferredActivity");+ }+ @Override public boolean isFirstBoot() { return !mRestoredSettings;@@ -15747,7 +15791,7 @@ public class PackageManagerService extends IPackageManager.Stub { synchronized (mPackages) { filter.dump(new LogPrinter(Log.INFO, TAG), " "); mSettings.editPreferredActivitiesLPw(0).addFilter(new PreferredActivity(filter, match, set, activity, true));- scheduleWriteSettingsLocked();+ mSettings.writePackageRestrictionsLPr(0); } } // End of
十一:浏览器正下载时,点击取消或者中止下载,需要弹出警告:Are you sure to delete it?/¿estás seguro para eliminarlo?
(frameworks/)
diff --git a/base/packages/DocumentsUI/res/values-en-rUS/strings.xml b/base/packages/DocumentsUI/res/values-en-rUS/strings.xmlindex 1170162..e4c52af 100755--- a/base/packages/DocumentsUI/res/values-en-rUS/strings.xml+++ b/base/packages/DocumentsUI/res/values-en-rUS/strings.xml@@ -103,4 +103,8 @@ Hide SD card Show file size Hide file size -\ No newline at end of file+ "Tips" + "Are you sure to delete it?" + "yes" + "no" +diff --git a/base/packages/DocumentsUI/res/values-es-rUS/strings.xml b/base/packages/DocumentsUI/res/values-es-rUS/strings.xmlindex 12a62ea..932d5bb 100644--- a/base/packages/DocumentsUI/res/values-es-rUS/strings.xml+++ b/base/packages/DocumentsUI/res/values-es-rUS/strings.xml@@ -16,6 +16,10 @@ + "Consejos" + "¿estás seguro para eliminarlo?" + "si" + "no" "Documentos" "Abrir desde" "Guardar en" diff --git a/base/packages/DocumentsUI/res/values-zh-rCN/strings.xml b/base/packages/DocumentsUI/res/values-zh-rCN/strings.xmlindex 643921c..8b6bff2 100644--- a/base/packages/DocumentsUI/res/values-zh-rCN/strings.xml+++ b/base/packages/DocumentsUI/res/values-zh-rCN/strings.xml@@ -16,6 +16,10 @@ + "提示" + "您确定要删除吗?" + "删除" + "取消" "文档" "打开文件" "保存文件" diff --git a/base/packages/DocumentsUI/res/values/strings.xml b/base/packages/DocumentsUI/res/values/strings.xmlindex 23c61fa..fcfa7ab 100755--- a/base/packages/DocumentsUI/res/values/strings.xml+++ b/base/packages/DocumentsUI/res/values/strings.xml@@ -137,4 +137,8 @@ Retry These files weren\'t copied: %1$s + Tips + Are you sure to delete it? + yes + no diff --git a/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.javaindex 9ae6e29..540f459 100755--- a/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java+++ b/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java@@ -36,6 +36,7 @@ import static com.android.documentsui.model.DocumentInfo.getCursorString; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo;+import android.app.AlertDialog; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction;@@ -45,6 +46,7 @@ import android.content.ContentProviderClient; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context;+import android.content.DialogInterface; import android.content.Intent; import android.content.Loader; import android.content.res.Resources;@@ -107,6 +109,7 @@ import com.mediatek.common.documentsui.IDocumentsUIExtension; /// M: Add to support drm import com.mediatek.drm.OmaDrmStore; import com.mediatek.drm.OmaDrmUtils;+import android.widget.Toast; /** * Display the documents inside a single directory.@@ -633,10 +636,12 @@ public class DirectoryFragment extends Fragment { return true; } + private ArrayList docs; @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { final SparseBooleanArray checked = mCurrentView.getCheckedItemPositions();- final ArrayList docs = Lists.newArrayList();+ //final ArrayList docs = Lists.newArrayList();+ docs = Lists.newArrayList(); final int size = checked.size(); final int id = item.getItemId(); for (int i = 0; i < size; i++) {@@ -685,10 +690,11 @@ public class DirectoryFragment extends Fragment { } else if (id == R.id.menu_delete) { /// M: remove state @{- final State state = getDisplayState(DirectoryFragment.this);- state.dirState.remove(mStateKey);+ // final State state = getDisplayState(DirectoryFragment.this);+ // state.dirState.remove(mStateKey); /// @}- onDeleteDocuments(docs);+ deleteDialog();+ // onDeleteDocuments(docs); mode.finish(); return true; @@ -709,7 +715,24 @@ public class DirectoryFragment extends Fragment { return false; } }-+ private void deleteDialog(){+ new AlertDialog.Builder(getActivity())+ .setTitle(R.string.custom_tips)+ .setMessage(R.string.message)+ .setPositiveButton(R.string.confirm,+ new DialogInterface.OnClickListener() {++@Override+public void onClick(DialogInterface arg0, int arg1) {+// TODO Auto-generated method stub+final State state = getDisplayState(DirectoryFragment.this);+state.dirState.remove(mStateKey);+onDeleteDocuments(docs);+}+})+ .setNegativeButton(R.string.cancel,null).show();+ + } @Override public void onDestroyActionMode(ActionMode mode) { /// M: restore action mode @{
十二:改关机时间长短
(frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java)
diff --git a/base/services/core/java/com/android/server/power/ShutdownThread.java b/base/services/core/java/com/android/server/power/ShutdownThread.javaindex 710bcc2..9f8be2e 100644--- a/base/services/core/java/com/android/server/power/ShutdownThread.java+++ b/base/services/core/java/com/android/server/power/ShutdownThread.java@@ -143,7 +143,7 @@ public final class ShutdownThread extends Thread { private static int mShutdownFlow; // Shutdown Animation- private static final int MIN_SHUTDOWN_ANIMATION_PLAY_TIME = 5 * 1000;+ private static final int MIN_SHUTDOWN_ANIMATION_PLAY_TIME = 10 * 1000; // CU/CMCC operator require 3-5s private static long beginAnimationTime = 0; private static long endAnimationTime = 0;@@ -159,7 +159,7 @@ public final class ShutdownThread extends Thread { * 2: bypass radio off * 3: bypass both * */-+ private static int screen_turn_off_time = 10 * 1000; private static final boolean mSpew = true; //debug enable private static IBootAnimExt mIBootAnim = null; // for boot animation@@ -526,7 +526,7 @@ public final class ShutdownThread extends Thread { beginAnimationTime = 0; boolean mShutOffAnimation = configShutdownAnimation(context);- int screenTurnOffTime = getScreenTurnOffTime(context);+ int screenTurnOffTime = screen_turn_off_time; synchronized (mEnableAnimatingSync) { if (mEnableAnimating) { if (mShutOffAnimation) {
十三:wifi热点上限数
(frameworks/base/core/java/android/provider/Settings.java)
diff --git a/base/core/java/android/provider/Settings.java b/base/core/java/android/provider/Settings.javaindex 4169d8c..78c167d 100644--- a/base/core/java/android/provider/Settings.java+++ b/base/core/java/android/provider/Settings.java@@ -3528,7 +3528,7 @@ public final class Settings { * Wifi hotspot default client number * @hide */- public static final int WIFI_HOTSPOT_DEFAULT_CLIENT_NUM = 6;+ public static final int WIFI_HOTSPOT_DEFAULT_CLIENT_NUM = 5; /** * The max client num of hotspot
十四:默认打开CB(小区广播)消息
(modems/lwtg/custom/service/nvram/nvram_cust_pack.c)
diff --git a/lwtg/custom/service/nvram/nvram_cust_pack.c b/lwtg/custom/service/nvram/nvram_cust_pack.cindex fd1f347..9d9ad3a 100644--- a/lwtg/custom/service/nvram/nvram_cust_pack.c+++ b/lwtg/custom/service/nvram/nvram_cust_pack.c@@ -1016,7 +1016,7 @@ kal_uint8 const COMMON_NVRAM_EF_SMSAL_COMMON_PARAM_DEFAULT[] = #ifdef __UE_SIMULATOR__ 0x01, 0x01, /* CB setting - ON */ #else- 0x00, 0x01, /* CB setting */+ 0x01, 0x01, /* CB setting */ #endif 0xFF, /* AT default profile ID.0xFF:invalid profile ID and SMSAL auto select profile id */ 0x00, /* First Octet */
十五: 进入工程模式,进入 "*#*#3646633#*#*"-->engineer mode---->Telephony---》Fast Dormancy--》ConfigFD--》默认选择第三项(Turn on R8 FD&Turn off Legacy FD)。(如附件 是在MTK平台下)
(modems/lwtg/custom/service/nvram/nvram_data_items.c)
diff --git a/lwtg/custom/service/nvram/nvram_data_items.c b/lwtg/custom/service/nvram/nvram_data_items.cindex c8ba4d6..bcb406c 100644--- a/lwtg/custom/service/nvram/nvram_data_items.c+++ b/lwtg/custom/service/nvram/nvram_data_items.c@@ -3393,6 +3393,7 @@ typedef enum * Define necessary default values for each logical data item. */ +static kal_uint8 const NVRAM_EF_PS_CONFORMANCE_TESTMODE_REVISE_DEFAULT[] ={ 0x00, 0x00, 0x40, 0x00 }; kal_uint8 const NVRAM_EF_ZERO_DEFAULT[] = { 0x00 }; kal_uint8 const NVRAM_EF_FF_DEFAULT[] = { 0xFF }; @@ -10685,7 +10686,7 @@ ltable_entry_struct logical_data_item_table_core[] = #ifdef __UE_SIMULATOR__ NVRAM_NORMAL(NVRAM_EF_PS_CONFORMANCE_TESTMODE_DEFAULT), #else- NVRAM_NORMAL(NVRAM_EF_ZERO_DEFAULT),+ NVRAM_NORMAL(NVRAM_EF_PS_CONFORMANCE_TESTMODE_REVISE_DEFAULT), #endif NVRAM_CATEGORY_USER, NVRAM_ATTR_AVERAGE,diff --git a/lwtg/interface/service/nvram/nvram_editor_data_item.h b/lwtg/interface/service/nvram/nvram_editor_data_item.hindex 6bca59b..f69ff68 100644--- a/lwtg/interface/service/nvram/nvram_editor_data_item.h+++ b/lwtg/interface/service/nvram/nvram_editor_data_item.h@@ -2776,7 +2776,7 @@ #endif -#define NVRAM_EF_PS_CONFORMANCE_TESTMODE_LID_VERNO "000"+#define NVRAM_EF_PS_CONFORMANCE_TESTMODE_LID_VERNO "001" #define NVRAM_EF_MOBILE_BROADBAND_PROVISION_CONTEXT_LID_VERNO "000" //__MOBILE_BROADBAND_PROVISION_CONTEXT__ #define NVRAM_EF_MSQ_LIST_LID_VERNO "001" //__MEDIATEK_SMART_QOS__ (MSQ)
十六: 通讯录新建联系人默认保存在sim卡(点击新建,弹出两个选项sim,phone,默认选sim)
(packages/apps/Contacts/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java)
diff --git a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.javaindex 00d1fbc..6e4c882 100644--- a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java+++ b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java@@ -135,21 +135,19 @@ public class ContactEditorAccountsChangedActivity extends Activity { if (numAccounts >= 2) { // When the user has 2+ writable accounts, show a list of accounts so the user can pick // which account to create a contact in.- setContentView(R.layout.contact_editor_accounts_changed_activity_with_picker);-- final TextView textView = (TextView) findViewById(R.id.text); /// M:- textView.setText(getString(R.string.store_contact_to));-- final Button button = (Button) findViewById(R.id.add_account_button);- button.setText(getString(R.string.add_new_account));- button.setOnClickListener(mAddAccountClickListener);-- final ListView accountListView = (ListView) findViewById(R.id.account_list); mAccountListAdapter = new AccountsListAdapter(this, AccountListFilter.ACCOUNTS_CONTACT_WRITABLE);- accountListView.setAdapter(mAccountListAdapter);- accountListView.setOnItemClickListener(mAccountListItemClickListener);+ String accountType = mAccountListAdapter.getItem(0).type.toString();+ if (AccountTypeUtils.isAccountTypeIccCard(accountType)) {+ AccountWithDataSet ads = mAccountListAdapter.getItem(0);++ mSubId = SubInfoUtils.getInvalidSubId();+ if (ads instanceof AccountWithDataSetEx) {+ mSubId = ((AccountWithDataSetEx) ads).getSubId();+ }+ checkPHBStateAndSaveAccount(0);+ } } else if (numAccounts == 1) { // If the user has 1 writable account we will just show the user a message with 2 // possible action buttons.
十七:第一次开机是如果无sim卡加提示
(packages/apps/Launcher3/)
diff --git a/AndroidManifest.xml b/AndroidManifest.xmlindex 73f01e2..0b12bea 100644--- a/AndroidManifest.xml+++ b/AndroidManifest.xml@@ -64,6 +64,7 @@ + diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.javaindex 8a0ce6a..b959c93 100644--- a/src/com/android/launcher3/Launcher.java+++ b/src/com/android/launcher3/Launcher.java@@ -33,7 +33,9 @@ import android.annotation.TargetApi; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityOptions;+import android.app.Dialog; import android.app.AlertDialog;+import android.app.AlertDialog.Builder; import android.app.SearchManager; import android.app.Service; import android.appwidget.AppWidgetHostView;@@ -102,6 +104,7 @@ import android.view.animation.OvershootInterpolator; import android.view.inputmethod.InputMethodManager; import android.widget.Advanceable; import android.widget.FrameLayout;+import android.telephony.TelephonyManager; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast;@@ -498,6 +501,7 @@ public class Launcher extends Activity ///M. private String mCurrentQsbPkgName;+ private TelephonyManager telMgr;
+ private int first_boot = 0; @Override protected void onCreate(Bundle savedInstanceState) {@@ -522,6 +526,17 @@ public class Launcher extends Activity super.onCreate(savedInstanceState);+ if(first_boot == 0){+ telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);+ Log.i("rmy", "telMgr()="+telMgr.getSimState());+ if (telMgr.getSimState() == telMgr.SIM_STATE_READY) {+ Log.i("rmy", "良好");+ } else if (telMgr.getSimState() == telMgr.SIM_STATE_ABSENT) {+ Log.i("rmy", "无SIM卡");+ checkSimDialog(this);+ } else {+ Log.i("rmy", "SIM卡被锁定或未知的状态");+ }+ } LauncherAppState.setApplicationContext(getApplicationContext()); LauncherAppState app = LauncherAppState.getInstance(); @@ -649,6 +664,21 @@ public class Launcher extends Activity } } + private void checkSimDialog(final Context context) {+ AlertDialog.Builder simDialog = new AlertDialog.Builder(context);+ simDialog.setTitle("Preguntar");+ simDialog.setMessage("SIM invalida");+ simDialog.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {+ @Override+ public void onClick(DialogInterface dialog, int which) {+ dialog.dismiss();+ }+ });+ AlertDialog dialog = simDialog.create();+ dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);+ dialog.show();+ }+ @Override public void onSettingsChanged(String settings, boolean value) { if (Utilities.ALLOW_ROTATION_PREFERENCE_KEY.equals(settings)) {
十八: wifi要内置两个名字分别为MOVISTAR WIFI and VIVO-WIFI 的无线网。安全类型为802.1XEAP.密码为空。 类似用户进入wifi界面,手机创建一个wifi后的效果。如附件图片
(packages/apps/Settings/)
diff --git a/src/com/android/settings/net/DataUsageMeteredSettings.java b/src/com/android/settings/net/DataUsageMeteredSettings.javaindex ec1dd38..56ab5e8 100644--- a/src/com/android/settings/net/DataUsageMeteredSettings.java+++ b/src/com/android/settings/net/DataUsageMeteredSettings.java@@ -118,6 +118,11 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment impleme final NetworkTemplate template = NetworkTemplate.buildTemplateWifi(networkId); final MeteredPreference pref = new MeteredPreference(context, template); pref.setTitle(removeDoubleQuotes(networkId));+ if (networkId.contains("MOVISTAR WIFI")) {+ pref.setTitle("MOVISTAR WIFI");+ } else if (networkId.contains("VIVO WIFI")) {+ pref.setTitle("VIVO WIFI");+ } return pref; } @@ -207,6 +212,11 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment impleme data = new SearchIndexableRaw(context); data.title = removeDoubleQuotes(networkId);+ if (networkId.contains("MOVISTAR WIFI")) {+ data.title = "MOVISTAR WIFI";+ } else if (networkId.contains("VIVO WIFI")) {+ data.title = "VIVO WIFI";+ } data.screenTitle = res.getString(R.string.data_usage_menu_metered); result.add(data); }diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.javaindex 8a241be..e91613c 100644--- a/src/com/android/settings/wifi/WifiConfigController.java+++ b/src/com/android/settings/wifi/WifiConfigController.java@@ -328,6 +328,10 @@ public class WifiConfigController implements TextWatcher, } if (mAccessPoint.isSaved() || mAccessPoint.isActive()) { mConfigUi.setForgetButton(res.getString(R.string.wifi_forget));+ if (!mAccessPoint.toString().contains("MOVISTAR WIFI")+ && !mAccessPoint.toString().contains("VIVO WIFI")) {+ mConfigUi.setForgetButton(res.getString(R.string.wifi_forget));+ } } } }diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.javaindex 03ab864..c0eb2d1 100644--- a/src/com/android/settings/wifi/WifiSettings.java+++ b/src/com/android/settings/wifi/WifiSettings.java@@ -758,7 +758,8 @@ public class WifiSettings extends RestrictedSettingsFragment int index = 0; for (AccessPoint accessPoint : accessPoints) { // Ignore access points that are out of range.- if (accessPoint.getLevel() != -1) {+ if (accessPoint.getLevel() != -1 || accessPoint.toString().contains("MOVISTAR WIFI")+ || accessPoint.toString().contains("VIVO WIFI")) { hasAvailableAccessPoints = true; if (accessPoint.getTag() != null) { final Preference pref = (Preference) accessPoint.getTag();
(vendor/mediatek/proprietary/hardware/connectivity/wlan/config/mtk-wpa_supplicant-overlay.conf)
diff --git a/mediatek/proprietary/hardware/connectivity/wlan/config/mtk-wpa_supplicant-overlay.conf b/mediatek/proprietary/hardware/connectivity/wlan/config/mtk-wpa_supplicant-overlay.confindex f6b7121..4d5d52b 100644--- a/mediatek/proprietary/hardware/connectivity/wlan/config/mtk-wpa_supplicant-overlay.conf+++ b/mediatek/proprietary/hardware/connectivity/wlan/config/mtk-wpa_supplicant-overlay.conf@@ -1,3 +1,20 @@ p2p_no_group_iface=1 driver_param=use_p2p_group_interface=1 wowlan_triggers=disconnect+overlay_loaded=1+network={+ ssid="MOVISTAR WIFI"+ key_mgmt=WPA-EAP IEEE8021X+ eap=SIM+ disabled=1+ priority=1+ read_only=1+ }+network={+ ssid="VIVO WIFI"+ key_mgmt=WPA-EAP IEEE8021X+ eap=SIM+ disabled=1+ priority=1+ read_only=1+ }
十九: 主菜单--》设置--》语言和输入法--》Android keyboard 右边的设置图标---》show correction suggestions--》改成默认选中always hide
(packages/inputmethods/)
diff --git a/LatinIME/java/res/xml/prefs_screen_correction.xml b/LatinIME/java/res/xml/prefs_screen_correction.xmlindex a943dc1..1653b0f 100644--- a/LatinIME/java/res/xml/prefs_screen_correction.xml+++ b/LatinIME/java/res/xml/prefs_screen_correction.xml@@ -51,7 +51,7 @@ android:key="show_suggestions" android:summary="@string/prefs_show_suggestions_summary" android:title="@string/prefs_show_suggestions"- android:defaultValue="true"+ android:defaultValue="false" android:persistent="true" />
二十:浏览器下载的文件, 默认保存在”Downloads“名字的文件夹
(vendor/mediatek/proprietary/packages/apps/Browser/ext/src/com/mediatek/browser/ext/DefaultBrowserSettingExt.java)
diff --git a/mediatek/proprietary/packages/apps/Browser/ext/src/com/mediatek/browser/ext/DefaultBrowserSettingExt.java b/mediatek/proprietary/packages/apps/Browser/ext/src/com/mediatek/browser/ext/DefaultBrowserSettingExt.javaindex 475bbb8..02dc88c 100755--- a/mediatek/proprietary/packages/apps/Browser/ext/src/com/mediatek/browser/ext/DefaultBrowserSettingExt.java+++ b/mediatek/proprietary/packages/apps/Browser/ext/src/com/mediatek/browser/ext/DefaultBrowserSettingExt.java@@ -21,7 +21,7 @@ public class DefaultBrowserSettingExt implements IBrowserSettingExt { private static final String TAG = "DefaultBrowserSettingsExt"; private static final String DEFAULT_DOWNLOAD_DIRECTORY = "/storage/sdcard0/MyFavorite";- private static final String DEFAULT_MY_FAVORITE_FOLDER = "/MyFavorite";+ private static final String DEFAULT_MY_FAVORITE_FOLDER = "/Download"; private static final String PREF_SEARCH_ENGINE = "search_engine"; private static final String DEFAULT_SEARCH_ENGIN = "google";
二十一:UA string 需要加上项目名Gomoible GO1003 (根据具体的项目名称修改),查看的网址为:whatsmyuseragent.com
(vendor/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/BrowserSettings.java)
diff --git a/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/BrowserSettings.java b/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/BrowserSettings.javaindex 5079bc1..561329f 100755--- a/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/BrowserSettings.java+++ b/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/BrowserSettings.java@@ -363,7 +363,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, sBrowserSettingExt = Extensions.getSettingPlugin(mContext); sBrowserSettingExt.setStandardFontFamily(settings, mPrefs); - String ua = mCustomUserAgents.get(settings);+ String ua = "Mozilla/5.0 (Linux; Android 6.0; GOMOBILE GO1003 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.119 Mobile Safari/537.36"; if (ua != null) { settings.setUserAgentString(ua); } else {
二十二: 添加通道( 50,919,921,4370),通道号和名字都设为 50,919,921,4370。(通道-channel(英文)-canal(西班牙语)),默认都是enable的,并且默认可以接受所有语言的。
(packages/providers/)
diff --git a/TelephonyProvider/src/com/android/providers/telephony/CbProvider.java b/TelephonyProvider/src/com/android/providers/telephony/CbProvider.javaindex 3d7ac48..c32acf5 100755--- a/TelephonyProvider/src/com/android/providers/telephony/CbProvider.java+++ b/TelephonyProvider/src/com/android/providers/telephony/CbProvider.java@@ -134,8 +134,10 @@ public class CbProvider extends ContentProvider { // break; case URL_CHANNEL: qb.setTables(CbDatabaseHelper.CHANNEL_TABLE);+ if (selection == null || !selection.contains("sub_id")) { qb.appendWhere("(sub_id = " + SmsProvider.getSubIdFromUri(url) + ")");+ } break; case URL_CONVERSATION: // qb.setTables(CbDatabaseHelper.CONVERSATION_TABLE);
(vendor/ ) diff --git a/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml b/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xmlindex 1e224e1..cdb7bce 100755--- a/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml+++ b/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml@@ -88,6 +88,7 @@ + + + @@ -534,6 +538,12 @@ add for MClock update sms database + + + diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ConversationListItem.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ConversationListItem.javaindex a30251a..9b25f26 100644--- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ConversationListItem.java+++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ConversationListItem.java@@ -558,7 +558,7 @@ public class ConversationListItem extends RelativeLayout implements Contact.Upda .getString(R.string.cb_default_channel_name); } try {- from = name + "(" + channelId + ")";+ from = name; } catch (NumberFormatException e) { MmsLog.e(TAG, "format recipient number error!"); }diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageListActivity.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageListActivity.javaindex 3871434..57aa812 100755--- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageListActivity.java+++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageListActivity.java@@ -369,8 +369,7 @@ public class CBMessageListActivity extends Activity implements DraftCache.OnDraf .getString(R.string.cb_default_channel_name)); } else { actionBar.setTitle(MmsApp.getApplication().getApplicationContext()- .getString(R.string.cb_default_channel_name)- + "(" + mConversation.getRecipients().get(0).getNumber() + ")");+ .getString(R.string.cb_default_channel_name)); } default:@@ -402,8 +401,7 @@ public class CBMessageListActivity extends Activity implements DraftCache.OnDraf ActionBar actionBar = getActionBar(); actionBar.setTitle(MmsApp.getApplication().getApplicationContext().getString(- R.string.cb_default_channel_name)- + "(" + mConversation.getRecipients().get(0).getNumber() + ")");+ R.string.cb_default_channel_name)); actionBar.setDisplayHomeAsUpEnabled(true); // We used to refresh the DraftCache here, butdiff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiver.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiver.javaindex 7415026..816a1f5 100755--- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiver.java+++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiver.java@@ -64,6 +64,8 @@ import com.android.mms.MmsApp; import com.android.mms.util.MmsLog; import com.mediatek.mms.util.PermissionCheckUtil; +import com.android.internal.telephony.TelephonyIntents;+ /** * M: * Handle incoming SMSes. Just dispatches the work off to a Service.@@ -98,7 +100,14 @@ public class CBMessageReceiver extends BroadcastReceiver { + intent.getAction() + ", result = " + getResultCode()); intent.setClass(context, CBMessageReceiverService.class);+/* intent.putExtra("result", getResultCode());+ */+ android.util.Log.d(" CBMessageReceiver ", " CBMessageReceiver.onReceiveWithPrivilege 97 ");+ if (!TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(intent.getAction())) {+ intent.putExtra("result", getResultCode());+ }+// End of beginStartingService(context, intent); } diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiverService.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiverService.javaindex d3251c7..1e883cc 100755--- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiverService.java+++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiverService.java@@ -81,6 +81,24 @@ import com.mediatek.mms.ext.IOpCBMessageReceiverServiceExt; import com.mediatek.opmsg.util.OpMessageUtils; import android.telephony.SubscriptionManager;+import com.mediatek.mms.util.MmsDialogNotifyUtils;+/*+ */+import android.provider.Telephony;+import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;+import android.content.ContentValues;+import android.database.Cursor;+import android.util.Log;+import com.android.internal.telephony.IccCardConstants;+import com.android.internal.telephony.TelephonyIntents;+import android.telephony.SmsManager;+import android.provider.Telephony.Sms.Intents;+import android.app.AlertDialog;+import android.content.DialogInterface;+import android.view.WindowManager;+import java.text.SimpleDateFormat;+import java.util.Date;+// End of Vanzo:tanglei /** * M:@@ -97,6 +115,19 @@ public class CBMessageReceiverService extends Service { private static final Uri MESSAGE_URI = Telephony.SmsCb.CONTENT_URI; private static final int DEFAULT_SUB_ID = 1;+/* + */+ private static final int MESSAGE_SET_STATE = 33;+ private static final int MESSAGE_SET_CONFIG = 32;+ private static final String KEYID = "_id";+ private static final String NAME = "name";+ private static final String NUMBER = "number";+ private static final String ENABLE = "enable";+ private static final String SUBID = "sub_id";+ private static final Uri CHANNEL_URI = Uri.parse("content://cb/channel");+ private static final int EVENT_RETRY_ADD_CHANNEL_TIME_OUT = 101;+ private static boolean isAddingDefaultChannel = false;+// End of public Handler mToastHandler = new Handler() { @Override@@ -159,6 +190,7 @@ public class CBMessageReceiverService extends Service { public void handleMessage(Message msg) { int serviceId = msg.arg1; Intent intent = (Intent) msg.obj;+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.ServiceHandler.handleMessage 185 serviceId="+serviceId+" msg.what="+msg.what+" intent="+intent); // modify by mtk_debug 2015-3-19; if (intent != null) { String action = intent.getAction(); // NEED Replace with CB ACTION@@ -166,12 +198,266 @@ public class CBMessageReceiverService extends Service { handleCBMessageReceived(intent); } }++ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.ServiceHandler.handleMessage 162 "); // modify by mtk_debug 2015-3-05;+ if(TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(intent.getAction())){+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.ServiceHandler.handleMessage receiver a ACTION_SIM_STATE_CHANGED 164 "); // modify by mtk_debug 2015-3-05;+ synchronized(this){+ handleSIMStateChangedReceived(intent);+ }+ } // NOTE: We MUST not call stopSelf() directly, since we need to // make sure the wake lock acquired by AlertReceiver is released.- CBMessageReceiver.finishStartingService(CBMessageReceiverService.this, serviceId);+ if(!isAddingDefaultChannel){+ CBMessageReceiver.finishStartingService(CBMessageReceiverService.this, serviceId);+ } } } +/* + */+ private void handleSIMStateChangedReceived(Intent intent) {+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived 191 "); // modify by mtk_debug 2015-3-05;+ int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY, SubscriptionManager.INVALID_SUBSCRIPTION_ID);+ String stateExtra = intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE);+ // boolean stateExtra = intent.getBooleanExtra("ready",false);+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived 214 stateExtra="+stateExtra); + if(IccCardConstants.INTENT_VALUE_ICC_READY.equals(stateExtra)){+ // if(stateExtra){+ if(queryIfChannelInDatabase(subId,"919",919))+ {+ Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 in database");+ isAddingDefaultChannel=false;+ }else{+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 not in database 699 "); // modify by mtk_debug 2015-3-02;+ if(SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(true))/*这里会先把CB打开*/+ { + Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived addCustomChanneltoList(subId,Channel1,50);");+ addCustomChanneltoList(subId,"919",919);+ isAddingDefaultChannel=false;++ //请注意:如果贵司做了开机默认关闭小区广播的feature,请取消下面这句code的注释+ //SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(false); //用于关闭小区广播开关++ }else{++ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived activateCellBroadcastSms fail 716 "); // modify by mtk_debug 2015-3-05;+ //add retry+ if (!mServiceHandler.hasMessages(EVENT_RETRY_ADD_CHANNEL_TIME_OUT)) {+ Message msg = mServiceHandler.obtainMessage(EVENT_RETRY_ADD_CHANNEL_TIME_OUT,intent);+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived send retry message 235 "); // modify by mtk_debug 2015-3-19;+ mServiceHandler.sendMessageDelayed(msg, 2000);+ isAddingDefaultChannel=true;+ }+++ }++ }+ if(queryIfChannelInDatabase(subId,"50",50))+ {+ Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 in database");+ isAddingDefaultChannel=false;+ }else{+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 not in database 699 "); // modify by mtk_debug 2015-3-02;+ if(SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(true))/*这里会先把CB打开*/+ { + Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived addCustomChanneltoList(subId,Channel1,50);");+ addCustomChanneltoList(subId,"50",50);+ isAddingDefaultChannel=false;++ //请注意:如果贵司做了开机默认关闭小区广播的feature,请取消下面这句code的注释+ //SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(false); //用于关闭小区广播开关++ }else{++ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived activateCellBroadcastSms fail 716 "); // modify by mtk_debug 2015-3-05;+ //add retry+ if (!mServiceHandler.hasMessages(EVENT_RETRY_ADD_CHANNEL_TIME_OUT)) {+ Message msg = mServiceHandler.obtainMessage(EVENT_RETRY_ADD_CHANNEL_TIME_OUT,intent);+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived send retry message 235 "); // modify by mtk_debug 2015-3-19;+ mServiceHandler.sendMessageDelayed(msg, 2000);+ isAddingDefaultChannel=true;+ }+++ }++ }+ if(queryIfChannelInDatabase(subId,"4370",4370))+ {+ Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 in database");+ isAddingDefaultChannel=false;+ }else{+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 not in database 699 "); // modify by mtk_debug 2015-3-02;+ if(SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(true))/*这里会先把CB打开*/+ { + Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived addCustomChanneltoList(subId,Channel1,50);");+ addCustomChanneltoList(subId,"4370",4370);+ isAddingDefaultChannel=false;++ //请注意:如果贵司做了开机默认关闭小区广播的feature,请取消下面这句code的注释+ //SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(false); //用于关闭小区广播开关++ }else{++ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived activateCellBroadcastSms fail 716 "); // modify by mtk_debug 2015-3-05;+ //add retry+ if (!mServiceHandler.hasMessages(EVENT_RETRY_ADD_CHANNEL_TIME_OUT)) {+ Message msg = mServiceHandler.obtainMessage(EVENT_RETRY_ADD_CHANNEL_TIME_OUT,intent);+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived send retry message 235 "); // modify by mtk_debug 2015-3-19;+ mServiceHandler.sendMessageDelayed(msg, 2000);+ isAddingDefaultChannel=true;+ }+++ }++ }+ if(queryIfChannelInDatabase(subId,"921",921))+ {+ Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 in database");+ isAddingDefaultChannel=false;+ }else{+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 not in database 699 "); // modify by mtk_debug 2015-3-02;+ if(SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(true))/*这里会先把CB打开*/+ { + Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived addCustomChanneltoList(subId,Channel1,50);");+ addCustomChanneltoList(subId,"921",921);+ isAddingDefaultChannel=false;++ //请注意:如果贵司做了开机默认关闭小区广播的feature,请取消下面这句code的注释+ //SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(false); //用于关闭小区广播开关++ }else{++ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived activateCellBroadcastSms fail 716 "); // modify by mtk_debug 2015-3-05;+ //add retry+ if (!mServiceHandler.hasMessages(EVENT_RETRY_ADD_CHANNEL_TIME_OUT)) {+ Message msg = mServiceHandler.obtainMessage(EVENT_RETRY_ADD_CHANNEL_TIME_OUT,intent);+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.handleSIMStateChangedReceived send retry message 235 "); // modify by mtk_debug 2015-3-19;+ mServiceHandler.sendMessageDelayed(msg, 2000);+ isAddingDefaultChannel=true;+ }+++ }++ }++ }++ }++ private void addCustomChanneltoList(int mSubId,String channelName,int channelNum){+ Log.d(TAG, "addCustomChanneltoList: mSubId=" + mSubId+ + ", channelName= " + channelName + ", channelNum= " + channelNum);++ SmsBroadcastConfigInfo[] objectList = new SmsBroadcastConfigInfo[1];+ objectList[0] = new SmsBroadcastConfigInfo(channelNum,channelNum, -1, -1, true);++ Log.d(TAG, "addCustomChanneltoList: setCellBroadcastSmsConfig");+ //SmsManagerEx.getDefault().setCellBroadcastSmsConfig(objectList, objectList, mSimId);+ boolean isSetConfigSuccess = SmsManager.getSmsManagerForSubscriptionId(mSubId).setCellBroadcastSmsConfig(objectList, objectList);+ if(isSetConfigSuccess){+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.addCustomChanneltoList set channel " +channelNum +" success 784 "); // modify by mtk_debug 2015-3-05;+ addChannelToDatabase(mSubId,channelName,channelNum);+ }else{+ Log.d(" CBMessageReceiverService ", " CBMessageReceiverService.addCustomChanneltoList set channel "+ channelNum +" failed 786 "); // modify by mtk_debug 2015-3-05;+ }+++ Log.d(TAG, " CBMessageReceiverService addCustomChanneltoList: function end");+ }++++ private boolean addChannelToDatabase(int mSubId,String channelName,int channelNum){+ // ClearChannel();+ Log.d(TAG, "addChannelToDatabase: mSubId=" + mSubId+ + ", channelName= " + channelName + ", channelNum= " + channelNum);+ String[] projection = new String[] { NUMBER, SUBID};+ String SELECTIONNum = "(" + NUMBER + " = " + channelNum + ")"; + String SELECTIONid = "(" + SUBID + " = " + mSubId + ")";+ Cursor cursornum = null;+ Cursor cursorid = null;++ Cursor cursorzz = this.getContentResolver().query(CHANNEL_URI,+ projection,+ NUMBER + " = ? AND " ++ SUBID + " = ?",+ new String[] {String.valueOf(channelNum), String.valueOf(mSubId)},+ null);+ Log.d(TAG, "addChannelToDatabase: cursor.getCount"+cursorzz.getCount());+ if(cursorzz.getCount() == 0){//if ((cursornum.getCount() == 0)&&(cursorid.getCount() == 0)){ + Log.d(" CBMessageReceiverService ", " SmsReceiverService.addChannelToDatabase add mSubId=" + mSubId+ + ", channelName= " + channelName + ", channelNum= " + channelNum +"to database"); // modify by mtk_debug 2015-3-05;+ ContentValues values = new ContentValues();+ values.put(NAME,channelName);+ values.put(NUMBER, channelNum);+ values.put(ENABLE, true); //请注意:如果贵司希望预置的频道默认为disable状态,把true改成false即可+ values.put(SUBID, mSubId);+ try {+ //if(mSimId==PhoneConstants.SUB1){+ this.getContentResolver().insert(CHANNEL_URI, values);+ //}else if(mSimId==PhoneConstants.SUB2){+ // this.getContentResolver().insert(CHANNEL_URI1, values);+ //}+ } catch (Exception e){+ Log.d(" CBMessageReceiverService ", " SmsReceiverService.addChannelToDatabase exception 828 "); // modify by mtk_debug 2015-3-05;+ //cursornum.close();+ //cursorid.close();+ cursorzz.close();+ return false;+ }+ //cursornum.close();+ // cursorid.close();+ cursorzz.close();+ return true;+ }+ else{+ //cursornum.close();+ //cursorid.close();+ cursorzz.close();+ return false;+ }++ } +++ private boolean queryIfChannelInDatabase(int mSubId,String channelName,int channelNum){++ Log.d(TAG, "queryIfChannelInDatabase: mSubId=" + mSubId+ + ", channelName= " + channelName + ", channelNum= " + channelNum);+ String[] projection = new String[] { NUMBER, SUBID};+ String SELECTIONNum = "(" + NUMBER + " = " + channelNum + ")"; + String SELECTIONid = "(" + SUBID + " = " + mSubId + ")";+ Cursor cursornum = null;+ Cursor cursorid = null;++ Cursor cursorzz = this.getContentResolver().query(CHANNEL_URI,+ projection,+ NUMBER + " = ? AND " ++ SUBID + " = ?",+ new String[] {String.valueOf(channelNum),String.valueOf(mSubId)},+ null);++ if(cursorzz != null&&cursorzz.getCount() > 0){+ //if ((cursornum.getCount() != 0)&&(cursorid.getCount() != 0)){+ Log.d(TAG, "queryIfChannelInDatabase: cursor.getCount"+cursorzz.getCount());+ cursorzz.close();+ return true;+++ }else{+ cursorzz.close();+ Log.d(TAG, "queryIfChannelInDatabase: return false");+ return false;+ }++ }+// End of Vanzo:tanglei+ private void handleCBMessageReceived(Intent intent) { // TODO need replace with cb message. Bundle extras = intent.getExtras();@@ -200,7 +486,37 @@ public class CBMessageReceiverService extends Service { } if (messageUri != null) {- CBMessagingNotification.updateNewMessageIndicator(subId, this, true);+ if (message.getServiceCategory() == 919 ||+ message.getServiceCategory() == 50 ||+ message.getServiceCategory() == 921) {+ //alert repeat with audio and vibrate+ CellBroadcastAlertWakeLock.acquireScreenCpuWakeLock(this);+ Intent audioIntent = new Intent(this, CellBroadcastAlertAudio.class);+ audioIntent.setAction(CellBroadcastAlertAudio.ACTION_START_ALERT_AUDIO);+ audioIntent.putExtra(CellBroadcastAlertAudio.ALERT_AUDIO_DURATION_EXTRA, 10500);+ audioIntent.putExtra(CellBroadcastAlertAudio.ALERT_AUDIO_VIBRATE_EXTRA, true);+ startService(audioIntent);+ SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa. | dd/MM/yyyy");+ String time = sdf.format(new Date(System.currentTimeMillis())).toString();+ final Context sContext = getApplicationContext();+ AlertDialog alert = new AlertDialog.Builder(sContext)+ .setTitle("Alerta de Emergencia")+ .setMessage(message.getMessageBody() + "\n\n" + time)+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {+ @Override+ public void onClick(DialogInterface dialog, int which) {+ sContext.stopService(new Intent(sContext, CellBroadcastAlertAudio.class));+ dialog.dismiss();+ }+ })+ .create();+ alert.getWindow().setType(+ WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);+ alert.setCancelable(false);+ alert.show();+ } else {+ CBMessagingNotification.updateNewMessageIndicator(subId, this, true);+ } } } diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessagingNotification.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessagingNotification.javaindex f9c161e..addf59d 100755--- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessagingNotification.java+++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessagingNotification.java@@ -268,7 +268,6 @@ public class CBMessagingNotification { //String address = Conversation.getChannelNameFromId(context, channel_id); String address; address = CBMessage.getCBChannelName(subId, channelId);- address = address + "(" + channelId + ")"; CBNotificationInfo info = getNewMessageNotificationInfo( address, body, context, R.drawable.stat_notify_sms, null, threadId, timeMillis, cursor.getCount(),diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CellBroadcastAlertAudio.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CellBroadcastAlertAudio.javanew file mode 100644index 0000000..f868e44--- /dev/null+++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CellBroadcastAlertAudio.java@@ -0,0 +1,435 @@+/*+ * Copyright (C) 2011 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.cb.cbmsg;++import android.app.Service;+import android.content.BroadcastReceiver;+import android.content.Context;+import android.content.Intent;+import android.content.IntentFilter;+import android.content.SharedPreferences;+import android.content.res.AssetFileDescriptor;+import android.content.res.Resources;+import android.media.AudioManager;+import android.media.MediaPlayer;+import android.media.MediaPlayer.OnErrorListener;+import android.os.Handler;+import android.os.IBinder;+import android.os.Message;+import android.os.Vibrator;+import android.speech.tts.TextToSpeech;+import android.telephony.PhoneStateListener;+import android.telephony.TelephonyManager;+import android.util.Log;+import java.io.IOException;+import java.util.HashMap;+import java.util.ArrayList;+import java.util.Locale;+import com.android.mms.R;++/**+ * Manages alert audio and vibration and text-to-speech. Runs as a service so that+ * it can continue to play if another activity overrides the CellBroadcastListActivity.+ */+public class CellBroadcastAlertAudio extends Service {+ private static final String TAG = "CellBroadcastAlertAudio";+ private static final int PRESIDENT_ALERT_ID = 4370;+ /** Action to start playing alert audio/vibration/speech. */+ static final String ACTION_START_ALERT_AUDIO = "ACTION_START_ALERT_AUDIO";++ /** Extra for alert audio duration (from settings). */+ public static final String ALERT_AUDIO_DURATION_EXTRA =+ "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_DURATION";++ /** Extra for message body to speak (if speech enabled in settings). */+ public static final String ALERT_AUDIO_MESSAGE_BODY =+ "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_MESSAGE_BODY";++ /** Extra for text-to-speech language (if speech enabled in settings). */+ public static final String ALERT_AUDIO_MESSAGE_LANGUAGE =+ "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_MESSAGE_LANGUAGE";++ /** Extra for message ID . */+ public static final String ALERT_AUDIO_MESSAGE_ID =+ "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_MESSAGE_ID";++ /** Extra for alert audio vibration enabled (from settings). */+ public static final String ALERT_AUDIO_VIBRATE_EXTRA =+ "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_VIBRATE";++ /** Extra for alert audio ETWS behavior (always vibrate, even in silent mode). */+ public static final String ALERT_AUDIO_ETWS_VIBRATE_EXTRA =+ "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_ETWS_VIBRATE";++ private static final String TTS_UTTERANCE_ID =+ "com.mediatek.cellbroadcastreceiver.UTTERANCE_ID";++ /** Pause duration between alert sound and alert speech. */+ private static final int PAUSE_DURATION_BEFORE_SPEAKING_MSEC = 1000;++ //volume change action+ private static final String VOLUME_CHANGED_ACTION = "android.media.VOLUME_CHANGED_ACTION";++ /** Vibration uses the same on/off pattern as the CMAS alert tone */+ private static final long[] sVibratePattern = { 0, 2000, 500, 1000, 500, 1000, 500,+ 2000, 500, 1000, 500, 1000};++ private static final int STATE_IDLE = 0;+ private static final int STATE_ALERTING = 1;+ private static final int STATE_PAUSING = 2;+ private static final int STATE_SPEAKING = 3;++ // Internal messages+ private static final int ALERT_SOUND_FINISHED = 1000;+ private static final int ALERT_PAUSE_FINISHED = 1001;+ /// M: add for repeat alert feature. @{+ private static final String PREF_NAME = "com.mediatek.cellbroadcastreceiver_preferences";+ private static final int REPEAT_ALERT_START = 1002;+ private static final int[] sRepeatTimes = { 60000, 60000 * 3, 60000 * 5 };+ private boolean mEnableRepeat = true;+ private int mDuration;+ private ArrayList mRepeatPattern;+ /// @}++ private int mState;++ private int mMessageId;+ private String mMessageBody;+ private String mMessageLanguage;+ private boolean mEnableVibrate;+ private boolean mEnableAudio;+ private boolean mRegisteredVolumeReceiver = false;++ private Vibrator mVibrator;+ private MediaPlayer mMediaPlayer;+ private AudioManager mAudioManager;+ private TelephonyManager mTelephonyManager;+ private int mInitialCallState;++ private final Handler mHandler = new Handler() {+ @Override+ public void handleMessage(Message msg) {+ switch (msg.what) {+ case ALERT_SOUND_FINISHED:+ /// @}+ stop(); // stop alert sound+ // if we can speak the message text+ if (mMessageBody != null) {+ mHandler.sendMessageDelayed(mHandler.obtainMessage(ALERT_PAUSE_FINISHED),+ PAUSE_DURATION_BEFORE_SPEAKING_MSEC);+ mState = STATE_PAUSING;+ } else if (!mEnableRepeat || mRepeatPattern.isEmpty()) { ///M:+ // add for repeat alert feature. do not stop service until end repeat.+ stopSelf();+ mState = STATE_IDLE;+ }+ break;++ case ALERT_PAUSE_FINISHED:+ if (mMessageBody != null) {+ mState = STATE_SPEAKING;+ } else if (!mEnableRepeat || mRepeatPattern.isEmpty()) { ///M:+ // add for repeat alert feature. do not stop service until end repeat.+ Log.w(TAG, "TTS engine not ready or language not supported");+ stopSelf();+ mState = STATE_IDLE;+ }++ break;++ ///M: add for repeat alert feature. @{+ case REPEAT_ALERT_START:+ schedulePlay();+ break;+ /// @}+ default:+ Log.e(TAG, "Handler received unknown message, what=" + msg.what);+ }+ }+ };++ private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {+ @Override+ public void onCallStateChanged(int state, String ignored) {+ // Stop the alert sound and speech if the call state changes.+ if (state != TelephonyManager.CALL_STATE_IDLE+ && state != mInitialCallState) {+ stopSelf();+ }+ }+ };++ private BroadcastReceiver volumeChangeReceiver = new BroadcastReceiver() {++ @Override+ public void onReceive(Context arg0, Intent arg1) {+ Log.d(TAG, "receive volume change broadcast, stop sound and vibration alert");+ //stop();+ }++ };+++ @Override+ public void onCreate() {+ mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);+ mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);+ // Listen for incoming calls to kill the alarm.+ mTelephonyManager =+ (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);+ mTelephonyManager.listen(+ mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);+ }++ @Override+ public void onDestroy() {+ //unregister volume register+ if (mRegisteredVolumeReceiver) {+ mRegisteredVolumeReceiver = false;+ unregisterReceiver(volumeChangeReceiver);+ }++ /// M: add for repeat alert feature. cancel the next schedule when destroy. @{+ if (mEnableRepeat) {+ cancelRepeat();+ }+ /// @}++ // stop audio, vibration and TTS+ stop();+ // Stop listening for incoming calls.+ mTelephonyManager.listen(mPhoneStateListener, 0);+ // release CPU wake lock acquired by CellBroadcastAlertService+ CellBroadcastAlertWakeLock.releaseCpuLock();+ }++ @Override+ public IBinder onBind(Intent intent) {+ return null;+ }++ @Override+ public int onStartCommand(Intent intent, int flags, int startId) {+ // No intent, tell the system not to restart us.+ if (intent == null) {+ stopSelf();+ return START_NOT_STICKY;+ }++ ///M: add for repeat alert feature.+ cancelRepeat();+ initAlertSequence();++ // This extra should always be provided by CellBroadcastAlertService,+ // but default to 10.5 seconds just to be safe (CMAS requirement).+ int duration = intent.getIntExtra(ALERT_AUDIO_DURATION_EXTRA, 10500);+ mMessageId = intent.getIntExtra(ALERT_AUDIO_MESSAGE_ID, 0);+ // Get text to speak (if enabled by user)+ mMessageBody = intent.getStringExtra(ALERT_AUDIO_MESSAGE_BODY);+ mMessageLanguage = intent.getStringExtra(ALERT_AUDIO_MESSAGE_LANGUAGE);++ mEnableVibrate = intent.getBooleanExtra(ALERT_AUDIO_VIBRATE_EXTRA, true);+ boolean forceVibrate = intent.getBooleanExtra(ALERT_AUDIO_ETWS_VIBRATE_EXTRA, false);++ mEnableAudio = true;+ Log.d(TAG, "mEnableAudio:" + mEnableAudio + ", mEnableVibrate:" + mEnableVibrate);+ ///M: add for repeat alert. @{+ mDuration = duration;+ schedulePlay();+ /// @}+ //register volume change receiver+ if (!mRegisteredVolumeReceiver) {+ IntentFilter intentFilter = new IntentFilter();+ intentFilter.addAction(VOLUME_CHANGED_ACTION);+ registerReceiver(volumeChangeReceiver, intentFilter);+ mRegisteredVolumeReceiver = true;+ }++ // Record the initial call state here so that the new alarm has the+ // newest state.+ mInitialCallState = mTelephonyManager.getCallState();++ return START_STICKY;+ }++ // Volume suggested by media team for in-call alarms.+ private static final float IN_CALL_VOLUME = 0.125f;++ /**+ * Start playing the alert sound, and send delayed message when it's time to stop.+ * @param duration the alert sound duration in milliseconds+ */+ private void play() {+ // stop() checks to see if we are already playing.+ stop();+++ // Start the vibration first.+ if (mEnableVibrate || forceAlert()) {+ mVibrator.vibrate(sVibratePattern, -1);+ }++ if (mEnableAudio || forceAlert()) {+ // future optimization: reuse media player object+ mMediaPlayer = new MediaPlayer();+ mMediaPlayer.setOnErrorListener(new OnErrorListener() {+ public boolean onError(MediaPlayer mp, int what, int extra) {+ Log.e(TAG, "Error occurred while playing audio.");+ mp.stop();+ mp.release();+ mMediaPlayer = null;+ return true;+ }+ });++ try {+ // Check if we are in a call. If we are, play the alert+ // sound at a low volume to not disrupt the call.+ if (mTelephonyManager.getCallState()+ != TelephonyManager.CALL_STATE_IDLE) {+ Log.v(TAG, "in call: reducing volume");+ mMediaPlayer.setVolume(IN_CALL_VOLUME, IN_CALL_VOLUME);+ }+ else {+ float volume = 1.0f;++ Log.d(TAG , "Alert volume: " + volume);+ mMediaPlayer.setVolume(volume, volume);+ }++ // start playing alert audio (unless master volume is vibrate only or silent).+ setDataSourceFromResource(getResources(), mMediaPlayer,+ R.raw.attention_signal);++ int streamType = AudioManager.STREAM_NOTIFICATION;+ streamType = AudioManager.STREAM_ALARM;+ mAudioManager.setStreamVolume(streamType,+ mAudioManager.getStreamMaxVolume(streamType),+ AudioManager.FLAG_PLAY_SOUND);+ mAudioManager.requestAudioFocus(null, streamType,+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);+ startAlarm(mMediaPlayer);+ } catch (IllegalStateException ex) {+ Log.e(TAG, "Failed to play alert sound", ex);+ } catch (IOException e) {+ Log.e(TAG, "IOException");+ }+ }++ // stop alert after the specified duration+ mHandler.sendMessageDelayed(mHandler.obtainMessage(ALERT_SOUND_FINISHED), mDuration);++ mState = STATE_ALERTING;+ }++ // Do the common stuff when starting the alarm.+ private void startAlarm(MediaPlayer player)+ throws java.io.IOException, IllegalArgumentException, IllegalStateException {+ int streamType = AudioManager.STREAM_NOTIFICATION;+ streamType = AudioManager.STREAM_ALARM;+ player.setAudioStreamType(streamType);+ player.setLooping(true);+ player.prepare();+ player.start();+ }++ private static void setDataSourceFromResource(Resources resources,+ MediaPlayer player, int res) throws java.io.IOException {+ AssetFileDescriptor afd = resources.openRawResourceFd(res);+ if (afd != null) {+ player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),+ afd.getLength());+ afd.close();+ }+ }++ /**+ * Stops alert audio and speech.+ */+ public void stop() {++ mHandler.removeMessages(ALERT_SOUND_FINISHED);+ mHandler.removeMessages(ALERT_PAUSE_FINISHED);++ if (mState == STATE_ALERTING) {+ // Stop audio playing+ if (mMediaPlayer != null) {+ try {+ mMediaPlayer.stop();+ mMediaPlayer.release();+ } catch (IllegalStateException e) {+ // catch "Unable to retrieve AudioTrack pointer for stop()" exception+ Log.e(TAG, "exception trying to stop media player");+ }+ mMediaPlayer = null;+ }++ // Stop vibrator+ mVibrator.cancel();+ }+ mAudioManager.abandonAudioFocus(null);+ mState = STATE_IDLE;+ }++ private static void log(String msg) {+ Log.d(TAG, msg);+ }++ /**+ * M: add for repeat alert feature.+ */+ private void initAlertSequence() {+ mEnableRepeat = true;+ mRepeatPattern = new ArrayList();+ if (mEnableRepeat) {+ for (int i : sRepeatTimes) {+ mRepeatPattern.add(i);+ }+ }+ }++ /**+ * M: add for repeat alert feature.+ * @param duration the duration of one alert time.+ */+ private void schedulePlay() {+ //if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT) {+ play();+ //}+ if (mEnableRepeat) {+ mHandler.sendMessageDelayed(mHandler.obtainMessage(REPEAT_ALERT_START), mDuration + 500);+ }+ }++ /**+ * M: add for repeat alert feature.+ */+ public void cancelRepeat() {+ mHandler.removeMessages(REPEAT_ALERT_START);+ }++ /**+ * M: force alarm (except first alert) in silent mode.+ * @return+ */+ private boolean forceAlert() {+ boolean isSilentMode = mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT;+ boolean isRepeating = mEnableRepeat && (mRepeatPattern.size() < sRepeatTimes.length);+ return isSilentMode && isRepeating;+ }++}diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CellBroadcastAlertWakeLock.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CellBroadcastAlertWakeLock.javanew file mode 100644index 0000000..ac296db--- /dev/null+++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CellBroadcastAlertWakeLock.java@@ -0,0 +1,52 @@+/*+ * Copyright (C) 2012 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.cb.cbmsg;++import android.content.Context;+import android.os.PowerManager;+import android.util.Log;++/**+ * Hold a wakelock that can be acquired in the CellBroadcastAlertService and+ * released in the CellBroadcastAlertFullScreen Activity.+ */+class CellBroadcastAlertWakeLock {+ private static final String TAG = "CellBroadcastAlertWakeLock";++ private static PowerManager.WakeLock sCpuWakeLock;++ private CellBroadcastAlertWakeLock() {}++ static void acquireScreenCpuWakeLock(Context context) {+ if (sCpuWakeLock != null) {+ return;+ }+ PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);+ sCpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK+ | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG);+ sCpuWakeLock.acquire();+ Log.d(TAG, "acquired screen + CPU wake lock");+ }++ static void releaseCpuLock() {+ if (sCpuWakeLock != null) {+ sCpuWakeLock.release();+ sCpuWakeLock = null;+ Log.d(TAG, "released screen + CPU wake lock");+ }+ }+}diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbsettings/CellBroadcastSettings.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbsettings/CellBroadcastSettings.javaindex c6a152b..a15c329 100755--- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbsettings/CellBroadcastSettings.java+++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbsettings/CellBroadcastSettings.java@@ -218,6 +218,13 @@ public class CellBroadcastSettings extends TimeConsumingPreferenceActivity } else { channel.setSummary(R.string.disable); }+ if (title.equals("919(919)")+ || title.equals("50(50)")+ || title.equals("4370(4370)")+ || title.equals("921(921)")) {+ channel.setEnabled(false);+ channel.setSelectable(false);+ } channel.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference arg0) {@@ -560,6 +567,7 @@ public class CellBroadcastSettings extends TimeConsumingPreferenceActivity } String jStr = String.valueOf(j); CellBroadcastChannel channel = getChannelObjectFromKey(jStr);+/* Vanzo:tanglei on: Thu, 08 Sep 2016 10:34:04 +0800 if (channel != null) { channel.setChannelState(state); } else {@@ -573,6 +581,8 @@ public class CellBroadcastSettings extends TimeConsumingPreferenceActivity mChannelArray.add(newChannel); mChannelMap.put(jStr, newChannel); }+ */+// End of } } }
diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/mtk_string.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/mtk_string.xmlindex 38f7aa5..dcf14db 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/mtk_string.xml+++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/mtk_string.xml@@ -43,7 +43,7 @@ Para rec al usuario de alertas no leídos interm Todas alertas act Todos mens de amen inm - Alertas de Em + Alerta de Emergencia Volumen de sonido de alerta Aj de vol del sonido -\ No newline at end of file+diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/strings.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/strings.xmlindex a2460bb..e8fc8ab 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/strings.xml+++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/strings.xml@@ -11,10 +11,10 @@ limitations under the License. --> - Alertas de Em + Alerta de Emergencia Config del Conm de Alertas "Aceptar" - "No hay alertas activas en tu zona. Puedes modificar la configuración de las alertas en el menú Configuración." + "No hay alertas activas en tu zona." "Configuración" Elim todas alertas "Opciones de mensaje" @@ -30,11 +30,11 @@ "Alerta de terremotos y tsunamis" "Mensaje de prueba de ETWS" "Advertencia de emergencia" - "Alerta presidencial" + "Alerta de Emergencia" "Alerta de emergencia: extrema" "Alerta de emergencia: grave" Aler ÁMBAR - "Prueba mensual de alerta de emergencia" + "Alerta de Emergencia" "Alerta de emergencia (ejercicio)" "Alerta de emergencia (operador)" "Alerta de emergencia" diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-zh-rCN/strings.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-zh-rCN/strings.xmlindex a97c363..d66f27b 100644--- a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-zh-rCN/strings.xml+++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-zh-rCN/strings.xml@@ -19,7 +19,7 @@ "紧急警报" "警报开关设置" "确定" - "您所在的区域没有任何活动的警报。您可以使用“设置”菜单选项更改警报设置。" + "您所在的区域没有任何活动的警报。" "设置" "删除所有警报" "短信选项" diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/values/strings.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/values/strings.xmlindex 46e2d51..85599b7 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/res/values/strings.xml+++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/values/strings.xml@@ -27,7 +27,7 @@ OK - There are no active alerts in your area. You can change the Alert settings using the Settings menu option. + There are no active alerts in your area. Settings diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xmlindex c86e3d2..2230494 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml+++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml@@ -4,11 +4,11 @@ - + - - + + diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences.xmlindex 340830a..e509d73 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences.xml+++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences.xml@@ -57,7 +57,7 @@ android:summary="@string/enable_alert_vibrate_summary" android:title="@string/enable_alert_vibrate_title" /> - diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xmlindex 18a8dce..a8dee3e 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml+++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml@@ -67,7 +67,7 @@ diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASAlertFullWindow.java b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASAlertFullWindow.javaindex 3fa2394..f3c8601 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASAlertFullWindow.java+++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASAlertFullWindow.java@@ -417,6 +417,11 @@ public class CMASAlertFullWindow { Log.i(TAG, "updateAlertIcon::this is normal message"); titleTextView.setText(titleId); }+ if (message.getServiceCategory() == 4370) {+ titleTextView.setText("Alerta de Emergencia");+ } else if (message.getServiceCategory() == 4380) {+ titleTextView.setText("Alerta de Emergencia");+ } TextView textViewMsgBody = (TextView) view.findViewById(R.id.message); /* if(getShowMsgId()) {diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASPresentationService.java b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASPresentationService.javaindex 1eb829d..f701f0e 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASPresentationService.java+++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASPresentationService.java@@ -255,7 +255,7 @@ public class CMASPresentationService extends Service { private boolean getEnbaleAlertSpeech() { return PreferenceManager.getDefaultSharedPreferences(this).getBoolean(- CheckBoxAndSettingsPreference.KEY_ENABLE_ALERT_SPEECH, true);+ CheckBoxAndSettingsPreference.KEY_ENABLE_ALERT_SPEECH, false); } }diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertAudio.java b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertAudio.javaindex 429634f..5695da0 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertAudio.java+++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertAudio.java@@ -171,11 +171,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI ///M: add for repeat alert feature. @{ case REPEAT_ALERT_START:- if (DBG) log("REPEAT_ALERT_START");- if (!mRepeatPattern.isEmpty()) {- mRepeatPattern.remove(0);- play();- }+ schedulePlay(); break; /// @} default:@@ -200,7 +196,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI @Override public void onReceive(Context arg0, Intent arg1) { Log.d(TAG, "receive volume change broadcast, stop sound and vibration alert");- stop();+ //stop(); } };@@ -274,7 +270,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI } /// M: add for repeat alert feature. cancel the next schedule when destroy. @{- if (mEnableRepeat && (mRepeatPattern != null) && !mRepeatPattern.isEmpty()) {+ if (mEnableRepeat) { cancelRepeat(); } /// @}@@ -324,37 +320,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI mEnableVibrate = intent.getBooleanExtra(ALERT_AUDIO_VIBRATE_EXTRA, true); boolean forceVibrate = intent.getBooleanExtra(ALERT_AUDIO_ETWS_VIBRATE_EXTRA, false); - switch (mAudioManager.getRingerMode()) {- case AudioManager.RINGER_MODE_SILENT:- if (DBG) log("Ringer mode: silent");- mEnableVibrate = forceVibrate;- mEnableAudio = false;- break;-- case AudioManager.RINGER_MODE_VIBRATE:- if (DBG) log("Ringer mode: vibrate");- mEnableAudio = false;- break;-- case AudioManager.RINGER_MODE_NORMAL:- default:- if (DBG) log("Ringer mode: normal");- /// M: add to distinguish general and outdoor mode. Do not vibrate- // in general mode. @{- if (!mAudioManager.shouldVibrate(AudioManager.VIBRATE_TYPE_NOTIFICATION)) {- mEnableVibrate = forceVibrate;- }- /// @}- mEnableAudio = true;- break;- }-- ICmasMainSettingsExt optSetAlertAudioVibration = (ICmasMainSettingsExt)- CellBroadcastPluginManager.getCellBroadcastPluginObject(- CellBroadcastPluginManager.CELLBROADCAST_PLUGIN_TYPE_MAIN_SETTINGS);-- mEnableAudio = optSetAlertAudioVibration.setAlertVolumeVibrate(mMessageId, mEnableAudio);- mEnableVibrate = optSetAlertAudioVibration.setAlertVolumeVibrate(mMessageId, mEnableVibrate);+ mEnableAudio = true; Log.d(TAG, "mEnableAudio:" + mEnableAudio + ", mEnableVibrate:" + mEnableVibrate); if (mMessageBody != null && mEnableAudio) {@@ -432,15 +398,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI else { float volume = 1.0f; - ICmasMainSettingsExt optGetAlertVolume = (ICmasMainSettingsExt)- CellBroadcastPluginManager.getCellBroadcastPluginObject(- CellBroadcastPluginManager.CELLBROADCAST_PLUGIN_TYPE_MAIN_SETTINGS);-- if (optGetAlertVolume != null) {- volume = optGetAlertVolume.getAlertVolume(mMessageId);- }- Log.d(TAG , "Alert volume: " + volume);- mMediaPlayer.setVolume(volume, volume);+ mMediaPlayer.setVolume(volume, volume); } // start playing alert audio (unless master volume is vibrate only or silent).@@ -455,9 +413,10 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI } int streamType = AudioManager.STREAM_NOTIFICATION;- if (forceAlert() || forcePresidentAlert()) {- streamType = AudioManager.STREAM_ALARM;- }+ streamType = AudioManager.STREAM_ALARM;+ mAudioManager.setStreamVolume(streamType,+ mAudioManager.getStreamMaxVolume(streamType),+ AudioManager.FLAG_PLAY_SOUND); mAudioManager.requestAudioFocus(null, streamType, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); startAlarm(mMediaPlayer);@@ -484,9 +443,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI private void startAlarm(MediaPlayer player) throws java.io.IOException, IllegalArgumentException, IllegalStateException { int streamType = AudioManager.STREAM_NOTIFICATION;- if (forceAlert() || forcePresidentAlert()) {- streamType = AudioManager.STREAM_ALARM;- }+ streamType = AudioManager.STREAM_ALARM; player.setAudioStreamType(streamType); player.setLooping(true); player.prepare();@@ -566,10 +523,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI play(); //} if (mEnableRepeat) {- for (int i = 0; i < mRepeatPattern.size(); i++) {- mHandler.sendMessageDelayed(mHandler.obtainMessage(REPEAT_ALERT_START),- mRepeatPattern.get(i));- }+ mHandler.sendMessageDelayed(mHandler.obtainMessage(REPEAT_ALERT_START), mDuration + 500); } } diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertService.java b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertService.javaindex 56a6fce..1763563 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertService.java+++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertService.java@@ -217,9 +217,6 @@ public class CellBroadcastAlertService extends Service { return true; case ICmasDuplicateMessageExt.NEW_CMAS_PROCESS: // NewCMASProcess // handle update msg- if (!handleUpdatedCB(provider, cbm)) {- return true;- } Log.d(TAG, "before insertNewBroadcast, sn " + cbm.getSerialNumber()); //if (provider.insertNewBroadcast(cbm)) { long rowId = provider.addNewBroadcast(cbm);@@ -421,7 +418,7 @@ public class CellBroadcastAlertService extends Service { SharedPreferences rmtPrefs = this.getSharedPreferences( PREF_NAME, MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE | MODE_MULTI_PROCESS);- boolean resOfRmt = rmtPrefs.getBoolean(CellBroadcastConfigService.ENABLE_CMAS_RMT_SUPPORT, false);+ boolean resOfRmt = rmtPrefs.getBoolean(CellBroadcastConfigService.ENABLE_CMAS_RMT_SUPPORT, true); Log.d(TAG, "in isMessageEnabledByUser , CMAS setting " + resOfRmt); return resOfRmt; }@@ -431,7 +428,7 @@ public class CellBroadcastAlertService extends Service { SharedPreferences exePrefs = this.getSharedPreferences( PREF_NAME, MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE | MODE_MULTI_PROCESS);- boolean resOfexe = exePrefs.getBoolean(CellBroadcastConfigService.ENABLE_CMAS_EXERCISE_SUPPORT, false);+ boolean resOfexe = exePrefs.getBoolean(CellBroadcastConfigService.ENABLE_CMAS_EXERCISE_SUPPORT, true); Log.d(TAG, "in isMessageEnabledByUser , EXER setting " + resOfexe); return resOfexe; default:@@ -482,7 +479,7 @@ public class CellBroadcastAlertService extends Service { String messageBody = message.getMessageBody(); - if (prefs.getBoolean(CellBroadcastSettings.KEY_ENABLE_ALERT_SPEECH, true)) {+ if (prefs.getBoolean(CellBroadcastSettings.KEY_ENABLE_ALERT_SPEECH, false)) { audioIntent.putExtra(CellBroadcastAlertAudio.ALERT_AUDIO_MESSAGE_BODY, messageBody); String language = message.getLanguageCode();diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.javaindex 8937670..4678655 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java+++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java@@ -242,10 +242,10 @@ public class CellBroadcastConfigService extends IntentService { if (intent.getBooleanExtra("isBootCompleted", false)) { SharedPreferences.Editor editor = prefs.edit(); if (!prefs.contains(ENABLE_CMAS_RMT_SUPPORT)) {- editor.putBoolean(ENABLE_CMAS_RMT_SUPPORT, false);+ editor.putBoolean(ENABLE_CMAS_RMT_SUPPORT, true); } if (!prefs.contains(ENABLE_CMAS_EXERCISE_SUPPORT)) {- editor.putBoolean(ENABLE_CMAS_EXERCISE_SUPPORT, false);+ editor.putBoolean(ENABLE_CMAS_EXERCISE_SUPPORT, true); } editor.commit(); editor.clear();@@ -255,10 +255,11 @@ public class CellBroadcastConfigService extends IntentService { boolean enableCB = false; if (!prefs.contains(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST)) { enableCB = true;+ prefs.edit().putBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true).commit(); Log.d(TAG, "do not contain the enable_cell_broadcast "); } else { enableCB = prefs.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST,- false);+ true); Log.d(TAG, "contain the enable_cell_broadcast,enableCB = " + enableCB); } Log.d(TAG, "SMS_STATE_CHANGED_ACTION enableCB " + enableCB);diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastListActivity.java b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastListActivity.javaindex 26658cd..bf1b4e7 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastListActivity.java+++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastListActivity.java@@ -188,8 +188,6 @@ public class CellBroadcastListActivity extends ListActivity { public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_DELETE_ALL, 0, R.string.menu_delete_all).setIcon( android.R.drawable.ic_menu_delete);- menu.add(0, MENU_PREFERENCES, 0, R.string.menu_preferences).setIcon(- android.R.drawable.ic_menu_preferences); return super.onCreateOptionsMenu(menu); } @@ -200,11 +198,6 @@ public class CellBroadcastListActivity extends ListActivity { confirmDeleteThread(true, null); break; - case MENU_PREFERENCES:- Intent intent = new Intent(this, CellBroadcastMainSettings.class);- startActivity(intent);- break;- default: return true; }diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.java b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.javaindex 63785e4..d2b3c9c 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.java+++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.java@@ -98,7 +98,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { // ignore incoming messages if CMAS option is off. SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean enableCB = prefs.getBoolean(- CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, false);+ CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true); if (!enableCB) { if (CellBroadcastReceiverApp.isCellAreaInTw()) {diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastSubSettings.java b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastSubSettings.javaindex 7ab34bc..0efe6ca 100755--- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastSubSettings.java+++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastSubSettings.java@@ -41,7 +41,7 @@ public class CellBroadcastSubSettings extends PreferenceActivity implements mEnableSevereCheckBox = (CheckBoxAndSettingsPreference) findPreference(CheckBoxAndSettingsPreference.KEY_ENABLE_CMAS_SEVERE_ALERTS); setAlertPreferenceEnable(!mEnableAllCheckBox.isChecked()); SharedPreferences pre = getSharedPreferences("com.mediatek.cellbroadcastreceiver_preferences", 0);- boolean imminentAlertChecked = pre.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CMAS_IMMINENT_ALERTS, false);+ boolean imminentAlertChecked = pre.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CMAS_IMMINENT_ALERTS, true); if (!imminentAlertChecked) { mEnableAllCheckBox.setEnabled(false); mEnableSevereCheckBox.setEnabled(false);diff --git a/mediatek/proprietary/packages/apps/CmasEM/src/com/mediatek/engineermodecmas/CmasSettings.java b/mediatek/proprietary/packages/apps/CmasEM/src/com/mediatek/engineermodecmas/CmasSettings.javaindex d49ddb7..aef1aa1 100644--- a/mediatek/proprietary/packages/apps/CmasEM/src/com/mediatek/engineermodecmas/CmasSettings.java+++ b/mediatek/proprietary/packages/apps/CmasEM/src/com/mediatek/engineermodecmas/CmasSettings.java@@ -95,8 +95,8 @@ public class CmasSettings extends PreferenceActivity implements SharedPreferences prefs = mCmasContext.getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE); - boolean rmtValue = prefs.getBoolean(CMAS_RMT_KEY, false);- boolean exerciseValue = prefs.getBoolean(CMAS_EXERCISE_KEY, false);+ boolean rmtValue = prefs.getBoolean(CMAS_RMT_KEY, true);+ boolean exerciseValue = prefs.getBoolean(CMAS_EXERCISE_KEY, true); mCheckBoxRmt.setChecked(rmtValue); mCheckBoxExercise.setChecked(exerciseValue);
二十三: 彩信附件最大600K,超过了需要弹出警告
(vendor/)
diff --git a/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml b/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xmlindex da3f0dc..70c4b87 100755--- a/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml+++ b/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml@@ -44,11 +44,13 @@ - 100K
- 200K
- 300K
+ - 600K
- 100
- 200
- 300
+ - 600
- High
diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/multicardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/multicardpreferences.xmlindex 4c7a6ca..782b6b8 100755--- a/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/multicardpreferences.xml+++ b/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/multicardpreferences.xml@@ -130,7 +130,7 @@ android:title="@string/pref_title_mms_size_limit" android:dialogTitle="@string/pref_title_mms_size_limit" android:summary="@string/pref_summary_mms_size_limit"- android:defaultValue="300"+ android:defaultValue="600" android:entries="@array/pref_mms_size_limit_choices" android:entryValues="@array/pref_mms_size_limit_values"/> true - 307200 + 614400 - 480 + 960 - 640 + 1280 diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/mmsmulticardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/mmsmulticardpreferences.xmlindex a584201..c4d8149 100755--- a/mediatek/proprietary/packages/apps/Mms/res/xml/mmsmulticardpreferences.xml+++ b/mediatek/proprietary/packages/apps/Mms/res/xml/mmsmulticardpreferences.xml@@ -43,7 +43,7 @@ android:title="@string/pref_title_mms_size_limit" android:dialogTitle="@string/pref_title_mms_size_limit" android:summary="@string/pref_summary_mms_size_limit"- android:defaultValue="300" android:entries="@array/pref_mms_size_limit_choices"+ android:defaultValue="600" android:entries="@array/pref_mms_size_limit_choices" android:entryValues="@array/pref_mms_size_limit_values" />
更多相关文章
- Android Studio(六):Android Studio添加注释模板
- android Android build.gradle 配置注释
- C语言注释详解
- c语言的注释定界符是什么
- c语言注释符号是什么?
- c语言中的注释符号是什么
- c语言多行注释符号是什么
- c语言程序怎么注释?
- 程序中的注释部分是否参加编译?