android8.0 settings客戶的需求記錄11

1,設置---安全---“未知來源”開關默認打開。

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

<bool name="def_install_non_market_apps">true</bool>

2設置-WLAN-添加網絡名稱爲10個字符,請修改爲20個字符。

packages/apps/Settings/res/layout/wifi_dialog.xml

<EditTextandroid:id="@+id/ssid"

......

android:maxLength="20"

.......

3請修改系統默認時間爲:2018年1月1日

frameworks/base/services/java/com/android/server/SystemServer.java

private staticfinallongEARLIEST_SUPPORTED_TIME=1514736000000;//86400 * 1000; //以毫秒爲單位

4連接WIFI,WIFI已連接,可以正常上網,顯示“已連接,但無法訪問互聯網”,顯示不對,請修改

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

<integername="def_captive_portal_detection_enabled"translatable="false">0</integer>

frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java

        mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.CAPTIVE_PORTAL_MODE, Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE)
                != Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE;

 

5設置-網絡和互聯網-熱點和網絡共享-請將設置WLAN熱點名稱默認改爲"xxx"

frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiApConfigStore.java

    private WifiConfiguration getDefaultApConfiguration() {
        WifiConfiguration config = new WifiConfiguration();
        config.SSID = mContext.getResources().getString(
                R.string.wifi_tether_configure_ssid_default) ;//+ "_" + getRandomIntForDefaultSsid();

        config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
        String randomUUID = UUID.randomUUID().toString();
        //first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
        config.preSharedKey = randomUUID.substring(0, 8) + randomUUID.substring(9, 13);
        return config;
    }

6取消雙擊power鍵打開相機功能

frameworks/base/core/res/res/values/config.xml

<bool name="config_cameraDoubleTapPowerGestureEnabled">false</bool>

7 設置-已關聯的設備-打印,修改爲默認關閉

packages/apps/Settings/src/com/android/settings/print/PrintSettingsFragment.java
index a1c1660..b66021f 100644
@@ -203,6 +203,13 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
                 preference.setTitle(title);
 
                 ComponentName componentName = service.getComponentName();
+
+                if (componentName.toString().contains("com.android.bips.BuiltInPrintService")) {
+                    if (Settings.System.getInt(getContentResolver(),Settings.System.DEFAULT_PRINT_ENABLED, 0) == 0) {
+                        ((PrintManager) getSystemService(Context.PRINT_SERVICE)).setPrintServiceEnabled(componentName, false);
+                        Settings.System.putInt(getContentResolver(),Settings.System.DEFAULT_PRINT_ENABLED, 1);
+                    }
+                }
                 preference.setKey(componentName.flattenToString());
 
                 preference.setFragment(PrintServiceSettingsFragment.class.getName());
8 請將藍牙設置爲默認關閉

frameworks/base/services/core/java/com/android/server/BluetoothManagerService.java

    private final boolean isBluetoothPersistedStateOnBluetooth() {
        return Settings.Global.getInt(mContentResolver,
                Settings.Global.BLUETOOTH_ON, BLUETOOTH_OFF) == BLUETOOTH_ON_BLUETOOTH;
    }

frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<bool name="def_bluetooth_on">false</bool>

9 添加fragment 返回鍵無效

                    setHasOptionsMenu(true);

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()){
                case android.R.id.home:
                    getActivity().onBackPressed();
                    return true;
            }
            return super.onOptionsItemSelected(item);
        }

10 設置-wlan,連接一個wlan-wlan偏好設置-高級-wlan直連-重命名設備改爲"xxx"

frameworks/opt/net/wifi/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java

        private String getPersistedDeviceName() {
            String deviceName = Settings.Global.getString(mContext.getContentResolver(),
                    Settings.Global.WIFI_P2P_DEVICE_NAME);
            if (deviceName == null) {
                // We use the 4 digits of the ANDROID_ID to have a friendly
                // default that has low likelihood of collision with a peer
                String id = Settings.Secure.getString(mContext.getContentResolver(),
                        Settings.Secure.ANDROID_ID);
                return "xxx";//"Android_" + id.substring(0, 4);
            }
            return deviceName;
        }

 

11插入移動卡後,進入設置--網絡和互聯網,顯示的移動網絡爲“CMCC”,請修改爲中國移動


 packages/apps/Settings/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 390917a..12c0257 100644
@@ -107,14 +107,14 @@ public class MobileNetworkPreferenceController extends PreferenceController impl
                 for (SubscriptionInfo subInfo : list) {
                     if (isSubscriptionInService(subInfo.getSubscriptionId())) {
                         if (useSeparator) builder.append(", ");
-                        builder.append(mTelephonyManager.getNetworkOperatorName
+                        builder.append(mTelephonyManager.getSimOperatorName
                                 (subInfo.getSubscriptionId()));
                         useSeparator = true;
                     }
                 }
                 mPreference.setSummary(builder.toString());
             } else {
-                mPreference.setSummary(mTelephonyManager.getNetworkOperatorName());
+                mPreference.setSummary(mTelephonyManager.getSimOperatorName());
             }
         }
     }

12 默認NFC關閉

packages/apps/Nfc/src/com/android/nfc/NfcService.java

static finalbooleanNFC_ON_DEFAULT=false;

 

 

其他原生apk的bug

13 進入日曆後,默認需要爲月

    public static final int DEFAULT_START_VIEW = CalendarController.ViewType.MONTH;
    public static final int DEFAULT_DETAILED_VIEW = CalendarController.ViewType.MONTH;

14 小屏手機,進入相冊瀏覽照片有斷層

 packages/apps/SnapdragonGallery/src/com/android/gallery3d/data/LocalImage.java
