Android 系统 (131)---ODM 开发用户常见需求文档(五)

ODM 开发用户常见需求文档(五)

一:图库中的照片全屏显

(packages/apps/Gallery2/)

第一种:

[java]  view plain  copy
  1. diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java  
  2. index 0592bf4..e2667d3 100755  
  3. --- a/src/com/android/gallery3d/app/PhotoPage.java  
  4. +++ b/src/com/android/gallery3d/app/PhotoPage.java  
  5. @@ -39,6 +39,9 @@ import android.content.pm.ResolveInfo;  
  6.  import android.content.res.Configuration;  
  7.  import android.graphics.Rect;  
  8.  import android.net.Uri;  
  9. +import android.view.WindowManager;  
  10. +import android.view.Window;  
  11. +import android.graphics.Color;  
  12.  import android.nfc.NfcAdapter;  
  13.  import android.nfc.NfcAdapter.CreateBeamUrisCallback;  
  14.  import android.nfc.NfcEvent;  
  15. @@ -1237,6 +1240,9 @@ public abstract class PhotoPage extends ActivityState implements  
  16.          if (mShowBars) return;  
  17.          mShowBars = true;  
  18.          mOrientationManager.unlockOrientation();  
  19. +        Window win = mActivity.getWindow();  
  20. +        win.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  21. +        win.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  22.          mActionBar.show();  
  23.          mActivity.getGLRoot().setLightsOutMode(false);  
  24.          /// M: [FEATURE.MODIFY] automatic layer visibility change @{  
  25. @@ -1260,7 +1266,21 @@ public abstract class PhotoPage extends ActivityState implements  
  26.          if (!mShowBars) return;  
  27.          mShowBars = false;  
  28.          mActionBar.hide();  
  29. -        mActivity.getGLRoot().setLightsOutMode(true);  
  30. +        Window win = mActivity.getWindow();  
  31. +        win.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  32. +        int flags = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
  33. +   
  34. +                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
  35. +   
  36. +                    | View.SYSTEM_UI_FLAG_FULLSCREEN  
  37. +   
  38. +                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY  
  39. +   
  40. +                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);  
  41. +   
  42. +        win.getDecorView().setSystemUiVisibility(flags);  
  43. +        win.setNavigationBarColor(Color.TRANSPARENT);  
  44. +        //mActivity.getGLRoot().setLightsOutMode(true);  
  45.          mHandler.removeMessages(MSG_HIDE_BARS);  
  46.          refreshBottomControlsWhenReady();  
  47.      }  
  48. @@ -2168,6 +2188,9 @@ public abstract class PhotoPage extends ActivityState implements  
  49.              mSensorManager.registerListener(this, proxmitySensor, SensorManager.SENSOR_DELAY_NORMAL);  
  50.          }  
  51.  // End of Vanzo:hanshengpeng  
  52. +        Window win = mActivity.getWindow();  
  53. +        win.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  54. +        win.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  55.          if (mMuteVideo != null) {  
  56.              mMuteVideo.setMuteHasPaused(false);  
  57.              mMuteVideo.needPlayMuteVideo();  
  58. @@ -2252,6 +2275,9 @@ public abstract class PhotoPage extends ActivityState implements  
  59.              mScreenNailSet = null;  
  60.              mScreenNailItem = null;  
  61.          }  
  62. +        Window win = mActivity.getWindow();  
  63. +        win.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  64. +        win.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  65.          mActivity.getGLRoot().setOrientationSource(null);  
  66.          if (mBottomControls != null) mBottomControls.cleanup();  
  67.    

第二种:

[java]  view plain  copy
  1. diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java  
  2. index 0df2170..9b522cd 100755  
  3. --- a/src/com/android/gallery3d/app/PhotoPage.java  
  4. +++ b/src/com/android/gallery3d/app/PhotoPage.java  
  5. @@ -116,6 +116,9 @@ import com.mediatek.galleryframework.base.BottomControlLayer;  
  6.  import com.mediatek.galleryframework.base.PhotoPageBottomViewControls;  
  7.  import com.mediatek.galleryframework.base.LayerManager;  
  8.  import com.mediatek.galleryframework.base.MediaData;  
  9. +import android.view.WindowManager;  
  10. +import android.view.Window;  
  11. +import android.graphics.Color;  
  12.  /* Vanzo:hanshengpeng on: Sun, 24 Jan 2016 14:44:43 +0800 
  13.   */  
  14.  import android.os.SystemProperties;  
  15. @@ -1183,6 +1186,8 @@ public abstract class PhotoPage extends ActivityState implements  
  16.          if (mShowBars) return;  
  17.          mShowBars = true;  
  18.          mOrientationManager.unlockOrientation();  
  19. +        Window win = mActivity.getWindow();  
  20. +        win.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  21.          mActionBar.show();  
  22.          mActivity.getGLRoot().setLightsOutMode(false);  
  23.          /// M: [FEATURE.MODIFY] automatic layer visibility change @{  
  24. @@ -1206,6 +1211,9 @@ public abstract class PhotoPage extends ActivityState implements  
  25.          if (!mShowBars) return;  
  26.          mShowBars = false;  
  27.          mActionBar.hide();  
  28. +        Window win = mActivity.getWindow();  
  29. +        win.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  30. +        win.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  31.          mActivity.getGLRoot().setLightsOutMode(true);  
  32.          mHandler.removeMessages(MSG_HIDE_BARS);  
  33.          refreshBottomControlsWhenReady();  
  34. @@ -2165,6 +2173,7 @@ public abstract class PhotoPage extends ActivityState implements  
  35.              mScreenNailSet = null;  
  36.              mScreenNailItem = null;  
  37.          }  
  38. +  
  39.          mActivity.getGLRoot().setOrientationSource(null);  
  40.          if (mBottomControls != null) mBottomControls.cleanup();  
  41.    


二:默认壁纸不自动生成到壁纸列表中