index ca07e85..06d6bc3 100644
@@ -174,12 +174,12 @@ public class LocalImage extends LocalMediaItem {
     @Override
     public Job<Bitmap> requestImage(int type) {
         return new LocalImageRequest(mApplication, mPath, dateModifiedInSec,
-                type, filePath, mimeType);
+                type, filePath, mimeType,width);
     }
 
     public static class LocalImageRequest extends ImageCacheRequest {
         private String mLocalFilePath;
-
+        private int mImageWidth;
         LocalImageRequest(GalleryApp application, Path path, long timeModified,
                 int type, String localFilePath) {
             super(application, path, timeModified, type,
@@ -188,10 +188,11 @@ public class LocalImage extends LocalMediaItem {
         }
 
         LocalImageRequest(GalleryApp application, Path path, long timeModified,
-                int type, String localFilePath, String mimeType) {
+                int type, String localFilePath, String mimeType,int width) {
             super(application, path, timeModified, type,
                     MediaItem.getTargetSize(type),localFilePath, mimeType);
             mLocalFilePath = localFilePath;
+            mImageWidth = width;
         }
 
         @Override
@@ -204,8 +205,13 @@ public class LocalImage extends LocalMediaItem {
 //                        .getBitmap(mLocalFilePath, options));
 //            }
 
-            int targetSize = MediaItem.getTargetSize(type);
-
+            //int targetSize = MediaItem.getTargetSize(type);
+            int targetSize = 0;
+            if (mImageWidth ==0) {
+                targetSize = MediaItem.getTargetSize(type);
+            } else {
+                targetSize = mImageWidth;
+            }
             // try to decode from JPEG EXIF
             if (type == MediaItem.TYPE_MICROTHUMBNAIL) {
                 ExifInterface exif = new ExifInterface();

 packages/apps/SnapdragonGallery/src/com/android/gallery3d/ui/TileImageView.java
index 05bc9af..6ab8eef 100644
@@ -154,9 +154,9 @@ public class TileImageView extends GLView {
         mTileDecoder = mThreadPool.submit(new TileDecoder());
         if (sTileSize == 0) {
             if (isHighResolution(context.getAndroidContext())) {
-                sTileSize = 512 ;
+                sTileSize = 5120;
             } else {
-                sTileSize = 256;
+                sTileSize = 2560;
             }
         }
     }

15 日曆--菜單鍵--新建活動必須要先添加一個賬戶才能新建活動,請修改可以新建本地日曆活動。

packages/providers/CalendarProvider/src/com/android/providers/calendar/CalendarDatabaseHelper.java
index 5e3c4b4..1e1bc83 100644
@@ -315,9 +315,11 @@ import java.util.TimeZone;
      * Private constructor, callers except unit tests should obtain an instance through
      * {@link #getInstance(android.content.Context)} instead.
      */
+     private Context mContext;
     /* package */ CalendarDatabaseHelper(Context context) {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
         if (LOGD) Log.d(TAG, "Creating OpenHelper");
+        mContext = context;
 
         mSyncState = new SyncStateContentProviderHelper();
     }
@@ -801,12 +803,35 @@ import java.util.TimeZone;
                 Calendars.CAL_SYNC10 + " TEXT" +
                 ");");
 
+        //insert local account
+        insertLocalAccount(db);
+
         // Trigger to remove a calendar's events when we delete the calendar
         db.execSQL("CREATE TRIGGER calendar_cleanup DELETE ON " + Tables.CALENDARS + " " +
                 "BEGIN " +
                 CALENDAR_CLEANUP_TRIGGER_SQL +
                 "END");
     }
+    //insert local account
+    private void insertLocalAccount(SQLiteDatabase db) {
+        insertAccount(db, "account_name_local", "LOCAL",
+                "local", 700,
+                "local",
+                mContext.getResources().getColor(R.color.local_color), 5);
+    }
+
+    private void insertAccount(SQLiteDatabase db, String accountName, String accountType, String calendarDisplayName, int calendarAccessLevel, String ownerAccount, int calendarColor, int maxReminders) {
+         ContentValues localContentValues = new ContentValues();
+         localContentValues.put("account_name", accountName);
+         localContentValues.put("account_type", accountType);
+         localContentValues.put("calendar_displayName", calendarDisplayName);
+         localContentValues.put("calendar_access_level", Integer.valueOf(calendarAccessLevel));
+         localContentValues.put("ownerAccount", ownerAccount);
+         localContentValues.put("calendar_color", Integer.valueOf(calendarColor));
+         localContentValues.put("sync_events", Integer.valueOf(1));
+         localContentValues.put("maxReminders", Integer.valueOf(maxReminders));
+         db.insert("Calendars", null, localContentValues);
+    }
 

16 視頻--長按任意視頻分享到短信--當短信界面不支持此視頻格式或者分享視頻達到上限時,按返回鍵,無法返回到視頻列表界面,直接返回到主界面,請修改。


 packages/apps/SnapdragonMusic/src/com/android/music/VideoBrowserActivity.java
index 151c2dc..f293023 100644
@@ -355,11 +355,11 @@ public class VideoBrowserActivity extends ListActivity implements MusicUtils.Def
 
     @Override
     public boolean dispatchKeyEvent(KeyEvent event) {
-        if (event.getAction() == KeyEvent.ACTION_UP &&
+        /*if (event.getAction() == KeyEvent.ACTION_UP &&
                 event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
             finish();
             return true;
-        }
+        }*///for 0016170
         return super.dispatchKeyEvent(event);
     }
 

17 視頻--長按任意視頻,彈出的菜單,建議添加“詳細信息”菜單選擇。

---------- packages/apps/SnapdragonMusic/res/layout/video_info.xml -----------
new file mode 100644
index 0000000..b6a6559
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="20dp" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical" >
+        
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/video_title"/>
+
+        <TextView
+            android:id="@+id/video_title_name"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:padding="10dp" />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/video_type"/>
+
+        <TextView
+            android:id="@+id/video_type_name"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:padding="10dp" />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/video_size"/>
+
+        <TextView
+            android:id="@+id/video_size_name"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:padding="10dp" />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/video_path"/>
+
+        <TextView
+            android:id="@+id/video_path_name"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:padding="10dp" />
+        
+    </LinearLayout>
+</ScrollView>

-------------- packages/apps/SnapdragonMusic/res/values/bool.xml --------------
index 5d7d657..04c1920 100755
@@ -32,7 +32,7 @@
     <!-- configuration to support group music by folder path -->
     <bool name="group_by_folder">false</bool>
     <bool name="control_in_statusbar">false</bool>
-    <bool name="delete_video_item">false</bool>
+    <bool name="delete_video_item">true</bool>
     <bool name="disable_animation">false</bool>
     <bool name="add_playlist_by_filemanager">false</bool>
     <bool name="exit_in_notification">false</bool>

------------- packages/apps/SnapdragonMusic/res/values/strings.xml -------------
index a0ccf3c..8d902bc 100755
@@ -440,5 +440,11 @@
     <string name="audio_preview_fail_io">Can\'t open file</string>
     <string name="audio_preview_fail_illegal_state">Illegal state, failed to open file.</string>
     <string name="audio_preview_fail_illegal_argument">Illegal argument, failed to open file.</string>
+    <string name="detail">Detail</string>
+    <string name="video_title">VideoName:</string>
+    <string name="video_type">VideoType:</string>
+    <string name="video_size">VideoSize:</string>
+    <string name="video_path">VideoPath:</string>
+
 </resources>
 

 packages/apps/SnapdragonMusic/src/com/android/music/VideoBrowserActivity.java
index 8420f6f..6f83c5f 100644
@@ -46,10 +46,14 @@ import android.widget.AdapterView.AdapterContextMenuInfo;
 import android.widget.ListView;
 import android.widget.SimpleCursorAdapter;
 import android.widget.Toast;
-
+import android.widget. TextView;
+import android.app.AlertDialog;
 import com.codeaurora.music.custom.PermissionActivity;
 
 import java.lang.Integer;
+import java.io.File;
+import android.text.format.Formatter;
+import android.view.LayoutInflater;
 
 public class VideoBrowserActivity extends ListActivity implements MusicUtils.Defs
 {
@@ -59,6 +63,7 @@ public class VideoBrowserActivity extends ListActivity implements MusicUtils.Def
     private int mSelectedPosition; // Position of selected view
     private static final int SHARE = 0; // Menu to share video
     private static final int DELETE = 1; // Menu to delete video
+    private static final int DETAIL = 2; // Menu to delete video
     private String mFilterString = "";
     private boolean mIsDeleteVideoItem = false;
 
@@ -71,6 +76,11 @@ public class VideoBrowserActivity extends ListActivity implements MusicUtils.Def
     private static final String LOGTAG = "VideoBrowser";
     public static final String BUY_LICENSE = "android.drmservice.intent.action.BUY_LICENSE";
 
+    private String mTrackVideoTitle = "";
+    private String mTrackVideoType = "";
+    private String mTrackVideoSize = "";
+    private String mTrackVideoPath = "";
+
     public VideoBrowserActivity()
     {
     }
@@ -136,9 +146,12 @@ public class VideoBrowserActivity extends ListActivity implements MusicUtils.Def
         }
         // Menu item to share video
         menu.add(0, SHARE, 0, R.string.share);
+
         if (mIsDeleteVideoItem) {
             menu.add(0, DELETE, 0, R.string.delete_item);
         }
+        menu.add(0, DETAIL, 0, R.string.share);
+
     }
 
     @Override
@@ -196,8 +209,38 @@ public class VideoBrowserActivity extends ListActivity implements MusicUtils.Def
                 deleteIntent.putExtras(bundle);
                 startActivity(deleteIntent);
                 return true;
-        }
-        return super.onContextItemSelected(item);
+            case DETAIL:    // add  detail item
+                mCursor.moveToPosition(mSelectedPosition);
+                mTrackVideoTitle = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
+                mTrackVideoType = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));
+                mTrackVideoPath = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
+                File file = new File(mTrackVideoPath);
+                if(file.exists())
+                    mTrackVideoSize = Formatter.formatFileSize(VideoBrowserActivity.this, file.length());
+                showDetails();
+                return true;
+                }
+            return super.onContextItemSelected(item);
+    }
+    // add  detail item
+
+    private void showDetails() {
+        AlertDialog.Builder mDetailDialog =  new AlertDialog.Builder(VideoBrowserActivity.this);
+        View mDetailLayout = LayoutInflater.from(VideoBrowserActivity.this).inflate(R.layout.video_info, null );
+        mDetailDialog.setTitle(R.string.details);
+        mDetailDialog.setView(mDetailLayout);
+        fillData(mDetailLayout);
+        mDetailDialog.show();
+    }
+    private void fillData(View contentView) {
+        TextView titleName = (TextView) contentView.findViewById(R.id.video_title_name);
+        TextView typeName = (TextView) contentView.findViewById(R.id.video_type_name);
+        TextView sizeName = (TextView) contentView.findViewById(R.id.video_size_name);
+        TextView pathName = (TextView) contentView.findViewById(R.id.video_path_name);
+        titleName.setText(mTrackVideoTitle);
+        typeName.setText(mTrackVideoType);
+        sizeName.setText(mTrackVideoSize);
+        pathName.setText(mTrackVideoPath);
     }

 

18 相機--設置---增加“還原默認設置”菜單選項

-------- packages/apps/SnapdragonCamera/res/values-zh-rCN/strings.xml ---------
index 1965b9e..cab7131 100644
@@ -773,5 +773,8 @@
     <string name="help_menu_switcher_3" translatable="true">"和全景模式"</string>
     <string name="pref_camera_selfiemirror_title" translatable="true">"自拍鏡"</string>
 
-
+    <string name="pref_record_title">"還原出廠設置"</string>
+    <string name="pref_record_entry_0">"否"</string>
+    <string name="pref_record_entry_1">"是"</string>
+    <string name="pref_record_default">"0"</string>
 </resources>

------------- packages/apps/SnapdragonCamera/res/values/arrays.xml -------------
index 4066517..4b3d015 100755
@@ -699,5 +699,14 @@
         <item>180</item>
         <item>270</item>
     </string-array>
+    <!-- Camera Preference save path entries -->
+    <string-array name="pref_record_entries" translatable="false">
+        <item>@string/pref_record_entry_0</item>
+        <item>@string/pref_record_entry_1</item>
+    </string-array>
 
+    <string-array name="pref_record_entryvalues" translatable="false">
+        <item>0</item>
+        <item>1</item>
+    </string-array>
 </resources>

------------ packages/apps/SnapdragonCamera/res/values/strings.xml ------------
index 8a4b5b1..f48bc9f 100644
@@ -749,4 +749,9 @@ CHAR LIMIT = NONE] -->
     <string name="remaining_photos_format">%d left</string>
     <string name="initial_recording_seconds">00:00</string>
     <string name="makeup_video_size_limit">Makeup works only under VGA size in video recording.</string>
+
+    <string name="pref_record_title">Record Settings</string>
+    <string name="pref_record_entry_0">no</string>
+    <string name="pref_record_entry_1">yes</string>
+    <string name="pref_record_default">0</string>
  </resources>