(packages/apps/Launcher3/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java

[java]  view plain  copy
  1. diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java  
  2. index e299302..5ac7b2b 100755  
  3. --- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java  
  4. +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java  
  5. @@ -1059,11 +1059,15 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {  
  6.    
  7.          if (partner == null || !partner.hideDefaultWallpaper()) {  
  8.              // Add an entry for the default wallpaper (stored in system resources)  
  9. +/* 
  10. + * TODO: replace this line with your comment 
  11.              WallpaperTileInfo defaultWallpaperInfo = Utilities.ATLEAST_KITKAT 
  12.                      ? getDefaultWallpaper() : getPreKKDefaultWallpaperInfo(); 
  13.              if (defaultWallpaperInfo != null) { 
  14.                  bundled.add(0, defaultWallpaperInfo); 
  15.              } 
  16. + */  
  17. +// End of Vanzo:yujianpeng  
  18.          }  
  19.          return bundled;  
  20.      }  


三:wifi默认关闭

(packages/apps/Launcher3/)

[java]  view plain  copy
  1. diff --git a/AndroidManifest.xml b/AndroidManifest.xml  
  2. index df22272..8929289 100755  
  3. --- a/AndroidManifest.xml  
  4. +++ b/AndroidManifest.xml  
  5. @@ -70,6 +70,8 @@  
  6.      <uses-permission android:name="com.android.launcher3.permission.RECEIVE_FIRST_LOAD_BROADCAST" />  
  7.      <!-- M: hide apps activity requires this permission to get package size. -->  
  8.      <uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>  
  9. +    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  10. +    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  11.      <!-- M: ALSP02141215, android security patch. -->  
  12.      <uses-permission android:name="android.permission.GET_TASKS" />   
  13.      <!-- M: ALSP02241595, add MANAGE_USERS permission. -->  
  14. diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java  
  15. index 9366659..7c30d9d 100644  
  16. --- a/src/com/android/launcher3/Launcher.java  
  17. +++ b/src/com/android/launcher3/Launcher.java  
  18. @@ -146,6 +146,9 @@ import android.hardware.SensorEvent;  
  19.  import android.hardware.SensorEventListener;  
  20.  import android.hardware.SensorManager;  
  21.  import com.android.featureoption.FeatureOption;  
  22. +import android.net.NetworkInfo;  
  23. +import android.net.wifi.WifiManager;  
  24. +import android.net.ConnectivityManager;  
  25.  // End of Vanzo:hanshengpeng  
  26.    
  27.  /**  
  28. @@ -5163,6 +5166,18 @@ public class Launcher extends Activity  
  29.          editor.apply();  
  30.      }  
  31.    
  32. +    private void closeWifiGps() {  
  33. +        // Intent sh = new Intent("com.android.settings.location.CLOSE");  
  34. +        //sendBroadcast(sh);  
  35. +        final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);  
  36. +        ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);  
  37. +        NetworkInfo netWork = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI);  
  38. +        if (wifiManager == null || netWork.isConnected()) {  
  39. +            return;  
  40. +        }  
  41. +        wifiManager.setWifiEnabled(false);  
  42. +    }  
  43. +  
  44.      @Thunk void showFirstRunClings() {  
  45.          // The two first run cling paths are mutually exclusive, if the launcher is preinstalled  
  46.          // on the device, then we always show the first run cling experience (or if there is no  
  47. @@ -5175,6 +5190,7 @@ public class Launcher extends Activity  
  48.              } else {  
  49.                  launcherClings.showLongPressCling(true);  
  50.              }  
  51. +            closeWifiGps();  
  52.          }  
  53.      }  
  54.    


四:手机插入SD卡时,默认存储器为SD卡

(packages/apps/Settings/)

[java]  view plain  copy
  1. diff --git a/AndroidManifest.xml b/AndroidManifest.xml  
  2. index c8b252a..bed2c41 100644  
  3. --- a/AndroidManifest.xml  
  4. +++ b/AndroidManifest.xml  
  5. @@ -3173,6 +3173,12 @@ add fp control  
  6.          </intent-filter>  
  7.      </receiver>  
  8.  <!-- End of Vanzo:fenghaitao -->  
  9. -  
  10. +    <receiver android:name=".UsbBroadCastReceiver">  
  11. +        <intent-filter android:priority="1000">  
  12. +            <action android:name="android.intent.action.MEDIA_MOUNTED"/>  
  13. +            <action android:name="android.intent.action.MEDIA_EJECT" />  
  14. +            <data android:scheme="file"/>  
  15. +        </intent-filter>  
  16. +    </receiver>  
  17.      </application>  
  18.  </manifest>  
  19. diff --git a/src/com/android/settings/UsbBroadCastReceiver.java b/src/com/android/settings/UsbBroadCastReceiver.java  
  20. new file mode 100644  
  21. index 0000000..b578167  
  22. --- /dev/null  
  23. +++ b/src/com/android/settings/UsbBroadCastReceiver.java  
  24. @@ -0,0 +1,26 @@  
  25. +package com.android.settings;  
  26. +  
  27. +import android.content.BroadcastReceiver;  
  28. +import android.content.Context;  
  29. +import android.content.Intent;  
  30. +import android.provider.Settings;  
  31. +import android.util.Log;  
  32. +import android.os.storage.IMountService;  
  33. +import com.mediatek.storage.StorageManagerEx;  
  34. +  
  35. +public class UsbBroadCastReceiver extends BroadcastReceiver {  
  36. +    String TAG = "UsbBroadCastReceiver";  
  37. +    String ExternalStoragePath = StorageManagerEx.getExternalStoragePath();  
  38. +  
  39. +  
  40. +    public void onReceive(Context context, Intent intent) {  
  41. +  
  42. +        Log.i(TAG,"receive change request");  
  43. +        if (Intent.ACTION_MEDIA_MOUNTED.equals(intent.getAction())) {  
  44. +            StorageManagerEx.setDefaultPath(ExternalStoragePath);  
  45. +        }  
  46. +    }  
  47. +  
  48. +}  


五:GPS默认节电模式

(packages/apps/Settings/src/com/android/settings/location/LocationSettings.java)

[java]  view plain  copy
  1. diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java  
  2. index 3b71e79..3324c4d 100644  
  3. --- a/src/com/android/settings/location/LocationSettings.java  
  4. +++ b/src/com/android/settings/location/LocationSettings.java  
  5. @@ -385,7 +385,7 @@ public class LocationSettings extends LocationSettingsBase  
  6.      @Override  
  7.      public void onSwitchChanged(Switch switchView, boolean isChecked) {  
  8.          if (isChecked) {  
  9. -            setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);  
  10. +            setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_BATTERY_SAVING);  
  11.          } else {  
  12.              setLocationMode(android.provider.Settings.Secure.LOCATION_MODE_OFF);  
  13.          }  


六:更改在线壁纸名称

(packages/apps/Settings/src/com/android/settings/WallpaperTypeSettings.java)

[java]  view plain  copy
  1. diff --git a/src/com/android/settings/WallpaperTypeSettings.java b/src/com/android/settings/WallpaperTypeSettings.java  
  2. index 9046bfb..138167c 100644  
  3. --- a/src/com/android/settings/WallpaperTypeSettings.java  
  4. +++ b/src/com/android/settings/WallpaperTypeSettings.java  
  5. @@ -31,6 +31,8 @@ import com.android.settings.search.SearchIndexableRaw;  
  6.    
  7.  import java.util.ArrayList;  
  8.  import java.util.List;  
  9. +import java.util.Locale;  
  10.    
  11.  public class WallpaperTypeSettings extends SettingsPreferenceFragment implements Indexable {  
  12.    
  13. @@ -70,7 +72,14 @@ public class WallpaperTypeSettings extends SettingsPreferenceFragment implements  
  14.              pref.setIntent(prefIntent);  
  15.              CharSequence label = info.loadLabel(pm);  
  16.              if (label == null) label = info.activityInfo.packageName;  
  17. -            pref.setTitle(label);  
  18. +            String locale = Locale.getDefault().getLanguage();  
  19. +            if("es".equals(locale )&&label.equals("Online Wallpaper")){   
  20. +                pref.setTitle("Fondo de pantalla en línea");  
  21. +            }else{  
  22. +                pref.setTitle(label);  
  23. +            }  
  24.              parent.addPreference(pref);  
  25.          }  
  26.      }  


七:相机默认防闪做到60

(vendor/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml)

[java]  view plain  copy
  1. diff --git a/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml b/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml  
  2. index 607f6a0..a01f714 100755  
  3. --- a/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml  
  4. +++ b/mediatek/proprietary/packages/apps/Camera/res/values/arrays.xml  
  5. @@ -684,6 +684,7 @@ add 16M 16_9  
  6.      </string-array>  
  7.      <!-- Default antibanding setting.-->  
  8.      <string-array name="pref_camera_antibanding_default_array" translatable="false">  
  9. +        <item>60hz</item>  
  10.          <item>auto</item>  
  11.          <item>off</item>  
  12.          <item>50hz</item>  


八:文件管理改变可用空间到4.16G和总容量8G

(vendor/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java)

[java]  view plain  copy
  1. 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.java  
  2. index 47b8813..ccceac6 100644  
  3. --- a/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java  
  4. +++ b/mediatek/proprietary/packages/apps/FileManager/src/com/mediatek/filemanager/FileInfoAdapter.java  
  5. @@ -47,7 +47,7 @@ import android.view.ViewGroup;  
  6.  import android.widget.BaseAdapter;  
  7.  import android.widget.ImageView;  
  8.  import android.widget.TextView;  
  9.  import com.mediatek.filemanager.service.FileManagerService;  
  10.  import com.mediatek.filemanager.utils.FileUtils;  
  11.  import com.mediatek.filemanager.utils.LogUtils;  
  12. @@ -319,8 +319,10 @@ public class FileInfoAdapter extends BaseAdapter {  
  13.          if (fileInfo.isDirectory()) {  
  14.              if (MountPointManager.getInstance().isMountPoint(fileInfo.getFileAbsolutePath())) {  
  15.                  StringBuilder sb = new StringBuilder();  
  16. -                String freeSpaceString = FileUtils.sizeToString(MountPointManager.getInstance().getMountPointFreeSpace(fileInfo.getFileAbsolutePath()));  
  17. -                String totalSpaces = FileUtils.sizeToString(MountPointManager.getInstance().getMountPointTotalSpace(fileInfo.getFileAbsolutePath()));  
  18. +                //String freeSpaceString = FileUtils.sizeToString(MountPointManager.getInstance().getMountPointFreeSpace(fileInfo.getFileAbsolutePath()));  
  19. +                String freeSpaceString = "4.16 GB";  
  20. +                //String totalSpaces = FileUtils.sizeToString(MountPointManager.getInstance().getMountPointTotalSpace(fileInfo.getFileAbsolutePath()));  
  21. +                String totalSpaces = "8.00 GB";  
  22.                  LogUtils.d(TAG, "setSizeText, file name = " + fileInfo.getFileName()  
  23.                          + ",file path = " + fileInfo.getFileAbsolutePath());  
  24.                  LogUtils.d(TAG, "setSizeText, freeSpace = " + MountPointManager.getInstance().getMountPointFreeSpace(fileInfo.getFileAbsolutePath()) + ",totalSpace = "  


九:添加内存信息

(vendor/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DeviceInfoSettings.java

[java]  view plain  copy
  1. 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.java  
  2. index 4a1252a..ffdfd0d 100755  
  3. --- a/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DeviceInfoSettings.java  
  4. +++ b/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DeviceInfoSettings.java  
  5. @@ -69,6 +69,8 @@ public class DeviceInfoSettings extends Activity {  
  6.                      addRow(name,value);  
  7.                      line = reader.readLine();  
  8.                  }  
  9. +                   addRow("RAM:","KINGSTON 1GB");  
  10. +                   addRow("ROM:","KINGSTON 8GB");  
  11.              }  
  12.    
  13.              reader.close();  


十:默认浏览器--------本地浏览器设为默认浏览,打开链接(消费提示音等)不会弹出选择浏览器提示框,默认搜索引擎----Google

(frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java)

[java]  view plain  copy
  1. diff --git a/base/services/core/java/com/android/server/pm/PackageManagerService.java b/base/services/core/java/com/android/server/pm/PackageManagerService.java  
  2. index bf86b54..f640a8b 100644  
  3. --- a/base/services/core/java/com/android/server/pm/PackageManagerService.java  
  4. +++ b/base/services/core/java/com/android/server/pm/PackageManagerService.java  
  5. @@ -2632,11 +2632,55 @@ public class PackageManagerService extends IPackageManager.Stub {  
  6.          // are all flushed.  Not really needed, but keeps things nice and  
  7.          // tidy.  
  8.          Runtime.getRuntime().gc();  
  9. -  
  10. +        setDefaultBrowser();  
  11.          // Expose private service for system components to use.  
  12.          LocalServices.addService(PackageManagerInternal.classnew PackageManagerInternalImpl());  
  13.      }  
  14.    
  15. +    private final void setDefaultBrowser(){  
  16. +        Log.d("debug_default","setDefaultBrowser is called.");  
  17. +        if(!isFirstBoot()) {  
  18. +            Log.d("debug_default","not first boot, return");  
  19. +            return;  
  20. +        }      
  21. +        String str1 = "android.intent.category.DEFAULT";  
  22. +        String str2 = "android.intent.category.BROWSABLE";  
  23. +        String str3 = "android.intent.action.VIEW";  
  24. +        //intent filter  
  25. +        IntentFilter filter = new IntentFilter(str3);  
  26. +        filter.addCategory(str1);  
  27. +        filter.addCategory(str2);  
  28. +        filter.addDataScheme("http");  
  29. +        //intent  
  30. +        Intent intent = new Intent(str3);  
  31. +        intent.addCategory(str2);  
  32. +        intent.addCategory(str1);  
  33. +        Uri uri = Uri.parse("http://");  
  34. +        intent.setDataAndType(uri, null);  
  35. +        ComponentName component = new ComponentName("com.android.browser","com.android.browser.BrowserActivity");  
  36. +        List<ResolveInfo> resolveInfoList = queryIntentActivities(intent,intent.getType(),PackageManager.GET_INTENT_FILTERS, 0);  
  37. +        int size = resolveInfoList.size();  
  38. +        ComponentName[] arrayOfComponentName = new ComponentName[size];  
  39. +        boolean no_UC = true;  
  40. +        for (int i = 0; i < size; i++)  
  41. +        {  
  42. +            ActivityInfo activityInfo = resolveInfoList.get(i).activityInfo;  
  43. +            String packageName = activityInfo.packageName;  
  44. +            String className = activityInfo.name;  
  45. +            if (packageName.equals("com.android.browser")) no_UC = false;  
  46. +            ComponentName componentName = new ComponentName(packageName, className);  
  47. +            arrayOfComponentName[i] = componentName;  
  48. +        }  
  49. +        if (no_UC){  
  50. +            Log.d("debug_default","no uc package");  
  51. +            return;  
  52. +        }else{  
  53. +            Log.d("debug_default","uc package is in, set it as Preferred.");  
  54. +        }  
  55. +        addPreferredActivity2(filter,IntentFilter.MATCH_CATEGORY_SCHEME, arrayOfComponentName,component);  
  56. +        Log.d("debug_default","add UC to PreferredActivity");  
  57. +    }  
  58. +  
  59.      @Override  
  60.      public boolean isFirstBoot() {  
  61.          return !mRestoredSettings;  
  62. @@ -15747,7 +15791,7 @@ public class PackageManagerService extends IPackageManager.Stub {  
  63.          synchronized (mPackages) {  
  64.              filter.dump(new LogPrinter(Log.INFO, TAG), "  ");  
  65.              mSettings.editPreferredActivitiesLPw(0).addFilter(new PreferredActivity(filter, match, set, activity, true));  
  66. -            scheduleWriteSettingsLocked();  
  67. +            mSettings.writePackageRestrictionsLPr(0);  
  68.          }  
  69.      }  
  70.  // End of  


十一:浏览器正下载时,点击取消或者中止下载,需要弹出警告:Are you sure to delete it?/¿estás seguro para eliminarlo?

(frameworks/)

[java]  view plain  copy
  1. diff --git a/base/packages/DocumentsUI/res/values-en-rUS/strings.xml b/base/packages/DocumentsUI/res/values-en-rUS/strings.xml  
  2. index 1170162..e4c52af 100755  
  3. --- a/base/packages/DocumentsUI/res/values-en-rUS/strings.xml  
  4. +++ b/base/packages/DocumentsUI/res/values-en-rUS/strings.xml  
  5. @@ -103,4 +103,8 @@  
  6.      <string name="menu_advanced_hide" product="default">Hide SD card</string>  
  7.      <string name="menu_file_size_show">Show file size</string>  
  8.      <string name="menu_file_size_hide">Hide file size</string>  
  9. -</resources>  
  10. \ No newline at end of file  
  11. +    <string name="custom_tips">"Tips"</string>  
  12. +    <string name="message">"Are you sure to delete it?"</string>  
  13. +    <string name="confirm">"yes"</string>  
  14. +    <string name="cancel">"no"</string>  
  15. +</resources>  
  16. diff --git a/base/packages/DocumentsUI/res/values-es-rUS/strings.xml b/base/packages/DocumentsUI/res/values-es-rUS/strings.xml  
  17. index 12a62ea..932d5bb 100644  
  18. --- a/base/packages/DocumentsUI/res/values-es-rUS/strings.xml  
  19. +++ b/base/packages/DocumentsUI/res/values-es-rUS/strings.xml  
  20. @@ -16,6 +16,10 @@  
  21.    
  22.  <resources xmlns:android="http://schemas.android.com/apk/res/android"  
  23.      xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">  
  24. +    <string name="custom_tips">"Consejos"</string>  
  25. +    <string name="message">"¿estás seguro para eliminarlo?"</string>  
  26. +    <string name="confirm">"si"</string>  
  27. +    <string name="cancel">"no"</string>  
  28.      <string name="app_label" msgid="2783841764617238354">"Documentos"</string>  
  29.      <string name="title_open" msgid="4353228937663917801">"Abrir desde"</string>  
  30.      <string name="title_save" msgid="2433679664882857999">"Guardar en"</string>  
  31. diff --git a/base/packages/DocumentsUI/res/values-zh-rCN/strings.xml b/base/packages/DocumentsUI/res/values-zh-rCN/strings.xml  
  32. index 643921c..8b6bff2 100644  
  33. --- a/base/packages/DocumentsUI/res/values-zh-rCN/strings.xml  
  34. +++ b/base/packages/DocumentsUI/res/values-zh-rCN/strings.xml  
  35. @@ -16,6 +16,10 @@  
  36.    
  37.  <resources xmlns:android="http://schemas.android.com/apk/res/android"  
  38.      xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">  
  39. +    <string name="custom_tips">"提示"</string>  
  40. +    <string name="message">"您确定要删除吗?"</string>  
  41. +    <string name="confirm">"删除"</string>  
  42. +    <string name="cancel">"取消"</string>  
  43.      <string name="app_label" msgid="2783841764617238354">"文档"</string>  
  44.      <string name="title_open" msgid="4353228937663917801">"打开文件"</string>  
  45.      <string name="title_save" msgid="2433679664882857999">"保存文件"</string>  
  46. diff --git a/base/packages/DocumentsUI/res/values/strings.xml b/base/packages/DocumentsUI/res/values/strings.xml  
  47. index 23c61fa..fcfa7ab 100755  
  48. --- a/base/packages/DocumentsUI/res/values/strings.xml  
  49. +++ b/base/packages/DocumentsUI/res/values/strings.xml  
  50. @@ -137,4 +137,8 @@  
  51.      <string name="retry">Retry</string>  
  52.      <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->  
  53.      <string name="copy_failure_alert_content">These files weren\'t copied: <xliff:g id="list">%1$s</xliff:g></string>  
  54. +    <string name="custom_tips">Tips</string>  
  55. +    <string name="message">Are you sure to delete it?</string>  
  56. +    <string name="confirm">yes</string>  
  57. +    <string name="cancel">no</string>  
  58.  </resources>  
  59. diff --git a/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java  
  60. index 9ae6e29..540f459 100755  
  61. --- a/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java  
  62. +++ b/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java  
  63. @@ -36,6 +36,7 @@ import static com.android.documentsui.model.DocumentInfo.getCursorString;  
  64.  import android.app.Activity;  
  65.  import android.app.ActivityManager;  
  66.  import android.app.ActivityManager.RunningTaskInfo;  
  67. +import android.app.AlertDialog;  
  68.  import android.app.Fragment;  
  69.  import android.app.FragmentManager;  
  70.  import android.app.FragmentTransaction;  
  71. @@ -45,6 +46,7 @@ import android.content.ContentProviderClient;  
  72.  import android.content.ContentResolver;  
  73.  import android.content.ContentValues;  
  74.  import android.content.Context;  
  75. +import android.content.DialogInterface;  
  76.  import android.content.Intent;  
  77.  import android.content.Loader;  
  78.  import android.content.res.Resources;  
  79. @@ -107,6 +109,7 @@ import com.mediatek.common.documentsui.IDocumentsUIExtension;  
  80.  /// M: Add to support drm  
  81.  import com.mediatek.drm.OmaDrmStore;  
  82.  import com.mediatek.drm.OmaDrmUtils;  
  83. +import android.widget.Toast;  
  84.    
  85.  /**  
  86.   * Display the documents inside a single directory.  
  87. @@ -633,10 +636,12 @@ public class DirectoryFragment extends Fragment {  
  88.              return true;  
  89.          }  
  90.    
  91. +        private ArrayList<DocumentInfo> docs;  
  92.          @Override  
  93.          public boolean onActionItemClicked(ActionMode mode, MenuItem item) {  
  94.              final SparseBooleanArray checked = mCurrentView.getCheckedItemPositions();  
  95. -            final ArrayList<DocumentInfo> docs = Lists.newArrayList();  
  96. +            //final ArrayList<DocumentInfo> docs = Lists.newArrayList();  
  97. +            docs = Lists.newArrayList();  
  98.              final int size = checked.size();  
  99.              final int id = item.getItemId();  
  100.              for (int i = 0; i < size; i++) {  
  101. @@ -685,10 +690,11 @@ public class DirectoryFragment extends Fragment {  
  102.    
  103.              } else if (id == R.id.menu_delete) {  
  104.                  /// M: remove state @{  
  105. -                final State state = getDisplayState(DirectoryFragment.this);  
  106. -                state.dirState.remove(mStateKey);  
  107. +             //  final State state = getDisplayState(DirectoryFragment.this);  
  108. +              //  state.dirState.remove(mStateKey);  
  109.                  /// @}  
  110. -                onDeleteDocuments(docs);  
  111. +                deleteDialog();  
  112. +            //  onDeleteDocuments(docs);  
  113.                  mode.finish();  
  114.                  return true;  
  115.    
  116. @@ -709,7 +715,24 @@ public class DirectoryFragment extends Fragment {  
  117.                  return false;  
  118.              }  
  119.          }  
  120. -  
  121. +        private void deleteDialog(){  
  122. +           new AlertDialog.Builder(getActivity())  
  123. +           .setTitle(R.string.custom_tips)  
  124. +           .setMessage(R.string.message)  
  125. +           .setPositiveButton(R.string.confirm,  
  126. +                   new DialogInterface.OnClickListener() {  
  127. +                         
  128. +                       @Override  
  129. +                       public void onClick(DialogInterface arg0, int arg1) {  
  130. +                           // TODO Auto-generated method stub  
  131. +                           final State state = getDisplayState(DirectoryFragment.this);  
  132. +                           state.dirState.remove(mStateKey);  
  133. +                           onDeleteDocuments(docs);  
  134. +                       }  
  135. +                   })  
  136. +           .setNegativeButton(R.string.cancel,null).show();  
  137. +                             
  138. +        }  
  139.          @Override  
  140.          public void onDestroyActionMode(ActionMode mode) {  
  141.              /// M: restore action mode @{  


十二:改关机时间长短

(frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java)

[java]  view plain  copy
  1. diff --git a/base/services/core/java/com/android/server/power/ShutdownThread.java b/base/services/core/java/com/android/server/power/ShutdownThread.java  
  2. index 710bcc2..9f8be2e 100644  
  3. --- a/base/services/core/java/com/android/server/power/ShutdownThread.java  
  4. +++ b/base/services/core/java/com/android/server/power/ShutdownThread.java  
  5. @@ -143,7 +143,7 @@ public final class ShutdownThread extends Thread {  
  6.      private static int mShutdownFlow;  
  7.    
  8.      // Shutdown Animation  
  9. -    private static final int MIN_SHUTDOWN_ANIMATION_PLAY_TIME = 5 * 1000;  
  10. +    private static final int MIN_SHUTDOWN_ANIMATION_PLAY_TIME = 10 * 1000;  
  11.      // CU/CMCC operator require 3-5s  
  12.      private static long beginAnimationTime = 0;  
  13.      private static long endAnimationTime = 0;  
  14. @@ -159,7 +159,7 @@ public final class ShutdownThread extends Thread {  
  15.       * 2: bypass radio off  
  16.       * 3: bypass both  
  17.       * */  
  18. -  
  19. +    private static int screen_turn_off_time = 10 * 1000;  
  20.      private static final boolean mSpew = true;   //debug enable  
  21.    
  22.      private static IBootAnimExt mIBootAnim = null// for boot animation  
  23. @@ -526,7 +526,7 @@ public final class ShutdownThread extends Thread {  
  24.    
  25.          beginAnimationTime = 0;  
  26.          boolean mShutOffAnimation = configShutdownAnimation(context);  
  27. -        int screenTurnOffTime = getScreenTurnOffTime(context);  
  28. +        int screenTurnOffTime = screen_turn_off_time;  
  29.          synchronized (mEnableAnimatingSync) {  
  30.              if (mEnableAnimating) {  
  31.                  if (mShutOffAnimation) {  


十三:wifi热点上限数

(frameworks/base/core/java/android/provider/Settings.java)

[java]  view plain  copy
  1. diff --git a/base/core/java/android/provider/Settings.java b/base/core/java/android/provider/Settings.java  
  2. index 4169d8c..78c167d 100644  
  3. --- a/base/core/java/android/provider/Settings.java  
  4. +++ b/base/core/java/android/provider/Settings.java  
  5. @@ -3528,7 +3528,7 @@ public final class Settings {  
  6.           * Wifi hotspot default client number  
  7.           * @hide  
  8.           */  
  9. -        public static final int WIFI_HOTSPOT_DEFAULT_CLIENT_NUM = 6;  
  10. +        public static final int WIFI_HOTSPOT_DEFAULT_CLIENT_NUM = 5;  
  11.    
  12.          /**  
  13.           * The max client num of hotspot  


十四:默认打开CB(小区广播)消息

(modems/lwtg/custom/service/nvram/nvram_cust_pack.c)

[java]  view plain  copy
  1. diff --git a/lwtg/custom/service/nvram/nvram_cust_pack.c b/lwtg/custom/service/nvram/nvram_cust_pack.c  
  2. index fd1f347..9d9ad3a 100644  
  3. --- a/lwtg/custom/service/nvram/nvram_cust_pack.c  
  4. +++ b/lwtg/custom/service/nvram/nvram_cust_pack.c  
  5. @@ -1016,7 +1016,7 @@ kal_uint8 const COMMON_NVRAM_EF_SMSAL_COMMON_PARAM_DEFAULT[] =  
  6.  #ifdef __UE_SIMULATOR__  
  7.      0x010x01,         /* CB setting - ON */  
  8.  #else  
  9. -    0x000x01,         /* CB setting */  
  10. +    0x010x01,         /* CB setting */  
  11.  #endif  
  12.      0xFF,               /* AT default profile ID.0xFF:invalid profile ID and SMSAL auto select profile id */  
  13.      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

[java]  view plain  copy
  1. diff --git a/lwtg/custom/service/nvram/nvram_data_items.c b/lwtg/custom/service/nvram/nvram_data_items.c  
  2. index c8ba4d6..bcb406c 100644  
  3. --- a/lwtg/custom/service/nvram/nvram_data_items.c  
  4. +++ b/lwtg/custom/service/nvram/nvram_data_items.c  
  5. @@ -3393,6 +3393,7 @@ typedef enum  
  6.   * Define necessary default values for each logical data item.  
  7.   */  
  8.    
  9. +static kal_uint8 const NVRAM_EF_PS_CONFORMANCE_TESTMODE_REVISE_DEFAULT[] ={ 0x000x000x400x00 };  
  10.  kal_uint8 const NVRAM_EF_ZERO_DEFAULT[] = { 0x00 };  
  11.  kal_uint8 const NVRAM_EF_FF_DEFAULT[] = { 0xFF };  
  12.    
  13. @@ -10685,7 +10686,7 @@ ltable_entry_struct logical_data_item_table_core[] =  
  14.  #ifdef __UE_SIMULATOR__  
  15.          NVRAM_NORMAL(NVRAM_EF_PS_CONFORMANCE_TESTMODE_DEFAULT),  
  16.  #else  
  17. -        NVRAM_NORMAL(NVRAM_EF_ZERO_DEFAULT),  
  18. +       NVRAM_NORMAL(NVRAM_EF_PS_CONFORMANCE_TESTMODE_REVISE_DEFAULT),  
  19.  #endif  
  20.          NVRAM_CATEGORY_USER,  
  21.          NVRAM_ATTR_AVERAGE,  
  22. diff --git a/lwtg/interface/service/nvram/nvram_editor_data_item.h b/lwtg/interface/service/nvram/nvram_editor_data_item.h  
  23. index 6bca59b..f69ff68 100644  
  24. --- a/lwtg/interface/service/nvram/nvram_editor_data_item.h  
  25. +++ b/lwtg/interface/service/nvram/nvram_editor_data_item.h  
  26. @@ -2776,7 +2776,7 @@  
  27.  #endif  
  28.    
  29.    
  30. -#define NVRAM_EF_PS_CONFORMANCE_TESTMODE_LID_VERNO           "000"  
  31. +#define NVRAM_EF_PS_CONFORMANCE_TESTMODE_LID_VERNO           "001"  
  32.  #define NVRAM_EF_MOBILE_BROADBAND_PROVISION_CONTEXT_LID_VERNO "000"   //__MOBILE_BROADBAND_PROVISION_CONTEXT__  
  33.  #define NVRAM_EF_MSQ_LIST_LID_VERNO                          "001"    //__MEDIATEK_SMART_QOS__ (MSQ)  
  34.    

十六: 通讯录新建联系人默认保存在sim卡(点击新建,弹出两个选项sim,phone,默认选sim)

packages/apps/Contacts/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java

[java]  view plain  copy
  1. diff --git a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java  
  2. index 00d1fbc..6e4c882 100644  
  3. --- a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java  
  4. +++ b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java  
  5. @@ -135,21 +135,19 @@ public class ContactEditorAccountsChangedActivity extends Activity {  
  6.          if (numAccounts >= 2) {  
  7.              // When the user has 2+ writable accounts, show a list of accounts so the user can pick  
  8.              // which account to create a contact in.  
  9. -            setContentView(R.layout.contact_editor_accounts_changed_activity_with_picker);  
  10. -  
  11. -            final TextView textView = (TextView) findViewById(R.id.text);  
  12.              /// M:  
  13. -            textView.setText(getString(R.string.store_contact_to));  
  14. -  
  15. -            final Button button = (Button) findViewById(R.id.add_account_button);  
  16. -            button.setText(getString(R.string.add_new_account));  
  17. -            button.setOnClickListener(mAddAccountClickListener);  
  18. -  
  19. -            final ListView accountListView = (ListView) findViewById(R.id.account_list);  
  20.              mAccountListAdapter = new AccountsListAdapter(this,  
  21.                      AccountListFilter.ACCOUNTS_CONTACT_WRITABLE);  
  22. -            accountListView.setAdapter(mAccountListAdapter);  
  23. -            accountListView.setOnItemClickListener(mAccountListItemClickListener);  
  24. +            String accountType = mAccountListAdapter.getItem(0).type.toString();  
  25. +            if (AccountTypeUtils.isAccountTypeIccCard(accountType)) {  
  26. +                AccountWithDataSet ads = mAccountListAdapter.getItem(0);  
  27. +  
  28. +                mSubId = SubInfoUtils.getInvalidSubId();  
  29. +                if (ads instanceof AccountWithDataSetEx) {  
  30. +                    mSubId = ((AccountWithDataSetEx) ads).getSubId();  
  31. +                }  
  32. +                checkPHBStateAndSaveAccount(0);  
  33. +            }  
  34.          } else if (numAccounts == 1) {  
  35.              // If the user has 1 writable account we will just show the user a message with 2  
  36.              // possible action buttons.  


十七:第一次开机是如果无sim卡加提示

(packages/apps/Launcher3/)

[java]  view plain  copy
  1. diff --git a/AndroidManifest.xml b/AndroidManifest.xml  
  2. index 73f01e2..0b12bea 100644  
  3. --- a/AndroidManifest.xml  
  4. +++ b/AndroidManifest.xml  
  5. @@ -64,6 +64,7 @@  
  6.      <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  
  7.      <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  
  8.      <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />  
  9. +    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />  
  10.      <uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS" />  
  11.      <uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS" />  
  12.      <uses-permission android:name="com.android.launcher3.permission.RECEIVE_LAUNCH_BROADCASTS" />  
  13. diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java  
  14. index 8a0ce6a..b959c93 100644  
  15. --- a/src/com/android/launcher3/Launcher.java  
  16. +++ b/src/com/android/launcher3/Launcher.java  
  17. @@ -33,7 +33,9 @@ import android.annotation.TargetApi;  
  18.  import android.app.Activity;  
  19.  import android.app.ActivityManager;  
  20.  import android.app.ActivityOptions;  
  21. +import android.app.Dialog;  
  22.  import android.app.AlertDialog;  
  23. +import android.app.AlertDialog.Builder;  
  24.  import android.app.SearchManager;  
  25.  import android.app.Service;  
  26.  import android.appwidget.AppWidgetHostView;  
  27. @@ -102,6 +104,7 @@ import android.view.animation.OvershootInterpolator;  
  28.  import android.view.inputmethod.InputMethodManager;  
  29.  import android.widget.Advanceable;  
  30.  import android.widget.FrameLayout;  
  31. +import android.telephony.TelephonyManager;  
  32.  import android.widget.ImageView;  
  33.  import android.widget.TextView;  
  34.  import android.widget.Toast;  
  35. @@ -498,6 +501,7 @@ public class Launcher extends Activity  
  36.      ///M.  
  37.    
  38.      private String mCurrentQsbPkgName;  
  39. +    private TelephonyManager telMgr;  
[java]  view plain  copy
  1. +    private int first_boot = 0;  
  2.    
  3.      @Override  
  4.      protected void onCreate(Bundle savedInstanceState) {  
  5. @@ -522,6 +526,17 @@ public class Launcher extends Activity  
  6.    
  7.          super.onCreate(savedInstanceState);  
  8. +<span style="white-space:pre"> </span> if(<span style="font-family:Verdana, sans-serif;">first_boot </span><span style="font-family:Verdana, sans-serif;">== </span><span style="font-family:Verdana, sans-serif;">0</span><span style="font-family:Verdana, sans-serif;">){</span><span style="font-family:Verdana, sans-serif;">  
  9. </span>+            telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);  
  10. +            Log.i("rmy""telMgr()="+telMgr.getSimState());  
  11. +            if (telMgr.getSimState() == telMgr.SIM_STATE_READY) {  
  12. +            <span style="white-space:pre"> </span>Log.i("rmy""良好");  
  13. +            } else if (telMgr.getSimState() == telMgr.SIM_STATE_ABSENT) {  
  14. +               Log.i("rmy""无SIM卡");  
  15. +               checkSimDialog(this);  
  16. +            } else {  
  17. +               Log.i("rmy""SIM卡被锁定或未知的状态");  
  18. +            }  
  19. +<span style="white-space:pre"> </span> }  
  20.          LauncherAppState.setApplicationContext(getApplicationContext());  
  21.          LauncherAppState app = LauncherAppState.getInstance();  
  22.    
  23. @@ -649,6 +664,21 @@ public class Launcher extends Activity  
  24.          }  
  25.      }  
  26.    
  27. +    private void checkSimDialog(final Context context) {  
  28. +        AlertDialog.Builder simDialog = new AlertDialog.Builder(context);  
  29. +        simDialog.setTitle("Preguntar");  
  30. +        simDialog.setMessage("SIM invalida");  
  31. +        simDialog.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {  
  32. +            @Override  
  33. +            public void onClick(DialogInterface dialog, int which) {  
  34. +                dialog.dismiss();  
  35. +            }  
  36. +        });  
  37. +        AlertDialog dialog = simDialog.create();  
  38. +        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);  
  39. +        dialog.show();  
  40. +    }  
  41. +  
  42.      @Override  
  43.      public void onSettingsChanged(String settings, boolean value) {  
  44.          if (Utilities.ALLOW_ROTATION_PREFERENCE_KEY.equals(settings)) {  


[java]  view plain  copy
  1.   

十八: wifi要内置两个名字分别为MOVISTAR WIFI and VIVO-WIFI 的无线网。安全类型为802.1XEAP.密码为空。 类似用户进入wifi界面,手机创建一个wifi后的效果。如附件图片


(packages/apps/Settings/)

[java]  view plain  copy
  1. diff --git a/src/com/android/settings/net/DataUsageMeteredSettings.java b/src/com/android/settings/net/DataUsageMeteredSettings.java  
  2. index ec1dd38..56ab5e8 100644  
  3. --- a/src/com/android/settings/net/DataUsageMeteredSettings.java  
  4. +++ b/src/com/android/settings/net/DataUsageMeteredSettings.java  
  5. @@ -118,6 +118,11 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment impleme  
  6.          final NetworkTemplate template = NetworkTemplate.buildTemplateWifi(networkId);  
  7.          final MeteredPreference pref = new MeteredPreference(context, template);  
  8.          pref.setTitle(removeDoubleQuotes(networkId));  
  9. +          if (networkId.contains("MOVISTAR WIFI")) {  
  10. +              pref.setTitle("MOVISTAR WIFI");  
  11. +          } else if (networkId.contains("VIVO WIFI")) {  
  12. +              pref.setTitle("VIVO WIFI");  
  13. +          }  
  14.          return pref;  
  15.      }  
  16.    
  17. @@ -207,6 +212,11 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment impleme  
  18.    
  19.                              data = new SearchIndexableRaw(context);  
  20.                              data.title = removeDoubleQuotes(networkId);  
  21. +                            if (networkId.contains("MOVISTAR WIFI")) {  
  22. +                                 data.title = "MOVISTAR WIFI";  
  23. +                            } else if (networkId.contains("VIVO WIFI")) {  
  24. +                                 data.title = "VIVO WIFI";  
  25. +                            }  
  26.                              data.screenTitle = res.getString(R.string.data_usage_menu_metered);  
  27.                              result.add(data);  
  28.                          }  
  29. diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java  
  30. index 8a241be..e91613c 100644  
  31. --- a/src/com/android/settings/wifi/WifiConfigController.java  
  32. +++ b/src/com/android/settings/wifi/WifiConfigController.java  
  33. @@ -328,6 +328,10 @@ public class WifiConfigController implements TextWatcher,  
  34.                  }  
  35.                  if (mAccessPoint.isSaved() || mAccessPoint.isActive()) {  
  36.                      mConfigUi.setForgetButton(res.getString(R.string.wifi_forget));  
  37. +                    if (!mAccessPoint.toString().contains("MOVISTAR WIFI")  
  38. +                            && !mAccessPoint.toString().contains("VIVO WIFI")) {  
  39. +                         mConfigUi.setForgetButton(res.getString(R.string.wifi_forget));  
  40. +                     }  
  41.                  }  
  42.              }  
  43.          }  
  44. diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java  
  45. index 03ab864..c0eb2d1 100644  
  46. --- a/src/com/android/settings/wifi/WifiSettings.java  
  47. +++ b/src/com/android/settings/wifi/WifiSettings.java  
  48. @@ -758,7 +758,8 @@ public class WifiSettings extends RestrictedSettingsFragment  
  49.                  int index = 0;  
  50.                  for (AccessPoint accessPoint : accessPoints) {  
  51.                      // Ignore access points that are out of range.  
  52. -                    if (accessPoint.getLevel() != -1) {  
  53. +                    if (accessPoint.getLevel() != -1 || accessPoint.toString().contains("MOVISTAR WIFI")  
  54. +                            || accessPoint.toString().contains("VIVO WIFI")) {  
  55.                          hasAvailableAccessPoints = true;  
  56.                          if (accessPoint.getTag() != null) {  
  57.                              final Preference pref = (Preference) accessPoint.getTag();  
(vendor/mediatek/proprietary/hardware/connectivity/wlan/config/mtk-wpa_supplicant-overlay.conf)

[java]  view plain  copy
  1. 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.conf  
  2. index f6b7121..4d5d52b 100644  
  3. --- a/mediatek/proprietary/hardware/connectivity/wlan/config/mtk-wpa_supplicant-overlay.conf  
  4. +++ b/mediatek/proprietary/hardware/connectivity/wlan/config/mtk-wpa_supplicant-overlay.conf  
  5. @@ -1,3 +1,20 @@  
  6.  p2p_no_group_iface=1  
  7.  driver_param=use_p2p_group_interface=1  
  8.  wowlan_triggers=disconnect  
  9. +overlay_loaded=1  
  10. +network={  
  11. +    ssid="MOVISTAR WIFI"  
  12. +        key_mgmt=WPA-EAP IEEE8021X  
  13. +        eap=SIM  
  14. +        disabled=1  
  15. +        priority=1  
  16. +        read_only=1  
  17. +   }  
  18. +network={  
  19. +    ssid="VIVO WIFI"  
  20. +        key_mgmt=WPA-EAP IEEE8021X  
  21. +        eap=SIM  
  22. +        disabled=1  
  23. +        priority=1  
  24. +        read_only=1  
  25. +   }  


十九: 主菜单--》设置--》语言和输入法--》Android keyboard 右边的设置图标---》show correction suggestions--》改成默认选中always hide

(packages/inputmethods/)

[java]  view plain  copy
  1. diff --git a/LatinIME/java/res/xml/prefs_screen_correction.xml b/LatinIME/java/res/xml/prefs_screen_correction.xml  
  2. index a943dc1..1653b0f 100644  
  3. --- a/LatinIME/java/res/xml/prefs_screen_correction.xml  
  4. +++ b/LatinIME/java/res/xml/prefs_screen_correction.xml  
  5. @@ -51,7 +51,7 @@  
  6.          android:key="show_suggestions"  
  7.          android:summary="@string/prefs_show_suggestions_summary"  
  8.          android:title="@string/prefs_show_suggestions"  
  9. -        android:defaultValue="true"  
  10. +        android:defaultValue="false"  
  11.          android:persistent="true" />  
  12.      <CheckBoxPreference  
  13.          android:key="pref_key_use_personalized_dicts"  
  14. diff --git a/LatinIME/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/LatinIME/java/src/com/android/inputmethod/latin/settings/SettingsValues.java  
  15. index 1833cfb..748e424 100755  
  16. --- a/LatinIME/java/src/com/android/inputmethod/latin/settings/SettingsValues.java  
  17. +++ b/LatinIME/java/src/com/android/inputmethod/latin/settings/SettingsValues.java  
  18. @@ -312,7 +312,7 @@ public class SettingsValues {  
  19.                      .putBoolean(Settings.PREF_SHOW_SUGGESTIONS, !alwaysHide)  
  20.                      .apply();  
  21.          }  
  22. -        return prefs.getBoolean(Settings.PREF_SHOW_SUGGESTIONS, true);  
  23. +        return prefs.getBoolean(Settings.PREF_SHOW_SUGGESTIONS, false);  
  24.      }  
  25.    
  26.      private static boolean readBigramPredictionEnabled(final SharedPreferences prefs,  


二十:浏览器下载的文件, 默认保存在”Downloads“名字的文件夹

(vendor/mediatek/proprietary/packages/apps/Browser/ext/src/com/mediatek/browser/ext/DefaultBrowserSettingExt.java

[java]  view plain  copy
  1. 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.java  
  2. index 475bbb8..02dc88c 100755  
  3. --- a/mediatek/proprietary/packages/apps/Browser/ext/src/com/mediatek/browser/ext/DefaultBrowserSettingExt.java  
  4. +++ b/mediatek/proprietary/packages/apps/Browser/ext/src/com/mediatek/browser/ext/DefaultBrowserSettingExt.java  
  5. @@ -21,7 +21,7 @@ public class DefaultBrowserSettingExt implements IBrowserSettingExt {  
  6.      private static final String TAG = "DefaultBrowserSettingsExt";  
  7.    
  8.      private static final String DEFAULT_DOWNLOAD_DIRECTORY = "/storage/sdcard0/MyFavorite";  
  9. -    private static final String DEFAULT_MY_FAVORITE_FOLDER = "/MyFavorite";  
  10. +    private static final String DEFAULT_MY_FAVORITE_FOLDER = "/Download";  
  11.    
  12.      private static final String PREF_SEARCH_ENGINE = "search_engine";  
  13.      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

[java]  view plain  copy
  1. 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.java  
  2. index 5079bc1..561329f 100755  
  3. --- a/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/BrowserSettings.java  
  4. +++ b/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/BrowserSettings.java  
  5. @@ -363,7 +363,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,  
  6.          sBrowserSettingExt = Extensions.getSettingPlugin(mContext);  
  7.          sBrowserSettingExt.setStandardFontFamily(settings, mPrefs);  
  8.    
  9. -        String ua = mCustomUserAgents.get(settings);  
  10. +        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";  
  11.          if (ua != null) {  
  12.              settings.setUserAgentString(ua);  
  13.          } else {  

二十二: 添加通道( 50,919,921,4370),通道号和名字都设为 50,919,921,4370。(通道-channel(英文)-canal(西班牙语)),默认都是enable的,并且默认可以接受所有语言的。

(packages/providers/)

[java]  view plain  copy
  1. diff --git a/TelephonyProvider/src/com/android/providers/telephony/CbProvider.java b/TelephonyProvider/src/com/android/providers/telephony/CbProvider.java  
  2. index 3d7ac48..c32acf5 100755  
  3. --- a/TelephonyProvider/src/com/android/providers/telephony/CbProvider.java  
  4. +++ b/TelephonyProvider/src/com/android/providers/telephony/CbProvider.java  
  5. @@ -134,8 +134,10 @@ public class CbProvider extends ContentProvider {  
  6.              // break;  
  7.          case URL_CHANNEL:  
  8.              qb.setTables(CbDatabaseHelper.CHANNEL_TABLE);  
  9. +            if (selection == null || !selection.contains("sub_id")) {  
  10.              qb.appendWhere("(sub_id = " + SmsProvider.getSubIdFromUri(url)  
  11.                      + ")");  
  12. +            }  
  13.              break;  
  14.          case URL_CONVERSATION:  
  15.              // qb.setTables(CbDatabaseHelper.CONVERSATION_TABLE);  
(vendor/
[java]  view plain  copy
  1. diff --git a/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml b/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml  
  2. index 1e224e1..cdb7bce 100755  
  3. --- a/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml  
  4. +++ b/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml  
  5. @@ -88,6 +88,7 @@  
  6.      <!-- rcs -->  
  7.      <uses-permission android:name="com.cmcc.ccs.READ_CCS_MESSAGE"/>  
  8.      <uses-permission android:name="com.cmcc.ccs.WRITE_CCS_MESSAGE"/>  
  9. +    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />  
  10.    
  11.      <application android:name="MmsApp"  
  12.              android:label="@string/app_label"  
  13. @@ -111,6 +112,9 @@  
  14.          <service android:name="com.mediatek.cb.cbmsg.CBMessageReceiverService"  
  15.                   android:exported="false" />  
  16.    
  17. +        <service android:name="com.mediatek.cb.cbmsg.CellBroadcastAlertAudio"  
  18. +                 android:exported="false" />  
  19. +  
  20.          <service android:name="com.mediatek.omacp.OMACPReceiverService"  
  21.                   android:exported="false" />  
  22.    
  23. @@ -534,6 +538,12 @@ add for MClock update sms database  
  24.              <intent-filter>  
  25.                  <action android:name="android.provider.Telephony.SMS_CB_RECEIVED" />  
  26.              </intent-filter>  
  27.   
  28. +            <intent-filter>  
  29. +                <action android:name="android.intent.action.SIM_STATE_CHANGED" />  
  30. +            </intent-filter>  
  31.          </receiver>  
  32.    
  33.          <!-- Catch-all receiver for broadcasts that don't have associated security -->  
  34. 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.java  
  35. index a30251a..9b25f26 100644  
  36. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ConversationListItem.java  
  37. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ConversationListItem.java  
  38. @@ -558,7 +558,7 @@ public class ConversationListItem extends RelativeLayout implements Contact.Upda  
  39.                      .getString(R.string.cb_default_channel_name);  
  40.          }  
  41.          try {  
  42. -            from = name + "(" + channelId + ")";  
  43. +            from = name;  
  44.          } catch (NumberFormatException e) {  
  45.              MmsLog.e(TAG, "format recipient number error!");  
  46.          }  
  47. 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.java  
  48. index 3871434..57aa812 100755  
  49. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageListActivity.java  
  50. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageListActivity.java  
  51. @@ -369,8 +369,7 @@ public class CBMessageListActivity extends Activity implements DraftCache.OnDraf  
  52.                              .getString(R.string.cb_default_channel_name));  
  53.                  } else {  
  54.                      actionBar.setTitle(MmsApp.getApplication().getApplicationContext()  
  55. -                            .getString(R.string.cb_default_channel_name)  
  56. -                            + "(" + mConversation.getRecipients().get(0).getNumber() + ")");  
  57. +                            .getString(R.string.cb_default_channel_name));  
  58.                  }  
  59.    
  60.              default:  
  61. @@ -402,8 +401,7 @@ public class CBMessageListActivity extends Activity implements DraftCache.OnDraf  
  62.    
  63.          ActionBar actionBar = getActionBar();  
  64.          actionBar.setTitle(MmsApp.getApplication().getApplicationContext().getString(  
  65. -            R.string.cb_default_channel_name)  
  66. -            + "(" + mConversation.getRecipients().get(0).getNumber() + ")");  
  67. +            R.string.cb_default_channel_name));  
  68.          actionBar.setDisplayHomeAsUpEnabled(true);  
  69.    
  70.          // We used to refresh the DraftCache here, but  
  71. diff --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.java  
  72. index 7415026..816a1f5 100755  
  73. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiver.java  
  74. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiver.java  
  75. @@ -64,6 +64,8 @@ import com.android.mms.MmsApp;  
  76.  import com.android.mms.util.MmsLog;  
  77.  import com.mediatek.mms.util.PermissionCheckUtil;  
  78.    
  79. +import com.android.internal.telephony.TelephonyIntents;  
  80. +  
  81.  /** 
  82.   * M: 
  83.   * Handle incoming SMSes.  Just dispatches the work off to a Service. 
  84. @@ -98,7 +100,14 @@ public class CBMessageReceiver extends BroadcastReceiver { 
  85.                          + intent.getAction() + ", result = " + getResultCode()); 
  86.   
  87.          intent.setClass(context, CBMessageReceiverService.class); 
  88. +/*  
  89.          intent.putExtra("result", getResultCode()); 
  90. + */  
  91. +        android.util.Log.d(" CBMessageReceiver "" CBMessageReceiver.onReceiveWithPrivilege 97 ");  
  92. +        if (!TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(intent.getAction())) {  
  93. +            intent.putExtra("result", getResultCode());  
  94. +        }  
  95. +// End of  
  96.          beginStartingService(context, intent);  
  97.      }  
  98.    
  99. 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.java  
  100. index d3251c7..1e883cc 100755  
  101. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiverService.java  
  102. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessageReceiverService.java  
  103. @@ -81,6 +81,24 @@ import com.mediatek.mms.ext.IOpCBMessageReceiverServiceExt;  
  104.  import com.mediatek.opmsg.util.OpMessageUtils;  
  105.    
  106.  import android.telephony.SubscriptionManager;  
  107. +import com.mediatek.mms.util.MmsDialogNotifyUtils;  
  108. +/* 
  109. + */  
  110. +import android.provider.Telephony;  
  111. +import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;  
  112. +import android.content.ContentValues;  
  113. +import android.database.Cursor;  
  114. +import android.util.Log;  
  115. +import com.android.internal.telephony.IccCardConstants;  
  116. +import com.android.internal.telephony.TelephonyIntents;  
  117. +import android.telephony.SmsManager;  
  118. +import android.provider.Telephony.Sms.Intents;  
  119. +import android.app.AlertDialog;  
  120. +import android.content.DialogInterface;  
  121. +import android.view.WindowManager;  
  122. +import java.text.SimpleDateFormat;  
  123. +import java.util.Date;  
  124. +// End of Vanzo:tanglei  
  125.    
  126.  /** 
  127.   * M: 
  128. @@ -97,6 +115,19 @@ public class CBMessageReceiverService extends Service { 
  129.   
  130.      private static final Uri MESSAGE_URI = Telephony.SmsCb.CONTENT_URI; 
  131.      private static final int DEFAULT_SUB_ID = 1; 
  132. +/*  
  133. + */  
  134. +    private static final int MESSAGE_SET_STATE = 33;  
  135. +    private static final int MESSAGE_SET_CONFIG = 32;  
  136. +    private static final String KEYID = "_id";  
  137. +    private static final String NAME = "name";  
  138. +    private static final String NUMBER = "number";  
  139. +    private static final String ENABLE = "enable";  
  140. +    private static final String SUBID = "sub_id";  
  141. +    private static final Uri CHANNEL_URI = Uri.parse("content://cb/channel");  
  142. +    private static final int EVENT_RETRY_ADD_CHANNEL_TIME_OUT = 101;  
  143. +    private static boolean isAddingDefaultChannel = false;  
  144. +// End of  
  145.    
  146.      public Handler mToastHandler = new Handler() {  
  147.          @Override  
  148. @@ -159,6 +190,7 @@ public class CBMessageReceiverService extends Service {  
  149.          public void handleMessage(Message msg) {  
  150.              int serviceId = msg.arg1;  
  151.              Intent intent = (Intent) msg.obj;  
  152. +            Log.d(" CBMessageReceiverService "" CBMessageReceiverService.ServiceHandler.handleMessage 185 serviceId="+serviceId+" msg.what="+msg.what+" intent="+intent); // modify by mtk_debug 2015-3-19;  
  153.              if (intent != null) {  
  154.                  String action = intent.getAction();  
  155.                  // NEED Replace with CB ACTION  
  156. @@ -166,12 +198,266 @@ public class CBMessageReceiverService extends Service {  
  157.                      handleCBMessageReceived(intent);  
  158.                  }  
  159.              }  
  160. +  
  161. +            Log.d(" CBMessageReceiverService "" CBMessageReceiverService.ServiceHandler.handleMessage 162 "); // modify by mtk_debug 2015-3-05;  
  162. +            if(TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(intent.getAction())){  
  163. +                Log.d(" CBMessageReceiverService "" CBMessageReceiverService.ServiceHandler.handleMessage receiver a ACTION_SIM_STATE_CHANGED 164 "); // modify by mtk_debug 2015-3-05;  
  164. +                synchronized(this){  
  165. +                    handleSIMStateChangedReceived(intent);  
  166. +                }  
  167. +            }  
  168.              // NOTE: We MUST not call stopSelf() directly, since we need to  
  169.              // make sure the wake lock acquired by AlertReceiver is released.  
  170. -            CBMessageReceiver.finishStartingService(CBMessageReceiverService.this, serviceId);  
  171. +            if(!isAddingDefaultChannel){  
  172. +                CBMessageReceiver.finishStartingService(CBMessageReceiverService.this, serviceId);  
  173. +            }  
  174.          }  
  175.      }  
  176.    
  177. +/*  
  178. + */  
  179. +    private void handleSIMStateChangedReceived(Intent intent) {  
  180. +        Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived 191 "); // modify by mtk_debug 2015-3-05;  
  181. +        int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY, SubscriptionManager.INVALID_SUBSCRIPTION_ID);  
  182. +        String stateExtra = intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE);  
  183. +        // boolean stateExtra = intent.getBooleanExtra("ready",false);  
  184. +        Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived 214 stateExtra="+stateExtra);   
  185. +        if(IccCardConstants.INTENT_VALUE_ICC_READY.equals(stateExtra)){  
  186. +            // if(stateExtra){  
  187. +            if(queryIfChannelInDatabase(subId,"919",919))  
  188. +            {  
  189. +                Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 in database");  
  190. +                isAddingDefaultChannel=false;  
  191. +            }else{  
  192. +                Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 not in database 699 "); // modify by mtk_debug 2015-3-02;  
  193. +                if(SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(true))/*这里会先把CB打开*/  
  194. +                {   
  195. +                    Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived addCustomChanneltoList(subId,Channel1,50);");  
  196. +                    addCustomChanneltoList(subId,"919",919);  
  197. +                    isAddingDefaultChannel=false;  
  198. +  
  199. +                    //请注意:如果贵司做了开机默认关闭小区广播的feature,请取消下面这句code的注释  
  200. +                    //SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(false); //用于关闭小区广播开关  
  201. +  
  202. +                }else{  
  203. +  
  204. +                    Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived activateCellBroadcastSms fail 716 "); // modify by mtk_debug 2015-3-05;  
  205. +                    //add retry  
  206. +                    if (!mServiceHandler.hasMessages(EVENT_RETRY_ADD_CHANNEL_TIME_OUT)) {  
  207. +                        Message msg = mServiceHandler.obtainMessage(EVENT_RETRY_ADD_CHANNEL_TIME_OUT,intent);  
  208. +                        Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived send retry message 235 "); // modify by mtk_debug 2015-3-19;  
  209. +                        mServiceHandler.sendMessageDelayed(msg, 2000);  
  210. +                        isAddingDefaultChannel=true;  
  211. +                    }  
  212. +  
  213. +  
  214. +                }  
  215. +  
  216. +            }  
  217. +            if(queryIfChannelInDatabase(subId,"50",50))  
  218. +            {  
  219. +                Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 in database");  
  220. +                isAddingDefaultChannel=false;  
  221. +            }else{  
  222. +                Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 not in database 699 "); // modify by mtk_debug 2015-3-02;  
  223. +                if(SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(true))/*这里会先把CB打开*/  
  224. +                {   
  225. +                    Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived addCustomChanneltoList(subId,Channel1,50);");  
  226. +                    addCustomChanneltoList(subId,"50",50);  
  227. +                    isAddingDefaultChannel=false;  
  228. +  
  229. +                    //请注意:如果贵司做了开机默认关闭小区广播的feature,请取消下面这句code的注释  
  230. +                    //SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(false); //用于关闭小区广播开关  
  231. +  
  232. +                }else{  
  233. +  
  234. +                    Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived activateCellBroadcastSms fail 716 "); // modify by mtk_debug 2015-3-05;  
  235. +                    //add retry  
  236. +                    if (!mServiceHandler.hasMessages(EVENT_RETRY_ADD_CHANNEL_TIME_OUT)) {  
  237. +                        Message msg = mServiceHandler.obtainMessage(EVENT_RETRY_ADD_CHANNEL_TIME_OUT,intent);  
  238. +                        Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived send retry message 235 "); // modify by mtk_debug 2015-3-19;  
  239. +                        mServiceHandler.sendMessageDelayed(msg, 2000);  
  240. +                        isAddingDefaultChannel=true;  
  241. +                    }  
  242. +  
  243. +  
  244. +                }  
  245. +  
  246. +            }  
  247. +            if(queryIfChannelInDatabase(subId,"4370",4370))  
  248. +            {  
  249. +                Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 in database");  
  250. +                isAddingDefaultChannel=false;  
  251. +            }else{  
  252. +                Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 not in database 699 "); // modify by mtk_debug 2015-3-02;  
  253. +                if(SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(true))/*这里会先把CB打开*/  
  254. +                {   
  255. +                    Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived addCustomChanneltoList(subId,Channel1,50);");  
  256. +                    addCustomChanneltoList(subId,"4370",4370);  
  257. +                    isAddingDefaultChannel=false;  
  258. +  
  259. +                    //请注意:如果贵司做了开机默认关闭小区广播的feature,请取消下面这句code的注释  
  260. +                    //SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(false); //用于关闭小区广播开关  
  261. +  
  262. +                }else{  
  263. +  
  264. +                    Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived activateCellBroadcastSms fail 716 "); // modify by mtk_debug 2015-3-05;  
  265. +                    //add retry  
  266. +                    if (!mServiceHandler.hasMessages(EVENT_RETRY_ADD_CHANNEL_TIME_OUT)) {  
  267. +                        Message msg = mServiceHandler.obtainMessage(EVENT_RETRY_ADD_CHANNEL_TIME_OUT,intent);  
  268. +                        Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived send retry message 235 "); // modify by mtk_debug 2015-3-19;  
  269. +                        mServiceHandler.sendMessageDelayed(msg, 2000);  
  270. +                        isAddingDefaultChannel=true;  
  271. +                    }  
  272. +  
  273. +  
  274. +                }  
  275. +  
  276. +            }  
  277. +            if(queryIfChannelInDatabase(subId,"921",921))  
  278. +            {  
  279. +                Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 in database");  
  280. +                isAddingDefaultChannel=false;  
  281. +            }else{  
  282. +                Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived subid="+subId+" channel1 50 not in database 699 "); // modify by mtk_debug 2015-3-02;  
  283. +                if(SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(true))/*这里会先把CB打开*/  
  284. +                {   
  285. +                    Log.d(TAG, " CBMessageReceiverService.handleSIMStateChangedReceived addCustomChanneltoList(subId,Channel1,50);");  
  286. +                    addCustomChanneltoList(subId,"921",921);  
  287. +                    isAddingDefaultChannel=false;  
  288. +  
  289. +                    //请注意:如果贵司做了开机默认关闭小区广播的feature,请取消下面这句code的注释  
  290. +                    //SmsManager.getSmsManagerForSubscriptionId(subId).activateCellBroadcastSms(false); //用于关闭小区广播开关  
  291. +  
  292. +                }else{  
  293. +  
  294. +                    Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived activateCellBroadcastSms fail 716 "); // modify by mtk_debug 2015-3-05;  
  295. +                    //add retry  
  296. +                    if (!mServiceHandler.hasMessages(EVENT_RETRY_ADD_CHANNEL_TIME_OUT)) {  
  297. +                        Message msg = mServiceHandler.obtainMessage(EVENT_RETRY_ADD_CHANNEL_TIME_OUT,intent);  
  298. +                        Log.d(" CBMessageReceiverService "" CBMessageReceiverService.handleSIMStateChangedReceived send retry message 235 "); // modify by mtk_debug 2015-3-19;  
  299. +                        mServiceHandler.sendMessageDelayed(msg, 2000);  
  300. +                        isAddingDefaultChannel=true;  
  301. +                    }  
  302. +  
  303. +  
  304. +                }  
  305. +  
  306. +            }  
  307. +  
  308. +        }  
  309. +  
  310. +    }  
  311. +  
  312. +    private void addCustomChanneltoList(int mSubId,String channelName,int channelNum){  
  313. +        Log.d(TAG, "addCustomChanneltoList: mSubId=" + mSubId  
  314. +                + ", channelName= " + channelName + ", channelNum= " + channelNum);  
  315. +  
  316. +        SmsBroadcastConfigInfo[] objectList = new SmsBroadcastConfigInfo[1];  
  317. +        objectList[0] = new SmsBroadcastConfigInfo(channelNum,channelNum, -1, -1true);  
  318. +  
  319. +        Log.d(TAG, "addCustomChanneltoList: setCellBroadcastSmsConfig");  
  320. +        //SmsManagerEx.getDefault().setCellBroadcastSmsConfig(objectList, objectList, mSimId);  
  321. +        boolean isSetConfigSuccess = SmsManager.getSmsManagerForSubscriptionId(mSubId).setCellBroadcastSmsConfig(objectList, objectList);  
  322. +        if(isSetConfigSuccess){  
  323. +            Log.d(" CBMessageReceiverService "" CBMessageReceiverService.addCustomChanneltoList set channel " +channelNum +" success 784 "); // modify by mtk_debug 2015-3-05;  
  324. +            addChannelToDatabase(mSubId,channelName,channelNum);  
  325. +        }else{  
  326. +            Log.d(" CBMessageReceiverService "" CBMessageReceiverService.addCustomChanneltoList set channel "+ channelNum +" failed 786 "); // modify by mtk_debug 2015-3-05;  
  327. +        }  
  328. +  
  329. +  
  330. +        Log.d(TAG, " CBMessageReceiverService addCustomChanneltoList: function end");  
  331. +    }  
  332. +  
  333. +  
  334. +  
  335. +    private boolean addChannelToDatabase(int mSubId,String channelName,int channelNum){  
  336. +            // ClearChannel();  
  337. +        Log.d(TAG, "addChannelToDatabase: mSubId=" + mSubId  
  338. +                + ", channelName= " + channelName + ", channelNum= " + channelNum);  
  339. +        String[] projection = new String[] { NUMBER, SUBID};  
  340. +        String SELECTIONNum = "(" + NUMBER + " = " + channelNum + ")";   
  341. +        String SELECTIONid = "(" + SUBID + " = " + mSubId + ")";  
  342. +        Cursor cursornum = null;  
  343. +        Cursor cursorid = null;  
  344. +  
  345. +        Cursor cursorzz = this.getContentResolver().query(CHANNEL_URI,  
  346. +                projection,  
  347. +                NUMBER + " = ? AND " +  
  348. +                SUBID + " = ?",  
  349. +                new String[] {String.valueOf(channelNum), String.valueOf(mSubId)},  
  350. +                null);  
  351. +        Log.d(TAG, "addChannelToDatabase: cursor.getCount"+cursorzz.getCount());  
  352. +        if(cursorzz.getCount() == 0){//if ((cursornum.getCount() == 0)&&(cursorid.getCount() == 0)){   
  353. +            Log.d(" CBMessageReceiverService "" SmsReceiverService.addChannelToDatabase add mSubId=" + mSubId  
  354. +                    + ", channelName= " + channelName + ", channelNum= " + channelNum +"to database"); // modify by mtk_debug 2015-3-05;  
  355. +            ContentValues values = new ContentValues();  
  356. +            values.put(NAME,channelName);  
  357. +            values.put(NUMBER, channelNum);  
  358. +            values.put(ENABLE, true);   //请注意:如果贵司希望预置的频道默认为disable状态,把true改成false即可  
  359. +            values.put(SUBID, mSubId);  
  360. +            try {  
  361. +                //if(mSimId==PhoneConstants.SUB1){  
  362. +                this.getContentResolver().insert(CHANNEL_URI, values);  
  363. +                //}else if(mSimId==PhoneConstants.SUB2){  
  364. +                // this.getContentResolver().insert(CHANNEL_URI1, values);  
  365. +                //}  
  366. +            } catch (Exception e){  
  367. +                Log.d(" CBMessageReceiverService "" SmsReceiverService.addChannelToDatabase exception 828 "); // modify by mtk_debug 2015-3-05;  
  368. +                //cursornum.close();  
  369. +                //cursorid.close();  
  370. +                cursorzz.close();  
  371. +                return false;  
  372. +            }  
  373. +            //cursornum.close();  
  374. +            // cursorid.close();  
  375. +            cursorzz.close();  
  376. +            return true;  
  377. +        }  
  378. +        else{  
  379. +            //cursornum.close();  
  380. +            //cursorid.close();  
  381. +            cursorzz.close();  
  382. +            return false;  
  383. +        }  
  384. +  
  385. +    }   
  386. +  
  387. +  
  388. +    private boolean queryIfChannelInDatabase(int mSubId,String channelName,int channelNum){  
  389. +  
  390. +        Log.d(TAG, "queryIfChannelInDatabase: mSubId=" + mSubId  
  391. +                + ", channelName= " + channelName + ", channelNum= " + channelNum);  
  392. +        String[] projection = new String[] { NUMBER, SUBID};  
  393. +        String SELECTIONNum = "(" + NUMBER + " = " + channelNum + ")";   
  394. +        String SELECTIONid = "(" + SUBID + " = " + mSubId + ")";  
  395. +        Cursor cursornum = null;  
  396. +        Cursor cursorid = null;  
  397. +  
  398. +        Cursor cursorzz = this.getContentResolver().query(CHANNEL_URI,  
  399. +                projection,  
  400. +                NUMBER + " = ? AND " +  
  401. +                SUBID + " = ?",  
  402. +                new String[] {String.valueOf(channelNum),String.valueOf(mSubId)},  
  403. +                null);  
  404. +  
  405. +        if(cursorzz != null&&cursorzz.getCount() > 0){  
  406. +            //if ((cursornum.getCount() != 0)&&(cursorid.getCount() != 0)){  
  407. +            Log.d(TAG, "queryIfChannelInDatabase: cursor.getCount"+cursorzz.getCount());  
  408. +            cursorzz.close();  
  409. +            return true;  
  410. +  
  411. +  
  412. +        }else{  
  413. +            cursorzz.close();  
  414. +            Log.d(TAG, "queryIfChannelInDatabase: return false");  
  415. +            return false;  
  416. +        }  
  417. +  
  418. +    }  
  419. +// End of Vanzo:tanglei  
  420. +  
  421.      private void handleCBMessageReceived(Intent intent) {  
  422.          // TODO need replace with cb message.  
  423.          Bundle extras = intent.getExtras();  
  424. @@ -200,7 +486,37 @@ public class CBMessageReceiverService extends Service {  
  425.          }  
  426.    
  427.          if (messageUri != null) {  
  428. -            CBMessagingNotification.updateNewMessageIndicator(subId, thistrue);  
  429. +            if (message.getServiceCategory() == 919 ||  
  430. +                    message.getServiceCategory() == 50 ||  
  431. +                    message.getServiceCategory() == 921) {  
  432. +                //alert repeat with audio and vibrate  
  433. +                CellBroadcastAlertWakeLock.acquireScreenCpuWakeLock(this);  
  434. +                Intent audioIntent = new Intent(this, CellBroadcastAlertAudio.class);  
  435. +                audioIntent.setAction(CellBroadcastAlertAudio.ACTION_START_ALERT_AUDIO);  
  436. +                audioIntent.putExtra(CellBroadcastAlertAudio.ALERT_AUDIO_DURATION_EXTRA, 10500);  
  437. +                audioIntent.putExtra(CellBroadcastAlertAudio.ALERT_AUDIO_VIBRATE_EXTRA, true);  
  438. +                startService(audioIntent);  
  439. +                SimpleDateFormat  sdf = new SimpleDateFormat("hh:mm aa.  |  dd/MM/yyyy");  
  440. +                String time = sdf.format(new Date(System.currentTimeMillis())).toString();  
  441. +                final Context sContext = getApplicationContext();  
  442. +                AlertDialog alert = new AlertDialog.Builder(sContext)  
  443. +                    .setTitle("Alerta de Emergencia")  
  444. +                    .setMessage(message.getMessageBody() + "\n\n" + time)  
  445. +                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {  
  446. +                            @Override  
  447. +                            public void onClick(DialogInterface dialog, int which) {  
  448. +                                sContext.stopService(new Intent(sContext, CellBroadcastAlertAudio.class));  
  449. +                                dialog.dismiss();  
  450. +                            }  
  451. +                        })  
  452. +                    .create();  
  453. +                alert.getWindow().setType(  
  454. +                        WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);  
  455. +                alert.setCancelable(false);  
  456. +                alert.show();  
  457. +            } else {  
  458. +                CBMessagingNotification.updateNewMessageIndicator(subId, thistrue);  
  459. +            }  
  460.          }  
  461.      }  
  462.    
  463. 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.java  
  464. index f9c161e..addf59d 100755  
  465. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessagingNotification.java  
  466. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CBMessagingNotification.java  
  467. @@ -268,7 +268,6 @@ public class CBMessagingNotification {  
  468.              //String address = Conversation.getChannelNameFromId(context, channel_id);  
  469.              String address;  
  470.              address = CBMessage.getCBChannelName(subId, channelId);  
  471. -            address = address + "(" + channelId + ")";  
  472.              CBNotificationInfo info = getNewMessageNotificationInfo(  
  473.                      address, body, context, R.drawable.stat_notify_sms,  
  474.                      null, threadId, timeMillis, cursor.getCount(),  
  475. 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.java  
  476. new file mode 100644  
  477. index 0000000..f868e44  
  478. --- /dev/null  
  479. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CellBroadcastAlertAudio.java  
  480. @@ -0,0 +1,435 @@  
  481. +/* 
  482. + * Copyright (C) 2011 The Android Open Source Project 
  483. + * 
  484. + * Licensed under the Apache License, Version 2.0 (the "License"); 
  485. + * you may not use this file except in compliance with the License. 
  486. + * You may obtain a copy of the License at 
  487. + * 
  488. + *      http://www.apache.org/licenses/LICENSE-2.0 
  489. + * 
  490. + * Unless required by applicable law or agreed to in writing, software 
  491. + * distributed under the License is distributed on an "AS IS" BASIS, 
  492. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  493. + * See the License for the specific language governing permissions and 
  494. + * limitations under the License. 
  495. + */  
  496. +  
  497. +package com.mediatek.cb.cbmsg;  
  498. +  
  499. +import android.app.Service;  
  500. +import android.content.BroadcastReceiver;  
  501. +import android.content.Context;  
  502. +import android.content.Intent;  
  503. +import android.content.IntentFilter;  
  504. +import android.content.SharedPreferences;  
  505. +import android.content.res.AssetFileDescriptor;  
  506. +import android.content.res.Resources;  
  507. +import android.media.AudioManager;  
  508. +import android.media.MediaPlayer;  
  509. +import android.media.MediaPlayer.OnErrorListener;  
  510. +import android.os.Handler;  
  511. +import android.os.IBinder;  
  512. +import android.os.Message;  
  513. +import android.os.Vibrator;  
  514. +import android.speech.tts.TextToSpeech;  
  515. +import android.telephony.PhoneStateListener;  
  516. +import android.telephony.TelephonyManager;  
  517. +import android.util.Log;  
  518. +import java.io.IOException;  
  519. +import java.util.HashMap;  
  520. +import java.util.ArrayList;  
  521. +import java.util.Locale;  
  522. +import com.android.mms.R;  
  523. +  
  524. +/** 
  525. + * Manages alert audio and vibration and text-to-speech. Runs as a service so that 
  526. + * it can continue to play if another activity overrides the CellBroadcastListActivity. 
  527. + */  
  528. +public class CellBroadcastAlertAudio extends Service {  
  529. +    private static final String TAG = "CellBroadcastAlertAudio";  
  530. +    private static final int PRESIDENT_ALERT_ID = 4370;  
  531. +    /** Action to start playing alert audio/vibration/speech. */  
  532. +    static final String ACTION_START_ALERT_AUDIO = "ACTION_START_ALERT_AUDIO";  
  533. +  
  534. +    /** Extra for alert audio duration (from settings). */  
  535. +    public static final String ALERT_AUDIO_DURATION_EXTRA =  
  536. +            "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_DURATION";  
  537. +  
  538. +    /** Extra for message body to speak (if speech enabled in settings). */  
  539. +    public static final String ALERT_AUDIO_MESSAGE_BODY =  
  540. +            "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_MESSAGE_BODY";  
  541. +  
  542. +    /** Extra for text-to-speech language (if speech enabled in settings). */  
  543. +    public static final String ALERT_AUDIO_MESSAGE_LANGUAGE =  
  544. +            "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_MESSAGE_LANGUAGE";  
  545. +  
  546. +    /** Extra for message ID . */  
  547. +    public static final String ALERT_AUDIO_MESSAGE_ID =  
  548. +            "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_MESSAGE_ID";  
  549. +  
  550. +    /** Extra for alert audio vibration enabled (from settings). */  
  551. +    public static final String ALERT_AUDIO_VIBRATE_EXTRA =  
  552. +            "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_VIBRATE";  
  553. +  
  554. +    /** Extra for alert audio ETWS behavior (always vibrate, even in silent mode). */  
  555. +    public static final String ALERT_AUDIO_ETWS_VIBRATE_EXTRA =  
  556. +            "com.mediatek.cellbroadcastreceiver.ALERT_AUDIO_ETWS_VIBRATE";  
  557. +  
  558. +    private static final String TTS_UTTERANCE_ID =  
  559. +                    "com.mediatek.cellbroadcastreceiver.UTTERANCE_ID";  
  560. +  
  561. +    /** Pause duration between alert sound and alert speech. */  
  562. +    private static final int PAUSE_DURATION_BEFORE_SPEAKING_MSEC = 1000;  
  563. +  
  564. +    //volume change action  
  565. +    private static final String VOLUME_CHANGED_ACTION = "android.media.VOLUME_CHANGED_ACTION";  
  566. +  
  567. +    /** Vibration uses the same on/off pattern as the CMAS alert tone */  
  568. +    private static final long[] sVibratePattern = { 0200050010005001000500,  
  569. +            200050010005001000};  
  570. +  
  571. +    private static final int STATE_IDLE = 0;  
  572. +    private static final int STATE_ALERTING = 1;  
  573. +    private static final int STATE_PAUSING = 2;  
  574. +    private static final int STATE_SPEAKING = 3;  
  575. +  
  576. +    // Internal messages  
  577. +    private static final int ALERT_SOUND_FINISHED = 1000;  
  578. +    private static final int ALERT_PAUSE_FINISHED = 1001;  
  579. +    /// M: add for repeat alert feature. @{  
  580. +    private static final String PREF_NAME = "com.mediatek.cellbroadcastreceiver_preferences";  
  581. +    private static final int REPEAT_ALERT_START = 1002;  
  582. +    private static final int[] sRepeatTimes = { 6000060000 * 360000 * 5 };  
  583. +    private boolean mEnableRepeat = true;  
  584. +    private int mDuration;  
  585. +    private ArrayList<Integer> mRepeatPattern;  
  586. +    /// @}  
  587. +  
  588. +    private int mState;  
  589. +  
  590. +    private int mMessageId;  
  591. +    private String mMessageBody;  
  592. +    private String mMessageLanguage;  
  593. +    private boolean mEnableVibrate;  
  594. +    private boolean mEnableAudio;  
  595. +    private boolean mRegisteredVolumeReceiver = false;  
  596. +  
  597. +    private Vibrator mVibrator;  
  598. +    private MediaPlayer mMediaPlayer;  
  599. +    private AudioManager mAudioManager;  
  600. +    private TelephonyManager mTelephonyManager;  
  601. +    private int mInitialCallState;  
  602. +  
  603. +    private final Handler mHandler = new Handler() {  
  604. +        @Override  
  605. +        public void handleMessage(Message msg) {  
  606. +            switch (msg.what) {  
  607. +                case ALERT_SOUND_FINISHED:  
  608. +                    /// @}  
  609. +                    stop();     // stop alert sound  
  610. +                    // if we can speak the message text  
  611. +                    if (mMessageBody != null) {  
  612. +                        mHandler.sendMessageDelayed(mHandler.obtainMessage(ALERT_PAUSE_FINISHED),  
  613. +                                PAUSE_DURATION_BEFORE_SPEAKING_MSEC);  
  614. +                        mState = STATE_PAUSING;  
  615. +                    } else if (!mEnableRepeat || mRepeatPattern.isEmpty()) { ///M:  
  616. +                        // add for repeat alert feature. do not stop service until end repeat.  
  617. +                        stopSelf();  
  618. +                        mState = STATE_IDLE;  
  619. +                    }  
  620. +                    break;  
  621. +  
  622. +                case ALERT_PAUSE_FINISHED:  
  623. +                    if (mMessageBody != null) {  
  624. +                        mState = STATE_SPEAKING;  
  625. +                    } else if (!mEnableRepeat || mRepeatPattern.isEmpty()) { ///M:  
  626. +                        // add for repeat alert feature. do not stop service until end repeat.  
  627. +                        Log.w(TAG, "TTS engine not ready or language not supported");  
  628. +                        stopSelf();  
  629. +                        mState = STATE_IDLE;  
  630. +                    }  
  631. +  
  632. +                    break;  
  633. +  
  634. +                ///M: add for repeat alert feature. @{  
  635. +                case REPEAT_ALERT_START:  
  636. +                    schedulePlay();  
  637. +                    break;  
  638. +                /// @}  
  639. +                default:  
  640. +                    Log.e(TAG, "Handler received unknown message, what=" + msg.what);  
  641. +            }  
  642. +        }  
  643. +    };  
  644. +  
  645. +    private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {  
  646. +        @Override  
  647. +        public void onCallStateChanged(int state, String ignored) {  
  648. +            // Stop the alert sound and speech if the call state changes.  
  649. +            if (state != TelephonyManager.CALL_STATE_IDLE  
  650. +                    && state != mInitialCallState) {  
  651. +                stopSelf();  
  652. +            }  
  653. +        }  
  654. +    };  
  655. +  
  656. +    private BroadcastReceiver volumeChangeReceiver = new BroadcastReceiver() {  
  657. +  
  658. +        @Override  
  659. +        public void onReceive(Context arg0, Intent arg1) {  
  660. +            Log.d(TAG, "receive volume change broadcast, stop sound and vibration alert");  
  661. +            //stop();  
  662. +        }  
  663. +  
  664. +    };  
  665. +  
  666. +  
  667. +    @Override  
  668. +    public void onCreate() {  
  669. +        mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);  
  670. +        mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);  
  671. +        // Listen for incoming calls to kill the alarm.  
  672. +        mTelephonyManager =  
  673. +                (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);  
  674. +        mTelephonyManager.listen(  
  675. +                mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);  
  676. +    }  
  677. +  
  678. +    @Override  
  679. +    public void onDestroy() {  
  680. +        //unregister volume register  
  681. +        if (mRegisteredVolumeReceiver) {  
  682. +            mRegisteredVolumeReceiver = false;  
  683. +            unregisterReceiver(volumeChangeReceiver);  
  684. +        }  
  685. +  
  686. +        /// M: add for repeat alert feature. cancel the next schedule when destroy. @{  
  687. +        if (mEnableRepeat) {  
  688. +            cancelRepeat();  
  689. +        }  
  690. +        /// @}  
  691. +  
  692. +        // stop audio, vibration and TTS  
  693. +        stop();  
  694. +        // Stop listening for incoming calls.  
  695. +        mTelephonyManager.listen(mPhoneStateListener, 0);  
  696. +        // release CPU wake lock acquired by CellBroadcastAlertService  
  697. +        CellBroadcastAlertWakeLock.releaseCpuLock();  
  698. +    }  
  699. +  
  700. +    @Override  
  701. +    public IBinder onBind(Intent intent) {  
  702. +        return null;  
  703. +    }  
  704. +  
  705. +    @Override  
  706. +    public int onStartCommand(Intent intent, int flags, int startId) {  
  707. +        // No intent, tell the system not to restart us.  
  708. +        if (intent == null) {  
  709. +            stopSelf();  
  710. +            return START_NOT_STICKY;  
  711. +        }  
  712. +  
  713. +        ///M: add for repeat alert feature.  
  714. +        cancelRepeat();  
  715. +        initAlertSequence();  
  716. +  
  717. +        // This extra should always be provided by CellBroadcastAlertService,  
  718. +        // but default to 10.5 seconds just to be safe (CMAS requirement).  
  719. +        int duration = intent.getIntExtra(ALERT_AUDIO_DURATION_EXTRA, 10500);  
  720. +        mMessageId = intent.getIntExtra(ALERT_AUDIO_MESSAGE_ID, 0);  
  721. +        // Get text to speak (if enabled by user)  
  722. +        mMessageBody = intent.getStringExtra(ALERT_AUDIO_MESSAGE_BODY);  
  723. +        mMessageLanguage = intent.getStringExtra(ALERT_AUDIO_MESSAGE_LANGUAGE);  
  724. +  
  725. +        mEnableVibrate = intent.getBooleanExtra(ALERT_AUDIO_VIBRATE_EXTRA, true);  
  726. +        boolean forceVibrate = intent.getBooleanExtra(ALERT_AUDIO_ETWS_VIBRATE_EXTRA, false);  
  727. +  
  728. +        mEnableAudio = true;  
  729. +        Log.d(TAG, "mEnableAudio:" + mEnableAudio + ", mEnableVibrate:" + mEnableVibrate);  
  730. +        ///M: add for repeat alert. @{  
  731. +        mDuration = duration;  
  732. +        schedulePlay();  
  733. +        /// @}  
  734. +        //register volume change receiver  
  735. +        if (!mRegisteredVolumeReceiver) {  
  736. +            IntentFilter intentFilter = new IntentFilter();  
  737. +            intentFilter.addAction(VOLUME_CHANGED_ACTION);  
  738. +            registerReceiver(volumeChangeReceiver, intentFilter);  
  739. +            mRegisteredVolumeReceiver = true;  
  740. +        }  
  741. +  
  742. +        // Record the initial call state here so that the new alarm has the  
  743. +        // newest state.  
  744. +        mInitialCallState = mTelephonyManager.getCallState();  
  745. +  
  746. +        return START_STICKY;  
  747. +    }  
  748. +  
  749. +    // Volume suggested by media team for in-call alarms.  
  750. +    private static final float IN_CALL_VOLUME = 0.125f;  
  751. +  
  752. +    /** 
  753. +     * Start playing the alert sound, and send delayed message when it's time to stop. 
  754. +     * @param duration the alert sound duration in milliseconds 
  755. +     */  
  756. +    private void play() {  
  757. +        // stop() checks to see if we are already playing.  
  758. +        stop();  
  759. +  
  760. +  
  761. +        // Start the vibration first.  
  762. +        if (mEnableVibrate || forceAlert()) {  
  763. +            mVibrator.vibrate(sVibratePattern, -1);  
  764. +        }  
  765. +  
  766. +        if (mEnableAudio || forceAlert()) {  
  767. +            // future optimization: reuse media player object  
  768. +            mMediaPlayer = new MediaPlayer();  
  769. +            mMediaPlayer.setOnErrorListener(new OnErrorListener() {  
  770. +                public boolean onError(MediaPlayer mp, int what, int extra) {  
  771. +                    Log.e(TAG, "Error occurred while playing audio.");  
  772. +                    mp.stop();  
  773. +                    mp.release();  
  774. +                    mMediaPlayer = null;  
  775. +                    return true;  
  776. +                }  
  777. +            });  
  778. +  
  779. +            try {  
  780. +                // Check if we are in a call. If we are, play the alert  
  781. +                // sound at a low volume to not disrupt the call.  
  782. +                if (mTelephonyManager.getCallState()  
  783. +                        != TelephonyManager.CALL_STATE_IDLE) {  
  784. +                    Log.v(TAG, "in call: reducing volume");  
  785. +                    mMediaPlayer.setVolume(IN_CALL_VOLUME, IN_CALL_VOLUME);  
  786. +                }  
  787. +                else {  
  788. +                    float volume = 1.0f;  
  789. +  
  790. +                Log.d(TAG , "Alert volume: " + volume);  
  791. +                mMediaPlayer.setVolume(volume, volume);  
  792. +               }  
  793. +  
  794. +                // start playing alert audio (unless master volume is vibrate only or silent).  
  795. +                setDataSourceFromResource(getResources(), mMediaPlayer,  
  796. +                        R.raw.attention_signal);  
  797. +  
  798. +                int streamType = AudioManager.STREAM_NOTIFICATION;  
  799. +                streamType = AudioManager.STREAM_ALARM;  
  800. +                mAudioManager.setStreamVolume(streamType,  
  801. +                        mAudioManager.getStreamMaxVolume(streamType),  
  802. +                        AudioManager.FLAG_PLAY_SOUND);  
  803. +                mAudioManager.requestAudioFocus(null, streamType,  
  804. +                        AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);  
  805. +                startAlarm(mMediaPlayer);  
  806. +            } catch (IllegalStateException ex) {  
  807. +                Log.e(TAG, "Failed to play alert sound", ex);  
  808. +            } catch (IOException e) {  
  809. +                Log.e(TAG, "IOException");  
  810. +            }  
  811. +        }  
  812. +  
  813. +        // stop alert after the specified duration  
  814. +        mHandler.sendMessageDelayed(mHandler.obtainMessage(ALERT_SOUND_FINISHED), mDuration);  
  815. +  
  816. +        mState = STATE_ALERTING;  
  817. +    }  
  818. +  
  819. +    // Do the common stuff when starting the alarm.  
  820. +    private void startAlarm(MediaPlayer player)  
  821. +            throws java.io.IOException, IllegalArgumentException, IllegalStateException {  
  822. +        int streamType = AudioManager.STREAM_NOTIFICATION;  
  823. +        streamType = AudioManager.STREAM_ALARM;  
  824. +        player.setAudioStreamType(streamType);  
  825. +        player.setLooping(true);  
  826. +        player.prepare();  
  827. +        player.start();  
  828. +    }  
  829. +  
  830. +    private static void setDataSourceFromResource(Resources resources,  
  831. +            MediaPlayer player, int res) throws java.io.IOException {  
  832. +        AssetFileDescriptor afd = resources.openRawResourceFd(res);  
  833. +        if (afd != null) {  
  834. +            player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),  
  835. +                    afd.getLength());  
  836. +            afd.close();  
  837. +        }  
  838. +    }  
  839. +  
  840. +    /** 
  841. +     * Stops alert audio and speech. 
  842. +     */  
  843. +    public void stop() {  
  844. +  
  845. +        mHandler.removeMessages(ALERT_SOUND_FINISHED);  
  846. +        mHandler.removeMessages(ALERT_PAUSE_FINISHED);  
  847. +  
  848. +        if (mState == STATE_ALERTING) {  
  849. +            // Stop audio playing  
  850. +            if (mMediaPlayer != null) {  
  851. +                try {  
  852. +                    mMediaPlayer.stop();  
  853. +                    mMediaPlayer.release();  
  854. +                } catch (IllegalStateException e) {  
  855. +                    // catch "Unable to retrieve AudioTrack pointer for stop()" exception  
  856. +                    Log.e(TAG, "exception trying to stop media player");  
  857. +                }  
  858. +                mMediaPlayer = null;  
  859. +            }  
  860. +  
  861. +            // Stop vibrator  
  862. +            mVibrator.cancel();  
  863. +        }  
  864. +        mAudioManager.abandonAudioFocus(null);  
  865. +        mState = STATE_IDLE;  
  866. +    }  
  867. +  
  868. +    private static void log(String msg) {  
  869. +        Log.d(TAG, msg);  
  870. +    }  
  871. +  
  872. +    /** 
  873. +     * M: add for repeat alert feature. 
  874. +     */  
  875. +    private void initAlertSequence() {  
  876. +        mEnableRepeat = true;  
  877. +        mRepeatPattern = new ArrayList<Integer>();  
  878. +        if (mEnableRepeat) {  
  879. +            for (int i : sRepeatTimes) {  
  880. +                mRepeatPattern.add(i);  
  881. +            }  
  882. +        }  
  883. +    }  
  884. +  
  885. +    /** 
  886. +     * M: add for repeat alert feature. 
  887. +     * @param duration the duration of one alert time. 
  888. +     */  
  889. +    private void schedulePlay() {  
  890. +         //if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT) {  
  891. +            play();  
  892. +         //}  
  893. +        if (mEnableRepeat) {  
  894. +            mHandler.sendMessageDelayed(mHandler.obtainMessage(REPEAT_ALERT_START), mDuration + 500);  
  895. +        }  
  896. +    }  
  897. +  
  898. +    /** 
  899. +     * M: add for repeat alert feature. 
  900. +     */  
  901. +    public void cancelRepeat() {  
  902. +        mHandler.removeMessages(REPEAT_ALERT_START);  
  903. +    }  
  904. +  
  905. +    /** 
  906. +     * M: force alarm (except first alert) in silent mode. 
  907. +     * @return 
  908. +     */  
  909. +    private boolean forceAlert() {  
  910. +        boolean isSilentMode = mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT;  
  911. +        boolean isRepeating = mEnableRepeat && (mRepeatPattern.size() < sRepeatTimes.length);  
  912. +        return isSilentMode && isRepeating;  
  913. +    }  
  914. +  
  915. +}  
  916. 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.java  
  917. new file mode 100644  
  918. index 0000000..ac296db  
  919. --- /dev/null  
  920. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbmsg/CellBroadcastAlertWakeLock.java  
  921. @@ -0,0 +1,52 @@  
  922. +/* 
  923. + * Copyright (C) 2012 The Android Open Source Project 
  924. + * 
  925. + * Licensed under the Apache License, Version 2.0 (the "License"); 
  926. + * you may not use this file except in compliance with the License. 
  927. + * You may obtain a copy of the License at 
  928. + * 
  929. + *      http://www.apache.org/licenses/LICENSE-2.0 
  930. + * 
  931. + * Unless required by applicable law or agreed to in writing, software 
  932. + * distributed under the License is distributed on an "AS IS" BASIS, 
  933. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  934. + * See the License for the specific language governing permissions and 
  935. + * limitations under the License. 
  936. + */  
  937. +  
  938. +package com.mediatek.cb.cbmsg;  
  939. +  
  940. +import android.content.Context;  
  941. +import android.os.PowerManager;  
  942. +import android.util.Log;  
  943. +  
  944. +/** 
  945. + * Hold a wakelock that can be acquired in the CellBroadcastAlertService and 
  946. + * released in the CellBroadcastAlertFullScreen Activity. 
  947. + */  
  948. +class CellBroadcastAlertWakeLock {  
  949. +    private static final String TAG = "CellBroadcastAlertWakeLock";  
  950. +  
  951. +    private static PowerManager.WakeLock sCpuWakeLock;  
  952. +  
  953. +    private CellBroadcastAlertWakeLock() {}  
  954. +  
  955. +    static void acquireScreenCpuWakeLock(Context context) {  
  956. +        if (sCpuWakeLock != null) {  
  957. +            return;  
  958. +        }  
  959. +        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);  
  960. +        sCpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK  
  961. +                | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG);  
  962. +        sCpuWakeLock.acquire();  
  963. +        Log.d(TAG, "acquired screen + CPU wake lock");  
  964. +    }  
  965. +  
  966. +    static void releaseCpuLock() {  
  967. +        if (sCpuWakeLock != null) {  
  968. +            sCpuWakeLock.release();  
  969. +            sCpuWakeLock = null;  
  970. +            Log.d(TAG, "released screen + CPU wake lock");  
  971. +        }  
  972. +    }  
  973. +}  
  974. 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.java  
  975. index c6a152b..a15c329 100755  
  976. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbsettings/CellBroadcastSettings.java  
  977. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/cb/cbsettings/CellBroadcastSettings.java  
  978. @@ -218,6 +218,13 @@ public class CellBroadcastSettings extends TimeConsumingPreferenceActivity  
  979.              } else {  
  980.                  channel.setSummary(R.string.disable);  
  981.              }  
  982. +            if (title.equals("919(919)")  
  983. +                    || title.equals("50(50)")  
  984. +                    || title.equals("4370(4370)")  
  985. +                    || title.equals("921(921)")) {  
  986. +                channel.setEnabled(false);  
  987. +                channel.setSelectable(false);  
  988. +            }  
  989.    
  990.              channel.setOnPreferenceClickListener(new OnPreferenceClickListener() {  
  991.                  public boolean onPreferenceClick(Preference arg0) {  
  992. @@ -560,6 +567,7 @@ public class CellBroadcastSettings extends TimeConsumingPreferenceActivity  
  993.                  }  
  994.                  String jStr = String.valueOf(j);  
  995.                  CellBroadcastChannel channel = getChannelObjectFromKey(jStr);  
  996. +/* Vanzo:tanglei on: Thu, 08 Sep 2016 10:34:04 +0800 
  997.                  if (channel != null) { 
  998.                      channel.setChannelState(state); 
  999.                  } else { 
  1000. @@ -573,6 +581,8 @@ public class CellBroadcastSettings extends TimeConsumingPreferenceActivity 
  1001.                      mChannelArray.add(newChannel); 
  1002.                      mChannelMap.put(jStr, newChannel); 
  1003.                  } 
  1004. + */  
  1005. +// End of  
  1006.              }  
  1007.          }  
  1008.      }  