-------- packages/apps/SnapdragonCamera/res/xml/camera_preferences.xml --------
index 742c09d..86f78f4 100644
@@ -386,4 +386,9 @@
             camera:title="@string/pref_camera2_camera2_title"
             camera:entries="@array/pref_camera2_camera2_entries"
             camera:entryValues="@array/pref_camera2_camera2_entryvalues" />
+    <ListPreference
+            camera:key="pref_record_key"
+            camera:title="@string/pref_record_title"
+            camera:entries="@array/pref_record_entries"
+            camera:entryValues="@array/pref_record_entryvalues" />
 </PreferenceGroup>

-------- packages/apps/SnapdragonCamera/res/xml/capture_preferences.xml --------
index 1d6ea6c..b78a1c0 100644
@@ -303,4 +303,12 @@
         camera:entryValues="@array/pref_camera2_shutter_sound_entryvalues"
         camera:key="pref_camera2_shutter_sound_key"
         camera:title="@string/pref_camera2_shutter_sound_title" />
+
+    <ListPreference
+            camera:key="pref_record_key"
+            camera:title="@string/pref_record_title"
+            camera:entries="@array/pref_record_entries"
+            camera:entryValues="@array/pref_record_entryvalues" />
+
+
 </PreferenceGroup>

--------- packages/apps/SnapdragonCamera/res/xml/video_preferences.xml ---------
index 2d9e2fb..f4e3a7c 100644
@@ -186,4 +186,11 @@
             camera:title="@string/pref_camera_video_rotation_title"
             camera:entries="@array/pref_camera_video_rotation_entries"
             camera:entryValues="@array/pref_camera_video_rotation_entryvalues" />
+
+    <ListPreference
+            camera:key="pref_record_key"
+            camera:title="@string/pref_record_title"
+            camera:entries="@array/pref_record_entries"
+            camera:entryValues="@array/pref_record_entryvalues" />
+
 </PreferenceGroup>

-- packages/apps/SnapdragonCamera/src/com/android/camera/CameraSettings.java --
index 1f3a99c..7783635 100755
@@ -125,6 +125,7 @@ public class CameraSettings {
 
     public static final String KEY_FACE_RECOGNITION = "pref_camera_facerc_key";
     public static final String KEY_DIS = "pref_camera_dis_key";
+    public static final String KEY_RECORD_MENU = "pref_record_key";
 
     public static final String KEY_LONGSHOT = "pref_camera_longshot_key";
     public static final String KEY_INSTANT_CAPTURE = "pref_camera_instant_capture_key";

----- packages/apps/SnapdragonCamera/src/com/android/camera/PhotoMenu.java -----
index 8e9c6b6..f51719d 100755
@@ -192,7 +192,8 @@ public class PhotoMenu extends MenuController
                 CameraSettings.KEY_QC_CHROMA_FLASH,
                 CameraSettings.KEY_REDEYE_REDUCTION,
                 CameraSettings.KEY_SELFIE_MIRROR,
-                CameraSettings.KEY_SHUTTER_SOUND
+                CameraSettings.KEY_SHUTTER_SOUND,
+                CameraSettings.KEY_RECORD_MENU
         };
 
         mOtherKeys2 = new String[] {
@@ -237,6 +238,7 @@ public class PhotoMenu extends MenuController
                 CameraSettings.KEY_MANUAL_FOCUS,
                 CameraSettings.KEY_SELFIE_MIRROR,
                 CameraSettings.KEY_SHUTTER_SOUND,
+                CameraSettings.KEY_RECORD_MENU,
                 SettingsManager.KEY_CAMERA2
         };
 
@@ -1536,6 +1538,36 @@ public class PhotoMenu extends MenuController
         } else if (notSame(pref, SettingsManager.KEY_CAMERA2, "enable")) {
             mActivity.onModuleSelected(ModuleSwitcher.PHOTO_MODULE_INDEX);
         }
+        //for 0016128 about restore
+        if (notSame(pref, CameraSettings.KEY_RECORD_MENU, "0")) {
+            ListPreference recordPref = mPreferenceGroup.findPreference(CameraSettings.KEY_RECORD_MENU);
+            if (recordPref != null && !"0".equals(recordPref.getValue())) {
+                new Thread() {
+                    public void run() {
+                        reloadPreferences();
+                        restoreTopMenu();
+                        mListener.onRestorePreferencesClicked();
+                    };
+                }.start();
+            }
+        }
+    }
+    //for 0016128 about restore
+    public void restoreTopMenu(){
+        IconListPreference filter_pref = (IconListPreference) mPreferenceGroup
+                .findPreference(CameraSettings.KEY_FILTER_MODE);
+        if (filter_pref != null)
+            ((ImageView)mFilterModeSwitcher).setImageResource(((IconListPreference) filter_pref).getLargeIconIds()[0]);
+        mFilterModeSwitcher.setEnabled(true);
+
+        IconListPreference color_pref = (IconListPreference)mPreferenceGroup.findPreference(CameraSettings.KEY_COLOR_EFFECT);
+        color_pref.setValueIndex(0);
+
+        IconListPreference scene_pref = (IconListPreference)mPreferenceGroup.findPreference(CameraSettings.KEY_SCENE_MODE);
+        scene_pref.setValueIndex(0);
+        if (scene_pref != null)
+            ((ImageView)mSceneModeSwitcher).setImageResource(scene_pref.getThumbnailIds()[0]);
+        mSceneModeSwitcher.setEnabled(true);
     }
 
     public int getOrientation() {

---- packages/apps/SnapdragonCamera/src/com/android/camera/PhotoModule.java ----
index fef1163..26407e8 100644
@@ -154,6 +154,7 @@ public class PhotoModule
     private static final int SWITCH_TO_GCAM_MODULE = 12;
     private static final int ON_PREVIEW_STARTED = 13;
     private static final int INSTANT_CAPTURE = 14;
+    private static final int RESTORE_MENU = 15;//for 0016128 about restore
 
     // The subset of parameters we need to update in setCameraParameters().
     private static final int UPDATE_PARAM_INITIALIZE = 1;
@@ -552,6 +553,15 @@ public class PhotoModule
                     onShutterButtonClick();
                     break;
                 }
+                //for 0016128 about restore
+                case RESTORE_MENU: {
+                    onZoomChanged(0);
+                    mUI.removeLevel2();
+                    mUI.collapseCameraControls();
+                    Storage.setSaveSDCard(false);
+                    onSharedPreferenceChanged();
+                    break;
+                }
             }
         }
     }
@@ -5081,7 +5091,11 @@ public class PhotoModule
     }
     // TODO: Delete this function after old camera code is removed
     @Override
-    public void onRestorePreferencesClicked() {}
+    public void onRestorePreferencesClicked() {
+        //for 0016128 about restore
+        CameraSettings.restorePreferences(mActivity, mPreferences, mParameters);
+        mHandler.sendEmptyMessage(RESTORE_MENU);
+    }
 
 /*
  * Provide a mapping for Jpeg encoding quality levels

----- packages/apps/SnapdragonCamera/src/com/android/camera/VideoMenu.java -----
index 42e618d..4bd3a5c 100644
@@ -117,7 +117,8 @@ public class VideoMenu extends MenuController
                 CameraSettings.KEY_CAMERA_SAVEPATH,
                 CameraSettings.KEY_WHITE_BALANCE,
                 CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE,
-                CameraSettings.KEY_DIS
+                CameraSettings.KEY_DIS,
+                CameraSettings.KEY_RECORD_MENU
         };
         mOtherKeys2 = new String[] {
                 CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE,
@@ -140,7 +141,8 @@ public class VideoMenu extends MenuController
                 CameraSettings.KEY_VIDEO_ROTATION,
                 CameraSettings.KEY_VIDEO_CDS_MODE,
                 CameraSettings.KEY_VIDEO_TNR_MODE,
-                CameraSettings.KEY_VIDEO_SNAPSHOT_SIZE
+                CameraSettings.KEY_VIDEO_SNAPSHOT_SIZE,
+                CameraSettings.KEY_RECORD_MENU
         };
         mFrontBackSwitcher.setVisibility(View.INVISIBLE);
         initSwitchItem(CameraSettings.KEY_CAMERA_ID, mFrontBackSwitcher);
@@ -908,9 +910,34 @@ public class VideoMenu extends MenuController
             mActivity.requestLocationPermission();
         }
 
+        //for 0016128 about restore
+        if (notSame(pref, CameraSettings.KEY_RECORD_MENU, "0")) {
+            ListPreference recordPref = mPreferenceGroup.findPreference(CameraSettings.KEY_RECORD_MENU);
+            if (recordPref != null && !"0".equals(recordPref.getValue())) {
+                new Thread() {
+                    public void run() {
+                        reloadPreferences();
+                        restoreTopMenu();
+                        mListener.onRestorePreferencesClicked();
+                    };
+                }.start();
+            }
+        }
 
         super.onSettingChanged(pref);
     }
+    //for 0016128 about restore
+    public void restoreTopMenu(){
+        IconListPreference filter_pref = (IconListPreference) mPreferenceGroup
+                .findPreference(CameraSettings.KEY_FILTER_MODE);
+        if (filter_pref != null)
+            ((ImageView)mFilterModeSwitcher).setImageResource(((IconListPreference) filter_pref).getLargeIconIds()[0]);
+        mFilterModeSwitcher.setEnabled(true);
+
+        IconListPreference color_pref = (IconListPreference) mPreferenceGroup
+                .findPreference(CameraSettings.KEY_COLOR_EFFECT);
+        color_pref.setValueIndex(0);
+    }
 
     public int getOrientation() {
         return mUI == null ? 0 : mUI.getOrientation();

---- packages/apps/SnapdragonCamera/src/com/android/camera/VideoModule.java ----
index bdf9b83..0cbdda7 100755
@@ -105,6 +105,7 @@ public class VideoModule implements CameraModule,
     private static final int SWITCH_CAMERA = 8;
     private static final int SWITCH_CAMERA_START_ANIMATION = 9;
     private static final int HANDLE_FLASH_TORCH_DELAY = 10;
+    private static final int RESTORE_MENU = 11;//for 0016128 about restore
 
     private static final int SCREEN_DELAY = 2 * 60 * 1000;
 
@@ -426,7 +427,15 @@ public class VideoModule implements CameraModule,
                     forceFlashOff(!mPreviewFocused);
                     break;
                 }
-
+                //for 0016128 about restore
+                case RESTORE_MENU: {
+                    onZoomChanged(0);
+                    mUI.removeLevel2();
+                    mUI.collapseCameraControls();
+                    Storage.setSaveSDCard(false);
+                    onSharedPreferenceChanged();
+                    break;
+                }
                 default:
                     Log.v(TAG, "Unhandled message: " + msg.what);
                     break;
@@ -2758,6 +2767,8 @@ public class VideoModule implements CameraModule,
     @Override
     // TODO: Delete this after old camera code is removed
     public void onRestorePreferencesClicked() {
+        CameraSettings.restorePreferences(mActivity, mPreferences, mParameters);
+        mHandler.sendEmptyMessage(RESTORE_MENU);
     }
 
     @Override

 

19 插入OTG U盤播放裏面的音樂,播放過程中拔掉U盤,音樂後一直播放不會停止,請修改

--- packages/apps/SnapdragonMusic/src/com/android/music/AudioPreview.java ----
index 36d0d55..e57bbc3 100755
@@ -23,6 +23,7 @@ import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.database.Cursor;
+import android.hardware.usb.UsbManager;
 import android.media.AudioManager;
 import android.media.MediaPlayer;
 import android.media.AudioManager.OnAudioFocusChangeListener;
@@ -91,6 +92,44 @@ public class AudioPreview extends Activity implements OnPreparedListener, OnErro
     private static AudioPreview mAudioPreview;
     private ImageView mImageViewDrmIcon;
 
+    private final String EXTERNAL_PATH = "content://com.android.externalstorage.documents/document/";
+    private final String EXTERNAL_PATH_1 = "file:///mnt/media_rw/";
+    private boolean isExternalFile = false;
+
+    private final BroadcastReceiver mOtgReceiver = new  BroadcastReceiver() {
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            switch (intent.getAction()) {
+                case UsbManager.ACTION_USB_DEVICE_DETACHED:
+                    if (!isExternalFile) return;
+                    stopPlayback();
+                    finishAffinity();
+                    break;
+                default:
+                    break;
+            }
+        }
+    };
+
+    private void registerUsbListen(Intent intent) {
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
+        registerReceiver(mOtgReceiver, filter);
+
+        String path = intent.getDataString().trim();
+        if (path.length()> 1 && (path.contains(EXTERNAL_PATH) || path.contains(EXTERNAL_PATH_1)) ) {
+            isExternalFile  = true;
+        }
+    }
+
+    private void unRegisterUsbListen() {
+        if(mOtgReceiver != null) {
+            unregisterReceiver(mOtgReceiver);
+        }
+        isExternalFile = false;
+    }
+
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -107,7 +146,8 @@ public class AudioPreview extends Activity implements OnPreparedListener, OnErro
             return;
         }
         String scheme = mUri.getScheme();
-        
+
+        registerUsbListen(getIntent());
         setVolumeControlStream(AudioManager.STREAM_MUSIC);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.audiopreview);
@@ -187,6 +227,7 @@ public class AudioPreview extends Activity implements OnPreparedListener, OnErro
     @Override
     public void onDestroy() {
         stopPlayback();
+        unRegisterUsbListen();
         super.onDestroy();
     }
 
20 不打開GPS位置信息開關,進入相機,打開“存儲位置信息開關”,請添加關於GPS位置信息開關的相應的提示語。
--------- packages/apps/SnapdragonCamera/res/values-zh-rCN/strings.xml ---------
index cab7131..ff7a2e2 100644
@@ -777,4 +777,7 @@
     <string name="pref_record_entry_0">"否"</string>
     <string name="pref_record_entry_1">"是"</string>
     <string name="pref_record_default">"0"</string>
+
+    <string name="hint_error_for_settings_off">"請在設置中打開GPS,並重新打開相機"</string>
+    <string name="hint_for_locating">"定位中..."</string>
 </resources>

------------ packages/apps/SnapdragonCamera/res/values/strings.xml ------------
index f48bc9f..3799b32 100644
@@ -754,4 +754,7 @@ CHAR LIMIT = NONE] -->
     <string name="pref_record_entry_0">no</string>
     <string name="pref_record_entry_1">yes</string>
     <string name="pref_record_default">0</string>
+
+    <string name="hint_error_for_settings_off">"請在設置中打開GPS,並重新打開相機"</string>
+    <string name="hint_for_locating">"定位中..."</string>
  </resources>

-- packages/apps/SnapdragonCamera/src/com/android/camera/LocationManager.java --
index 49009d7..5a5d404 100644
@@ -22,6 +22,11 @@ import android.location.LocationProvider;
 import android.os.Bundle;
 import android.util.Log;
 
+//add hint for location
+import org.codeaurora.snapcam.R;
+import android.database.ContentObserver;
+import android.provider.Settings;
+import android.os.Handler;
 /**
  * A class that handles everything about location.
  */