[java]  view plain  copy
  1. 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.xml  
  2. index 38f7aa5..dcf14db 100755  
  3. --- a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/mtk_string.xml  
  4. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/mtk_string.xml  
  5. @@ -43,7 +43,7 @@  
  6.      <string name="enable_repeat_alert_summary">Para rec al usuario de alertas no leídos interm</string>  
  7.      <string name="enable_all_alert_title">Todas alertas act</string>  
  8.      <string name="enable_all_imminent_alerts_title">Todos mens de amen inm</string>  
  9. -    <string name="enable_cell_broadcast_title">Alertas de Em</string>  
  10. +    <string name="enable_cell_broadcast_title">Alerta de Emergencia</string>  
  11.      <string name="alert_sound_volume">Volumen de sonido de alerta</string>  
  12.      <string name="alert_volume_summary">Aj de vol del sonido</string>  
  13. -</resources>  
  14. \ No newline at end of file  
  15. +</resources>  
  16. 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.xml  
  17. index a2460bb..e8fc8ab 100755  
  18. --- a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/strings.xml  
  19. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-es-rUS/strings.xml  
  20. @@ -11,10 +11,10 @@  
  21.       limitations under the License.  
  22.  -->  
  23.  <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">  
  24. -    <string name="app_label">Alertas de Em</string>  
  25. +    <string name="app_label">Alerta de Emergencia</string>  
  26.      <string name="sms_cb_settings">Config del Conm de Alertas</string>  
  27.      <string name="button_dismiss">"Aceptar"</string>  
  28. -    <string name="no_cell_broadcasts">"No hay alertas activas en tu zona. Puedes modificar la configuración de las alertas en el menú Configuración."</string>  
  29. +    <string name="no_cell_broadcasts">"No hay alertas activas en tu zona."</string>  
  30.      <string name="menu_preferences">"Configuración"</string>  
  31.      <string name="menu_delete_all">Elim todas alertas</string>  
  32.      <string name="message_options">"Opciones de mensaje"</string>  
  33. @@ -30,11 +30,11 @@  
  34.      <string name="etws_earthquake_and_tsunami_warning">"Alerta de terremotos y tsunamis"</string>  
  35.      <string name="etws_test_message">"Mensaje de prueba de ETWS"</string>  
  36.      <string name="etws_other_emergency_type">"Advertencia de emergencia"</string>  
  37. -    <string name="cmas_presidential_level_alert">"Alerta presidencial"</string>  
  38. +    <string name="cmas_presidential_level_alert">"Alerta de Emergencia"</string>  
  39.      <string name="cmas_extreme_alert">"Alerta de emergencia: extrema"</string>  
  40.      <string name="cmas_severe_alert">"Alerta de emergencia: grave"</string>  
  41.      <string name="cmas_amber_alert">Aler ÁMBAR</string>  
  42. -    <string name="cmas_required_monthly_test">"Prueba mensual de alerta de emergencia"</string>  
  43. +    <string name="cmas_required_monthly_test">"Alerta de Emergencia"</string>  
  44.      <string name="cmas_exercise_alert">"Alerta de emergencia (ejercicio)"</string>  
  45.      <string name="cmas_operator_defined_alert">"Alerta de emergencia (operador)"</string>  
  46.      <string name="pws_other_message_identifiers">"Alerta de emergencia"</string>  
  47. 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.xml  
  48. index a97c363..d66f27b 100644  
  49. --- a/mediatek/proprietary/packages/apps/CMASReceiver/res/values-zh-rCN/strings.xml  
  50. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/values-zh-rCN/strings.xml  
  51. @@ -19,7 +19,7 @@  
  52.      <string name="app_label" msgid="7559008249836700599">"紧急警报"</string>  
  53.      <string name="sms_cb_settings" msgid="971917159442705371">"警报开关设置"</string>  
  54.      <string name="button_dismiss" msgid="1234221657930516287">"确定"</string>  
  55. -    <string name="no_cell_broadcasts" msgid="5409324337492758562">"您所在的区域没有任何活动的警报。您可以使用“设置”菜单选项更改警报设置。"</string>  
  56. +    <string name="no_cell_broadcasts" msgid="5409324337492758562">"您所在的区域没有任何活动的警报。"</string>  
  57.      <string name="menu_preferences" msgid="3596514894131599202">"设置"</string>  
  58.      <string name="menu_delete_all" msgid="3940997343921149800">"删除所有警报"</string>  
  59.      <string name="message_options" msgid="3178489901903589574">"短信选项"</string>  
  60. diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/values/strings.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/values/strings.xml  
  61. index 46e2d51..85599b7 100755  
  62. --- a/mediatek/proprietary/packages/apps/CMASReceiver/res/values/strings.xml  
  63. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/values/strings.xml  
  64. @@ -27,7 +27,7 @@  
  65.      <string name="button_dismiss">OK</string>  
  66.    
  67.      <!-- Text for list view when empty (no broadcasts). [CHAR LIMIT=200] -->  
  68. -    <string name="no_cell_broadcasts">There are no active alerts in your area. You can change the Alert settings using the Settings menu option.</string>  
  69. +    <string name="no_cell_broadcasts">There are no active alerts in your area.</string>  
  70.    
  71.      <!-- Menu item for accessing application settings. [CHAR LIMIT=30] -->  
  72.      <string name="menu_preferences">Settings</string>  
  73. diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml  
  74. index c86e3d2..2230494 100755  
  75. --- a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml  
  76. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml  
  77. @@ -4,11 +4,11 @@  
  78.      <setting key="enable_cmas_presidential_threat_alerts" defaultValue="true"/>  
  79.      <setting key="enable_cmas_imminent_threat_alerts" defaultValue="true"/>  
  80.      <setting key="enable_cmas_amber_threat_alerts" defaultValue="true"/>  
  81. -    <setting key="enable_cmas_speech_threat_alerts" defaultValue="true"/>  
  82. +    <setting key="enable_cmas_speech_threat_alerts" defaultValue="false"/>  
  83.      <setting key="cmas_preview_alert_tone" defaultValue="true"/>  
  84.      <setting key="enable_cmas_extreme_threat_alerts"  defaultValue="true"/>  
  85.      <setting key="enable_cmas_severe_threat_alerts"  defaultValue="true"/>  
  86. -    <setting key="enable_cmas_rmt_support"  defaultValue="false"/>  
  87. -    <setting key="enable_cmas_exercise_support"  defaultValue="false"/>  
  88. +    <setting key="enable_cmas_rmt_support"  defaultValue="true"/>  
  89. +    <setting key="enable_cmas_exercise_support"  defaultValue="true"/>  
  90.      <setting key="enable_cmas_repeat_alert" defaultValue="true"/>  
  91.  </resources>  
  92. diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences.xml  
  93. index 340830a..e509d73 100755  
  94. --- a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences.xml  
  95. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences.xml  
  96. @@ -57,7 +57,7 @@  
  97.                              android:summary="@string/enable_alert_vibrate_summary"  
  98.                              android:title="@string/enable_alert_vibrate_title" />  
  99.    
  100. -        <CheckBoxPreference android:defaultValue="true"  
  101. +        <CheckBoxPreference android:defaultValue="false"  
  102.                              android:key="enable_alert_speech"  
  103.                              android:summary="@string/enable_alert_speech_summary"  
  104.                              android:title="@string/enable_alert_speech_title" />  
  105. diff --git a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml  
  106. index 18a8dce..a8dee3e 100755  
  107. --- a/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml  
  108. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml  
  109. @@ -67,7 +67,7 @@  
  110.    
  111.          <!-- Enable Speak alert message -->  
  112.          <com.mediatek.cellbroadcastreceiver.CheckBoxAndSettingsPreference  
  113. -            android:defaultValue="true"  
  114. +            android:defaultValue="false"  
  115.              android:key="enable_cmas_speech_threat_alerts"  
  116.              android:summary="@string/enable_alert_speech_summary"  
  117.              android:title="@string/enable_alert_speech_title" />  
  118. 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.java  
  119. index 3fa2394..f3c8601 100755  
  120. --- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASAlertFullWindow.java  
  121. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASAlertFullWindow.java  
  122. @@ -417,6 +417,11 @@ public class CMASAlertFullWindow {  
  123.              Log.i(TAG, "updateAlertIcon::this is normal message");  
  124.              titleTextView.setText(titleId);  
  125.          }  
  126. +        if (message.getServiceCategory() == 4370) {  
  127. +            titleTextView.setText("Alerta de Emergencia");  
  128. +        } else if (message.getServiceCategory() == 4380) {  
  129. +            titleTextView.setText("Alerta de Emergencia");  
  130. +        }  
  131.    
  132.          TextView textViewMsgBody = (TextView) view.findViewById(R.id.message);  
  133.  /*        if(getShowMsgId()) {  
  134. 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.java  
  135. index 1eb829d..f701f0e 100755  
  136. --- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASPresentationService.java  
  137. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CMASPresentationService.java  
  138. @@ -255,7 +255,7 @@ public class CMASPresentationService extends Service {  
  139.    
  140.      private boolean getEnbaleAlertSpeech() {  
  141.          return PreferenceManager.getDefaultSharedPreferences(this).getBoolean(  
  142. -                CheckBoxAndSettingsPreference.KEY_ENABLE_ALERT_SPEECH, true);  
  143. +                CheckBoxAndSettingsPreference.KEY_ENABLE_ALERT_SPEECH, false);  
  144.      }  
  145.    
  146.  }  
  147. 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.java  
  148. index 429634f..5695da0 100755  
  149. --- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertAudio.java  
  150. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertAudio.java  
  151. @@ -171,11 +171,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI  
  152.    
  153.                  ///M: add for repeat alert feature. @{  
  154.                  case REPEAT_ALERT_START:  
  155. -                    if (DBG) log("REPEAT_ALERT_START");  
  156. -                    if (!mRepeatPattern.isEmpty()) {  
  157. -                        mRepeatPattern.remove(0);  
  158. -                        play();  
  159. -                    }  
  160. +                    schedulePlay();  
  161.                      break;  
  162.                  /// @}  
  163.                  default:  
  164. @@ -200,7 +196,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI  
  165.          @Override  
  166.          public void onReceive(Context arg0, Intent arg1) {  
  167.              Log.d(TAG, "receive volume change broadcast, stop sound and vibration alert");  
  168. -            stop();  
  169. +            //stop();  
  170.          }  
  171.    
  172.      };  
  173. @@ -274,7 +270,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI  
  174.          }  
  175.    
  176.          /// M: add for repeat alert feature. cancel the next schedule when destroy. @{  
  177. -        if (mEnableRepeat && (mRepeatPattern != null) && !mRepeatPattern.isEmpty()) {  
  178. +        if (mEnableRepeat) {  
  179.              cancelRepeat();  
  180.          }  
  181.          /// @}  
  182. @@ -324,37 +320,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI  
  183.          mEnableVibrate = intent.getBooleanExtra(ALERT_AUDIO_VIBRATE_EXTRA, true);  
  184.          boolean forceVibrate = intent.getBooleanExtra(ALERT_AUDIO_ETWS_VIBRATE_EXTRA, false);  
  185.    
  186. -        switch (mAudioManager.getRingerMode()) {  
  187. -            case AudioManager.RINGER_MODE_SILENT:  
  188. -                if (DBG) log("Ringer mode: silent");  
  189. -                mEnableVibrate = forceVibrate;  
  190. -                mEnableAudio = false;  
  191. -                break;  
  192. -  
  193. -            case AudioManager.RINGER_MODE_VIBRATE:  
  194. -                if (DBG) log("Ringer mode: vibrate");  
  195. -                mEnableAudio = false;  
  196. -                break;  
  197. -  
  198. -            case AudioManager.RINGER_MODE_NORMAL:  
  199. -            default:  
  200. -                if (DBG) log("Ringer mode: normal");  
  201. -                /// M: add to distinguish general and outdoor mode. Do not vibrate  
  202. -                // in general mode. @{  
  203. -                if (!mAudioManager.shouldVibrate(AudioManager.VIBRATE_TYPE_NOTIFICATION)) {  
  204. -                    mEnableVibrate = forceVibrate;  
  205. -                }  
  206. -                /// @}  
  207. -                mEnableAudio = true;  
  208. -                break;  
  209. -        }  
  210. -  
  211. -        ICmasMainSettingsExt optSetAlertAudioVibration = (ICmasMainSettingsExt)  
  212. -                CellBroadcastPluginManager.getCellBroadcastPluginObject(  
  213. -                CellBroadcastPluginManager.CELLBROADCAST_PLUGIN_TYPE_MAIN_SETTINGS);  
  214. -  
  215. -            mEnableAudio = optSetAlertAudioVibration.setAlertVolumeVibrate(mMessageId, mEnableAudio);  
  216. -            mEnableVibrate = optSetAlertAudioVibration.setAlertVolumeVibrate(mMessageId, mEnableVibrate);  
  217. +        mEnableAudio = true;  
  218.    
  219.          Log.d(TAG, "mEnableAudio:" + mEnableAudio + ", mEnableVibrate:" + mEnableVibrate);  
  220.          if (mMessageBody != null && mEnableAudio) {  
  221. @@ -432,15 +398,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI  
  222.                  else {  
  223.                      float volume = 1.0f;  
  224.    
  225. -                    ICmasMainSettingsExt optGetAlertVolume = (ICmasMainSettingsExt)  
  226. -                        CellBroadcastPluginManager.getCellBroadcastPluginObject(  
  227. -                        CellBroadcastPluginManager.CELLBROADCAST_PLUGIN_TYPE_MAIN_SETTINGS);  
  228. -  
  229. -                if (optGetAlertVolume != null) {  
  230. -                    volume = optGetAlertVolume.getAlertVolume(mMessageId);  
  231. -                  }  
  232. -                Log.d(TAG , "Alert volume: " + volume);  
  233. -                mMediaPlayer.setVolume(volume, volume);  
  234. +                    mMediaPlayer.setVolume(volume, volume);  
  235.                 }  
  236.    
  237.                  // start playing alert audio (unless master volume is vibrate only or silent).  
  238. @@ -455,9 +413,10 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI  
  239.                  }  
  240.    
  241.                  int streamType = AudioManager.STREAM_NOTIFICATION;  
  242. -                if (forceAlert() || forcePresidentAlert()) {  
  243. -                    streamType = AudioManager.STREAM_ALARM;  
  244. -                }  
  245. +                streamType = AudioManager.STREAM_ALARM;  
  246. +                mAudioManager.setStreamVolume(streamType,  
  247. +                        mAudioManager.getStreamMaxVolume(streamType),  
  248. +                        AudioManager.FLAG_PLAY_SOUND);  
  249.                  mAudioManager.requestAudioFocus(null, streamType,  
  250.                          AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);  
  251.                  startAlarm(mMediaPlayer);  
  252. @@ -484,9 +443,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI  
  253.      private void startAlarm(MediaPlayer player)  
  254.              throws java.io.IOException, IllegalArgumentException, IllegalStateException {  
  255.          int streamType = AudioManager.STREAM_NOTIFICATION;  
  256. -        if (forceAlert() || forcePresidentAlert()) {  
  257. -            streamType = AudioManager.STREAM_ALARM;  
  258. -        }  
  259. +        streamType = AudioManager.STREAM_ALARM;  
  260.          player.setAudioStreamType(streamType);  
  261.          player.setLooping(true);  
  262.          player.prepare();  
  263. @@ -566,10 +523,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI  
  264.              play();  
  265.           //}  
  266.          if (mEnableRepeat) {  
  267. -            for (int i = 0; i < mRepeatPattern.size(); i++) {  
  268. -                mHandler.sendMessageDelayed(mHandler.obtainMessage(REPEAT_ALERT_START),  
  269. -                        mRepeatPattern.get(i));  
  270. -            }  
  271. +            mHandler.sendMessageDelayed(mHandler.obtainMessage(REPEAT_ALERT_START), mDuration + 500);  
  272.          }  
  273.      }  
  274.    
  275. 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.java  
  276. index 56a6fce..1763563 100755  
  277. --- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertService.java  
  278. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertService.java  
  279. @@ -217,9 +217,6 @@ public class CellBroadcastAlertService extends Service {  
  280.                              return true;  
  281.                          case ICmasDuplicateMessageExt.NEW_CMAS_PROCESS: // NewCMASProcess  
  282.                              // handle update msg  
  283. -                            if (!handleUpdatedCB(provider, cbm)) {  
  284. -                                return true;  
  285. -                            }  
  286.                              Log.d(TAG, "before insertNewBroadcast, sn " + cbm.getSerialNumber());  
  287.                              //if (provider.insertNewBroadcast(cbm)) {  
  288.                              long rowId = provider.addNewBroadcast(cbm);  
  289. @@ -421,7 +418,7 @@ public class CellBroadcastAlertService extends Service {  
  290.                          SharedPreferences rmtPrefs = this.getSharedPreferences(  
  291.                              PREF_NAME, MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE  
  292.                              | MODE_MULTI_PROCESS);  
  293. -                    boolean resOfRmt = rmtPrefs.getBoolean(CellBroadcastConfigService.ENABLE_CMAS_RMT_SUPPORT, false);  
  294. +                    boolean resOfRmt = rmtPrefs.getBoolean(CellBroadcastConfigService.ENABLE_CMAS_RMT_SUPPORT, true);  
  295.                      Log.d(TAG, "in isMessageEnabledByUser , CMAS setting " + resOfRmt);  
  296.                      return resOfRmt;  
  297.                      }  
  298. @@ -431,7 +428,7 @@ public class CellBroadcastAlertService extends Service {  
  299.                      SharedPreferences exePrefs = this.getSharedPreferences(  
  300.                              PREF_NAME, MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE  
  301.                              | MODE_MULTI_PROCESS);  
  302. -                    boolean resOfexe = exePrefs.getBoolean(CellBroadcastConfigService.ENABLE_CMAS_EXERCISE_SUPPORT, false);  
  303. +                    boolean resOfexe = exePrefs.getBoolean(CellBroadcastConfigService.ENABLE_CMAS_EXERCISE_SUPPORT, true);  
  304.                      Log.d(TAG, "in isMessageEnabledByUser , EXER setting " + resOfexe);  
  305.                      return resOfexe;  
  306.                  default:  
  307. @@ -482,7 +479,7 @@ public class CellBroadcastAlertService extends Service {  
  308.    
  309.          String messageBody = message.getMessageBody();  
  310.    
  311. -        if (prefs.getBoolean(CellBroadcastSettings.KEY_ENABLE_ALERT_SPEECH, true)) {  
  312. +        if (prefs.getBoolean(CellBroadcastSettings.KEY_ENABLE_ALERT_SPEECH, false)) {  
  313.              audioIntent.putExtra(CellBroadcastAlertAudio.ALERT_AUDIO_MESSAGE_BODY, messageBody);  
  314.    
  315.              String language = message.getLanguageCode();  
  316. 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.java  
  317. index 8937670..4678655 100755  
  318. --- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java  
  319. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java  
  320. @@ -242,10 +242,10 @@ public class CellBroadcastConfigService extends IntentService {  
  321.              if (intent.getBooleanExtra("isBootCompleted"false)) {  
  322.                  SharedPreferences.Editor editor = prefs.edit();  
  323.                  if (!prefs.contains(ENABLE_CMAS_RMT_SUPPORT)) {  
  324. -                    editor.putBoolean(ENABLE_CMAS_RMT_SUPPORT, false);  
  325. +                    editor.putBoolean(ENABLE_CMAS_RMT_SUPPORT, true);  
  326.                  }  
  327.                  if (!prefs.contains(ENABLE_CMAS_EXERCISE_SUPPORT)) {  
  328. -                    editor.putBoolean(ENABLE_CMAS_EXERCISE_SUPPORT, false);  
  329. +                    editor.putBoolean(ENABLE_CMAS_EXERCISE_SUPPORT, true);  
  330.                  }  
  331.                  editor.commit();  
  332.                  editor.clear();  
  333. @@ -255,10 +255,11 @@ public class CellBroadcastConfigService extends IntentService {  
  334.              boolean enableCB = false;  
  335.              if (!prefs.contains(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST)) {  
  336.                  enableCB = true;  
  337. +                prefs.edit().putBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true).commit();  
  338.                  Log.d(TAG, "do not contain the enable_cell_broadcast ");  
  339.              } else {  
  340.                  enableCB = prefs.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST,  
  341. -                        false);  
  342. +                        true);  
  343.                  Log.d(TAG, "contain the enable_cell_broadcast,enableCB = " + enableCB);  
  344.              }  
  345.              Log.d(TAG, "SMS_STATE_CHANGED_ACTION enableCB " + enableCB);  
  346. 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.java  
  347. index 26658cd..bf1b4e7 100755  
  348. --- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastListActivity.java  
  349. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastListActivity.java  
  350. @@ -188,8 +188,6 @@ public class CellBroadcastListActivity extends ListActivity {  
  351.      public boolean onCreateOptionsMenu(Menu menu) {  
  352.          menu.add(0, MENU_DELETE_ALL, 0, R.string.menu_delete_all).setIcon(  
  353.                  android.R.drawable.ic_menu_delete);  
  354. -        menu.add(0, MENU_PREFERENCES, 0, R.string.menu_preferences).setIcon(  
  355. -                android.R.drawable.ic_menu_preferences);  
  356.          return super.onCreateOptionsMenu(menu);  
  357.      }  
  358.    
  359. @@ -200,11 +198,6 @@ public class CellBroadcastListActivity extends ListActivity {  
  360.                  confirmDeleteThread(truenull);  
  361.                  break;  
  362.    
  363. -            case MENU_PREFERENCES:  
  364. -                Intent intent = new Intent(this, CellBroadcastMainSettings.class);  
  365. -                startActivity(intent);  
  366. -                break;  
  367. -  
  368.              default:  
  369.                  return true;  
  370.          }  
  371. 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.java  
  372. index 63785e4..d2b3c9c 100755  
  373. --- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.java  
  374. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.java  
  375. @@ -98,7 +98,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver {  
  376.              // ignore incoming messages if CMAS option is off.  
  377.              SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);  
  378.              boolean enableCB = prefs.getBoolean(  
  379. -                    CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, false);  
  380. +                    CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true);  
  381.    
  382.              if (!enableCB) {  
  383.                  if (CellBroadcastReceiverApp.isCellAreaInTw()) {  
  384. 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.java  
  385. index 7ab34bc..0efe6ca 100755  
  386. --- a/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastSubSettings.java  
  387. +++ b/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastSubSettings.java  
  388. @@ -41,7 +41,7 @@ public class CellBroadcastSubSettings extends PreferenceActivity implements  
  389.          mEnableSevereCheckBox = (CheckBoxAndSettingsPreference) findPreference(CheckBoxAndSettingsPreference.KEY_ENABLE_CMAS_SEVERE_ALERTS);  
  390.          setAlertPreferenceEnable(!mEnableAllCheckBox.isChecked());  
  391.          SharedPreferences pre = getSharedPreferences("com.mediatek.cellbroadcastreceiver_preferences"0);  
  392. -        boolean imminentAlertChecked = pre.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CMAS_IMMINENT_ALERTS, false);  
  393. +        boolean imminentAlertChecked = pre.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CMAS_IMMINENT_ALERTS, true);  
  394.          if (!imminentAlertChecked) {  
  395.              mEnableAllCheckBox.setEnabled(false);  
  396.              mEnableSevereCheckBox.setEnabled(false);  
  397. 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.java  
  398. index d49ddb7..aef1aa1 100644  
  399. --- a/mediatek/proprietary/packages/apps/CmasEM/src/com/mediatek/engineermodecmas/CmasSettings.java  
  400. +++ b/mediatek/proprietary/packages/apps/CmasEM/src/com/mediatek/engineermodecmas/CmasSettings.java  
  401. @@ -95,8 +95,8 @@ public class CmasSettings extends PreferenceActivity implements  
  402.          SharedPreferences prefs = mCmasContext.getSharedPreferences(PREF_NAME,  
  403.                  MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE);  
  404.    
  405. -        boolean rmtValue = prefs.getBoolean(CMAS_RMT_KEY, false);  
  406. -        boolean exerciseValue = prefs.getBoolean(CMAS_EXERCISE_KEY, false);  
  407. +        boolean rmtValue = prefs.getBoolean(CMAS_RMT_KEY, true);  
  408. +        boolean exerciseValue = prefs.getBoolean(CMAS_EXERCISE_KEY, true);  
  409.    
  410.          mCheckBoxRmt.setChecked(rmtValue);  
  411.          mCheckBoxExercise.setChecked(exerciseValue);  

二十三: 彩信附件最大600K,超过了需要弹出警告

(vendor/)

[java]  view plain  copy
  1. diff --git a/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml b/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml  
  2. index da3f0dc..70c4b87 100755  
  3. --- a/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml  
  4. +++ b/mediatek/proprietary/packages/apps/Mms/res/values/mtk_arrays.xml  
  5. @@ -44,11 +44,13 @@  
  6.          <item>100K</item>  
  7.          <item>200K</item>  
  8.          <item>300K</item>  
  9. +        <item>600K</item>  
  10.      </string-array>  
  11.      <string-array name="pref_mms_size_limit_values" translatable="false">  
  12.          <item>100</item>  
  13.          <item>200</item>  
  14.          <item>300</item>  
  15. +        <item>600</item>  
  16.      </string-array>    
  17.      <string-array name="pref_key_mms_priority_choices">  
  18.          <item>High</item>  
  19. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/multicardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/multicardpreferences.xml  
  20. index 4c7a6ca..782b6b8 100755  
  21. --- a/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/multicardpreferences.xml  
  22. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/multicardpreferences.xml  
  23. @@ -130,7 +130,7 @@  
  24.              android:title="@string/pref_title_mms_size_limit"  
  25.              android:dialogTitle="@string/pref_title_mms_size_limit"  
  26.              android:summary="@string/pref_summary_mms_size_limit"  
  27. -            android:defaultValue="300"  
  28. +            android:defaultValue="600"  
  29.              android:entries="@array/pref_mms_size_limit_choices"  
  30.              android:entryValues="@array/pref_mms_size_limit_values"/>  
  31.     <ListPreference  
  32. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/preferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/preferences.xml  
  33. index e6dd519..3eda079 100644  
  34. --- a/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/preferences.xml  
  35. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml-sw600dp/preferences.xml  
  36. @@ -135,7 +135,7 @@  
  37.              android:title="@string/pref_title_mms_size_limit"  
  38.              android:dialogTitle="@string/pref_title_mms_size_limit"  
  39.              android:summary="@string/pref_summary_mms_size_limit"  
  40. -            android:defaultValue="300"  
  41. +            android:defaultValue="600"  
  42.              android:entries="@array/pref_mms_size_limit_choices"  
  43.              android:entryValues="@array/pref_mms_size_limit_values"/>  
  44.      <ListPreference  
  45. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/generalslotpreference.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/generalslotpreference.xml  
  46. index e5ff096..dd77bcd 100755  
  47. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/generalslotpreference.xml  
  48. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/generalslotpreference.xml  
  49. @@ -82,7 +82,7 @@  
  50.              android:title="@string/pref_title_mms_size_limit"  
  51.              android:dialogTitle="@string/pref_title_mms_size_limit"  
  52.              android:summary="@string/pref_summary_mms_size_limit"  
  53. -            android:defaultValue="300"  
  54. +            android:defaultValue="600"  
  55.              android:entries="@array/pref_mms_size_limit_choices"  
  56.              android:entryValues="@array/pref_mms_size_limit_values" />  
  57.          <ListPreference  
  58. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml  
  59. index 3e87525..261b7a3 100644  
  60. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml  
  61. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/mms_config.xml  
  62. @@ -26,13 +26,13 @@  
  63.      <bool name="enabledMMS">true</bool>  
  64.    
  65.      <!-- Maximum message size in bytes for a MMS message -->  
  66. -    <int name="maxMessageSize">307200</int>  
  67. +    <int name="maxMessageSize">614400</int>  
  68.    
  69.      <!-- Maximum height for an attached image -->  
  70. -    <int name="maxImageHeight">480</int>  
  71. +    <int name="maxImageHeight">960</int>  
  72.    
  73.      <!-- Maximum width for an attached image -->  
  74. -    <int name="maxImageWidth">640</int>  
  75. +    <int name="maxImageWidth">1280</int>  
  76.    
  77.      <!-- Maximum number of SMS message to save per thread before auto-delete kicks in.  
  78.           This is the default value. -->  
  79. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/mmsmulticardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/mmsmulticardpreferences.xml  
  80. index a584201..c4d8149 100755  
  81. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/mmsmulticardpreferences.xml  
  82. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/mmsmulticardpreferences.xml  
  83. @@ -43,7 +43,7 @@  
  84.              android:title="@string/pref_title_mms_size_limit"  
  85.              android:dialogTitle="@string/pref_title_mms_size_limit"  
  86.              android:summary="@string/pref_summary_mms_size_limit"  
  87. -            android:defaultValue="300" android:entries="@array/pref_mms_size_limit_choices"  
  88. +            android:defaultValue="600" android:entries="@array/pref_mms_size_limit_choices"  
  89.              android:entryValues="@array/pref_mms_size_limit_values" />  
  90.          <ListPreference android:key="pref_key_mms_priority"  
  91.              android:title="@string/mms_priority_label" android:dialogTitle="@string/mms_priority_label"  
  92. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/mmspreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/mmspreferences.xml  
  93. index 7219d8d..87ea5ff 100755  
  94. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/mmspreferences.xml  
  95. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/mmspreferences.xml  
  96. @@ -45,7 +45,7 @@  
  97.              android:title="@string/pref_title_mms_size_limit"  
  98.              android:dialogTitle="@string/pref_title_mms_size_limit"  
  99.              android:summary="@string/pref_summary_mms_size_limit"  
  100. -            android:defaultValue="300" android:entries="@array/pref_mms_size_limit_choices"  
  101. +            android:defaultValue="600" android:entries="@array/pref_mms_size_limit_choices"  
  102.              android:entryValues="@array/pref_mms_size_limit_values" />  
  103.          <ListPreference android:key="pref_key_mms_priority"  
  104.              android:title="@string/mms_priority_label" android:dialogTitle="@string/mms_priority_label"  
  105. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml  
  106. index 70a9ebe..3aba9d1 100755  
  107. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml  
  108. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/multicardpreferences.xml  
  109. @@ -119,7 +119,7 @@  
  110.              android:title="@string/pref_title_mms_size_limit"  
  111.              android:dialogTitle="@string/pref_title_mms_size_limit"  
  112.              android:summary="@string/pref_summary_mms_size_limit"  
  113. -            android:defaultValue="300"  
  114. +            android:defaultValue="1000"  
  115.              android:entries="@array/pref_mms_size_limit_choices"  
  116.              android:entryValues="@array/pref_mms_size_limit_values"/>  
  117.     <ListPreference  
  118. diff --git a/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml b/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml  
  119. index 0017a83..20f636d 100644  
  120. --- a/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml  
  121. +++ b/mediatek/proprietary/packages/apps/Mms/res/xml/preferences.xml  
  122. @@ -127,7 +127,7 @@  
  123.              android:title="@string/pref_title_mms_size_limit"  
  124.              android:dialogTitle="@string/pref_title_mms_size_limit"  
  125.              android:summary="@string/pref_summary_mms_size_limit"  
  126. -            android:defaultValue="300"  
  127. +            android:defaultValue="600"  
  128.              android:entries="@array/pref_mms_size_limit_choices"  
  129.              android:entryValues="@array/pref_mms_size_limit_values"/>  
  130.      <ListPreference  
  131. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java  
  132. index 590e8f0..745a4f1 100755  
  133. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java  
  134. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java  
  135. @@ -95,7 +95,7 @@ public class MmsConfig {  
  136.       */  
  137.      private static boolean mTransIdEnabled = false;  
  138.      private static int mMmsEnabled = 1;                         // default to true  
  139. -    private static int mMaxMessageSize = 300 * 1024;            // default to 300k max size  
  140. +    private static int mMaxMessageSize = 600 * 1024;            // default to 300k max size  
  141.      private static String mUserAgent = DEFAULT_USER_AGENT;  
  142.      private static String mUaProfTagName = DEFAULT_HTTP_KEY_X_WAP_PROFILE;  
  143.      private static String mUaProfUrl = null;  
  144. @@ -152,7 +152,7 @@ public class MmsConfig {  
  145.      private static final int RECIPIENTS_LIMIT = 50;  
  146.    
  147.      /// M: Mms size limit, default 300K.  
  148. -    private static int mUserSetMmsSizeLimit = 300;  
  149. +    private static int mUserSetMmsSizeLimit = 600;  
  150.      /// M: Receive Mms size limit for 2G network  
  151.      private static int mReceiveMmsSizeLimitFor2G = 200;  
  152.      /// M: Receive Mms size limit for TD network  
  153. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java  
  154. index 91f4ed0..b63b37f 100644  
  155. --- a/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java  
  156. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/MessageUtils.java  
  157. @@ -3095,14 +3095,16 @@ public class MessageUtils {  
  158.          String mSizeLimitTemp = null;  
  159.          int mMmsSizeLimit = 0;  
  160.          if (sp != null) {  
  161. -            mSizeLimitTemp = sp.getString("pref_key_mms_size_limit""300");  
  162. +            mSizeLimitTemp = sp.getString("pref_key_mms_size_limit""600");  
  163.          }  
  164.          if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("100")) {  
  165.              mMmsSizeLimit = 100;  
  166.          } else if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("200")) {  
  167.              mMmsSizeLimit = 200;  
  168. -        } else {  
  169. +        } else if (mSizeLimitTemp != null && 0 == mSizeLimitTemp.compareTo("300")) {  
  170.              mMmsSizeLimit = 300;  
  171. +        } else {  
  172. +            mMmsSizeLimit = 600;  
  173.          }  
  174.          MmsConfig.setUserSetMmsSizeLimit(mMmsSizeLimit);  
  175.      }  
  176. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/mms/op/ClassifyGeneralFragment.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/mms/op/ClassifyGeneralFragment.java  
  177. index 0446eaa..291f039 100755  
  178. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/mms/op/ClassifyGeneralFragment.java  
  179. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/mms/op/ClassifyGeneralFragment.java  
  180. @@ -211,7 +211,7 @@ public class ClassifyGeneralFragment extends PreferenceFragment  
  181.    
  182.      public static final int MIN_MESSAGE_COUNT_PER_THREAD = 2;  
  183.    
  184. -    public static final String SIZE_LIMIT_300 = "300";  
  185. +    public static final String SIZE_LIMIT_300 = "600";  
  186.    
  187.      public static final String CREATION_MODE_FREE = "FREE";  
  188.    
  189. diff --git a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/MmsPreferenceActivity.java b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/MmsPreferenceActivity.java  
  190. index 5b3ac68..dd2769f 100755  
  191. --- a/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/MmsPreferenceActivity.java  
  192. +++ b/mediatek/proprietary/packages/apps/Mms/src/com/mediatek/setting/MmsPreferenceActivity.java  
  193. @@ -146,7 +146,7 @@ public class MmsPreferenceActivity extends PreferenceActivity  
  194.    
  195.      private static final String SIZE_LIMIT_200 = "200";  
  196.    
  197. -    private static final String SIZE_LIMIT_300 = "300";  
  198. +    private static final String SIZE_LIMIT_300 = "600";  
  199.    
  200.      private Handler mSMSHandler = new Handler();  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值