@@ -40,6 +45,9 @@ public class LocationManager {
             new LocationListener(android.location.LocationManager.NETWORK_PROVIDER)
     };
 
+    private OnScreenHint mOnScreenHint;
+    private String mLocatingString;
+    private String mLocatingErrorString;
     public interface Listener {
         public void onErrorListener(int error);
     }
@@ -47,6 +55,12 @@ public class LocationManager {
     public LocationManager(Context context, Listener listener) {
         mContext = context;
         mListener = listener;
+        //add hint for location
+        mLocationManager = (android.location.LocationManager)
+                mContext.getSystemService(Context.LOCATION_SERVICE);
+
+        mLocatingString = mContext.getString(R.string.hint_for_locating);
+        mLocatingErrorString = mContext.getString(R.string.hint_error_for_settings_off);
     }
 
     public Location getCurrentLocation() {
@@ -75,12 +89,37 @@ public class LocationManager {
             }
         }
     }
-
+    //add hint for location
+    private void showHint(){
+        boolean isEnabled = mLocationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)||
+            mLocationManager.isProviderEnabled(android.location.LocationManager.NETWORK_PROVIDER);
+        if (mOnScreenHint == null) {
+            if (!isEnabled) {
+                mOnScreenHint = OnScreenHint.makeText(mContext,mLocatingErrorString);
+            } else {
+                mOnScreenHint = OnScreenHint.makeText(mContext,mLocatingString);
+            }
+        } else {
+            if (!isEnabled) {
+                mOnScreenHint.setText(mLocatingErrorString);
+            } else {
+                mOnScreenHint.setText(mLocatingString);
+            }
+        }
+        mOnScreenHint.show();
+    }
+    //add hint for location
+    private void hideHint(){
+        if (mOnScreenHint != null) {
+            mOnScreenHint.cancel();
+        }
+    }
     public void waitingLocationPermissionResult(boolean waitingResult) {
        mWaitingLocPermResult = waitingResult;
     }
 
     private void startReceivingLocationUpdates() {
+        showHint();//add hint for location
         if (mLocationManager == null) {
             mLocationManager = (android.location.LocationManager)
                     mContext.getSystemService(Context.LOCATION_SERVICE);
@@ -135,6 +174,7 @@ public class LocationManager {
             implements android.location.LocationListener {
         Location mLastLocation;
         boolean mValid = false;
+
         String mProvider;
 
         public LocationListener(String provider) {
@@ -152,6 +192,7 @@ public class LocationManager {
             if (!mValid) {
                 Log.d(TAG, "Got first location.");
             }
+            hideHint();//add hint for location
             mLastLocation.set(newLocation);
             mValid = true;
         }
@@ -171,6 +212,7 @@ public class LocationManager {
             switch(status) {
                 case LocationProvider.OUT_OF_SERVICE:
                 case LocationProvider.TEMPORARILY_UNAVAILABLE: {
+                    showHint();//add hint for location
                     mValid = false;
                     break;
                 }

改了兩次

- packages/apps/SnapdragonCamera/src/com/android/camera/CameraActivity.java --
index 0976950..50b1f61 100755
@@ -1674,12 +1674,20 @@ public class CameraActivity extends Activity
             super.onActivityResult(requestCode, resultCode, data);
         }
     }
-
+    private boolean isFirstHasFocus = true;
     @Override
     public void onWindowFocusChanged(boolean focus) {
         // Hide action bar first since we are in full screen mode first, and
         // switch the system UI to lights-out mode.
-        if (focus) this.setSystemBarsVisibility(false);
+        if (focus) {
+            this.setSystemBarsVisibility(false);
+            if (isFirstHasFocus) {
+                mCurrentModule.enableShowHint(focus);
+                isFirstHasFocus = false;
+            }
+        } else {
+            isFirstHasFocus = true;
+        }
     }
 
     /**

--- packages/apps/SnapdragonCamera/src/com/android/camera/CameraModule.java ---
index 9de1674..3b8ee58 100644
@@ -74,4 +74,6 @@ public interface CameraModule {
     public void waitingLocationPermissionResult(boolean waiting);
 
     public void enableRecordingLocation(boolean enable);
+
+    public void enableShowHint(boolean enable);
 }

--- packages/apps/SnapdragonCamera/src/com/android/camera/CaptureModule.java ---
index bb338a3..1e771ec 100755
@@ -968,6 +968,10 @@ public class CaptureModule implements CameraModule, PhotoController,
         mLocationManager = new LocationManager(mActivity, this);
         Storage.setSaveSDCard(mSettingsManager.getValue(SettingsManager
                 .KEY_CAMERA_SAVEPATH).equals("1"));
+
+        mLocatingString = mActivity.getString(R.string.hint_for_locating);
+        mLocatingErrorString = mActivity.getString(R.string.hint_error_for_settings_off);
+
     }
 
     /**
@@ -3602,6 +3606,42 @@ public class CaptureModule implements CameraModule, PhotoController,
         enableRecordingLocation(false);
     }
 
+    private OnScreenHint mOnScreenHint;
+    private String mLocatingString;
+    private String mLocatingErrorString;
+    @Override
+    public void enableShowHint(boolean enable) {
+        if (enable) {
+            mLocationManager.showHint();
+        }
+    }
+
+    @Override
+    public void onShowHint(int hint) {
+        if(mActivity.hasWindowFocus()) {
+            if (mOnScreenHint == null) {
+                if (hint ==1) {
+                    mOnScreenHint = OnScreenHint.makeText(mActivity,mLocatingErrorString);
+                } else {
+                    mOnScreenHint = OnScreenHint.makeText(mActivity,mLocatingString);
+                }
+            } else {
+                if (hint ==1) {
+                    mOnScreenHint.setText(mLocatingErrorString);
+                } else {
+                    mOnScreenHint.setText(mLocatingString);
+                }
+            }
+            mOnScreenHint.show();
+        }
+    }
+    @Override
+    public void onHideHint(){
+        if ( mOnScreenHint!=null ) {
+            mOnScreenHint.cancel();
+        }
+    }
+
     private byte[] getJpegData(Image image) {
         ByteBuffer buffer = image.getPlanes()[0].getBuffer();
         byte[] bytes = new byte[buffer.remaining()];

-- packages/apps/SnapdragonCamera/src/com/android/camera/LocationManager.java --
index 5a5d404..ffeafce 100644
@@ -27,6 +27,9 @@ import org.codeaurora.snapcam.R;
 import android.database.ContentObserver;
 import android.provider.Settings;
 import android.os.Handler;
+import android.widget.Toast;
+import com.android.camera.util.CameraUtil;
+
 /**
  * A class that handles everything about location.
  */
@@ -50,6 +53,8 @@ public class LocationManager {
     private String mLocatingErrorString;
     public interface Listener {
         public void onErrorListener(int error);
+        public void onShowHint(int hint);
+        public void onHideHint();
     }
 
     public LocationManager(Context context, Listener listener) {
@@ -89,37 +94,40 @@ public class LocationManager {
             }
         }
     }
+    private final int SHOW_HINT = 1;
+    private Handler mainHandler = new Handler() {
+
+        public void dispatchMessage(android.os.Message msg) {
+            switch (msg.what) {
+                case SHOW_HINT:
+                    showHint();
+                    break;
+            }
+        }
+    };
     //add hint for location
-    private void showHint(){
+    public void showHint(){
         boolean isEnabled = mLocationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)||
             mLocationManager.isProviderEnabled(android.location.LocationManager.NETWORK_PROVIDER);
-        if (mOnScreenHint == null) {
-            if (!isEnabled) {
-                mOnScreenHint = OnScreenHint.makeText(mContext,mLocatingErrorString);
-            } else {
-                mOnScreenHint = OnScreenHint.makeText(mContext,mLocatingString);
-            }
+        if (!isEnabled) {
+            mListener.onShowHint(1);
         } else {
-            if (!isEnabled) {
-                mOnScreenHint.setText(mLocatingErrorString);
-            } else {
-                mOnScreenHint.setText(mLocatingString);
-            }
+            mListener.onShowHint(2);
         }
-        mOnScreenHint.show();
     }
     //add hint for location
-    private void hideHint(){
-        if (mOnScreenHint != null) {
-            mOnScreenHint.cancel();
-        }
+    public  void hideHint(){
+        mListener.onHideHint();
     }
     public void waitingLocationPermissionResult(boolean waitingResult) {
        mWaitingLocPermResult = waitingResult;
     }
 
     private void startReceivingLocationUpdates() {
-        showHint();//add hint for location
+        showHint();
+        /*if (mainHandler.hasMessages(SHOW_HINT))
+            mainHandler.removeMessages(SHOW_HINT);
+        mainHandler.sendEmptyMessageDelayed(SHOW_HINT, 800);//add hint for location*/
         if (mLocationManager == null) {
             mLocationManager = (android.location.LocationManager)
                     mContext.getSystemService(Context.LOCATION_SERVICE);

---- packages/apps/SnapdragonCamera/src/com/android/camera/PhotoModule.java ----
index 26407e8..09083a8 100644
@@ -635,6 +635,8 @@ public class PhotoModule
         brightnessProgressBar.setVisibility(View.INVISIBLE);
         Storage.setSaveSDCard(
             mPreferences.getString(CameraSettings.KEY_CAMERA_SAVEPATH, "0").equals("1"));
+        mLocatingString = mActivity.getString(R.string.hint_for_locating);
+        mLocatingErrorString = mActivity.getString(R.string.hint_error_for_settings_off);
     }
 
     public CameraActivity getMainActivity() {
@@ -5212,6 +5214,42 @@ public class PhotoModule
     public void onErrorListener(int error) {
         enableRecordingLocation(false);
     }
+    private OnScreenHint mOnScreenHint;
+    private String mLocatingString;
+    private String mLocatingErrorString;
+
+    @Override
+    public void enableShowHint(boolean enable) {
+        if (enable) {
+            mLocationManager.showHint();
+        }
+    }
+
+    @Override
+    public void onShowHint(int hint) {
+        if(mActivity.hasWindowFocus()) {
+            if (mOnScreenHint == null) {
+                if (hint ==1) {
+                    mOnScreenHint = OnScreenHint.makeText(mActivity,mLocatingErrorString);
+                } else {
+                    mOnScreenHint = OnScreenHint.makeText(mActivity,mLocatingString);
+                }
+            } else {
+                if (hint ==1) {
+                    mOnScreenHint.setText(mLocatingErrorString);
+                } else {
+                    mOnScreenHint.setText(mLocatingString);
+                }
+            }
+            mOnScreenHint.show();
+        }
+    }
+    @Override
+    public void onHideHint(){
+        if ( mOnScreenHint!=null ) {
+            mOnScreenHint.cancel();
+        }
+    }
 
 }
 

---- packages/apps/SnapdragonCamera/src/com/android/camera/VideoModule.java ----
index 0cbdda7..308e619 100755
@@ -559,6 +559,8 @@ public class VideoModule implements CameraModule,
 
         initializeVideoControl();
         mPendingSwitchCameraId = -1;
+        mLocatingString = mActivity.getString(R.string.hint_for_locating);
+        mLocatingErrorString = mActivity.getString(R.string.hint_error_for_settings_off);
     }
 
     @Override
@@ -3133,6 +3135,42 @@ public class VideoModule implements CameraModule,
     public void onErrorListener(int error) {
         enableRecordingLocation(false);
     }
+    private OnScreenHint mOnScreenHint;
+    private String mLocatingString;
+    private String mLocatingErrorString;
+
+    @Override
+    public void enableShowHint(boolean enable) {
+        if (enable) {
+            mLocationManager.showHint();
+        }
+    }
+
+    @Override
+    public void onShowHint(int hint) {
+        if(mActivity.hasWindowFocus()) {
+            if (mOnScreenHint == null) {
+                if (hint ==1) {
+                    mOnScreenHint = OnScreenHint.makeText(mActivity,mLocatingErrorString);
+                } else {
+                    mOnScreenHint = OnScreenHint.makeText(mActivity,mLocatingString);
+                }
+            } else {
+                if (hint ==1) {
+                    mOnScreenHint.setText(mLocatingErrorString);
+                } else {
+                    mOnScreenHint.setText(mLocatingString);
+                }
+            }
+            mOnScreenHint.show();
+        }
+    }
+    @Override
+    public void onHideHint(){
+        if ( mOnScreenHint!=null ) {
+            mOnScreenHint.cancel();
+        }
+    }
 
 }
 

 packages/apps/SnapdragonCamera/src/com/android/camera/WideAnglePanoramaModule.java
index eed1e37..a20301f 100755
@@ -159,6 +159,10 @@ public class WideAnglePanoramaModule
     public void onPreviewUIReady() {
         configMosaicPreview();
     }
+    @Override
+    public void enableShowHint(boolean enable) {
+        //mLocationManager.showHint();
+    }
 
     @Override

21 手機無SD卡時進入相機設置界面將存儲位置設置爲SD卡可以設置,且設置後不能拍照、提示框不消失 


--------- packages/apps/SnapdragonCamera/res/values-zh-rCN/strings.xml ---------
index c4cf077..dff9eda 100644
@@ -412,7 +412,7 @@
    <!-- Settings screen, Video duration title -->
     <string name="pref_camera_video_duration_title">"視頻時長"</string>
    <!-- Settings screen, Video duration dialog radio button choices -->
-    <string name="pref_camera_video_duration_entry_mms">"30 秒(MMS)"</string>
+    <string name="pref_camera_video_duration_entry_mms">"30 秒"</string>
     <string name="pref_camera_video_duration_entry_10">"10 分鐘"</string>
     <string name="pref_camera_video_duration_entry_30">"30 分鐘"</string>
     <string name="pref_camera_video_duration_entry_nolimit">"無限制"</string>

------ packages/apps/SnapdragonCamera/src/com/android/camera/Storage.java ------
index 6239494..b1f6b48 100644
@@ -306,4 +306,9 @@ public class Storage {
         }
         return uri;
     }
+    public static boolean getSDCardAvailable() {
+        if ( LOW_STORAGE_THRESHOLD_BYTES <= getSDCardAvailableSpace())
+            return true;
+        return false;
+    }
 }

-- packages/apps/SnapdragonCamera/src/com/android/camera/ui/ListSubMenu.java --
index a425c76..0addbf2 100644
@@ -37,6 +37,8 @@ import android.widget.SimpleAdapter;
 
 import com.android.camera.IconListPreference;
 import com.android.camera.ListPreference;
+import com.android.camera.Storage;
+
 import org.codeaurora.snapcam.R;
 
 // A popup window that shows one camera setting. The title is the name of the
@@ -84,6 +86,14 @@ public class ListSubMenu extends ListView implements
         mPreference = preference;
         Context context = getContext();
         CharSequence[] entries = mPreference.getEntries();
+        String str = getResources().getString(R.string.pref_camera_savepath_title);
+        String phone = getResources().getString(R.string.pref_camera_savepath_entry_0);
+        String sdcard = getResources().getString(R.string.pref_camera_savepath_entry_1);
+        boolean sdcardHidden = false;
+        if (mPreference  != null && str.equals(mPreference.getTitle())
+            && !Storage.getSDCardAvailable()) {
+            sdcardHidden = true;
+        }
         int[] iconIds = null;
         if (preference instanceof IconListPreference) {
             iconIds = ((IconListPreference) mPreference).getImageIds();
@@ -97,6 +107,7 @@ public class ListSubMenu extends ListView implements
         ArrayList<HashMap<String, Object>> listItem =
                 new ArrayList<HashMap<String, Object>>();
         for (int i = 0; i < entries.length; ++i) {
+            if (sdcardHidden && sdcard.equals(entries[i].toString())) continue;
             HashMap<String, Object> map = new HashMap<String, Object>();
             map.put("text", entries[i].toString());
             if (iconIds != null)


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章