diff --git a/FMRecord/res/values-zh-rTW/strings.xml b/FMRecord/res/values-zh-rTW/strings.xml
index a92881c..8820deb 100644
--- a/FMRecord/res/values-zh-rTW/strings.xml
+++ b/FMRecord/res/values-zh-rTW/strings.xml
@@ -30,6 +30,14 @@
     <string name="spaceIsLow_content">USB 存儲設備空間不足，請更改錄音時長設置，或刪除某些錄音或者其他檔案。</string>
     <string name="sdcard_no_space_cannot_recording">SD卡空間不足，不能錄音</string>
     <string name="recording_stop_no_space">SD卡空間不足，錄音停止</string>
+	<string name="audio_db_artist_name">我的FM錄音</string>
+	<!-- all recordings will show up in the media database with this 'album' name -->
+	<string name="audio_db_album_name">FM 錄音</string>
+	<!-- all recordings will show up in the media database in a playlist with this name -->
+	<string name="audio_db_playlist_name">FM 錄音</string>
+	<string name="fm_record_progress">FM 錄音進行中</string>
+	<string name="unable_to_store">無法保存已錄音頻</string>
+	<string name="FMRecording_reach_size_limit">已到達最長限制.</string>
     <!-- prompt message for stopping record -->
     <string name="save_record_file">錄音已保存至 "<xliff:g id="record_file">%1$s</xliff:g>"</string>
 </resources>
diff --git a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
index 62f4a94..da55d8c 100644
--- a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
+++ b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -92,8 +92,9 @@
     private Thread mStatusCheckThread = null;
     private int clientPid = -1;
     private String clientProcessName = "";
-    private BroadcastReceiver mSdcardUnmountReceiver = null;
     private String mAudioType = "audio/*";
+    private long startTimerMs = 0;
+    private long stopTimerMs = 0;
 
     public void onCreate() {
 
@@ -101,7 +102,6 @@
         Log.d(TAG, "FMRecording Service onCreate");
         registerRecordingListner();
         registerShutdownListner();
-        registerStorageMediaListener();
     }
 
     public int onStartCommand(Intent intent, int flags, int startId) {
@@ -118,7 +118,6 @@
         }
         unregisterBroadCastReceiver(mFmRecordingReceiver);
         unregisterBroadCastReceiver(mFmShutdownReceiver);
-        unregisterBroadCastReceiver(mSdcardUnmountReceiver);
         super.onDestroy();
     }
 
@@ -200,33 +199,6 @@
         return true;
     }
 
-    private void registerStorageMediaListener() {
-        if (mSdcardUnmountReceiver == null) {
-            mSdcardUnmountReceiver = new BroadcastReceiver() {
-                @Override
-                public void onReceive(Context context, Intent intent) {
-                     String action = intent.getAction();
-                    if ((action.equals(Intent.ACTION_MEDIA_UNMOUNTED))
-                          || action.equals(Intent.ACTION_MEDIA_EJECT)) {
-                         Log.d(TAG, "ACTION_MEDIA_UNMOUNTED Intent received");
-                        if (mFmRecordingOn == true) {
-                             try {
-                                  stopRecord();
-                             } catch (Exception e) {
-                                  e.printStackTrace();
-                             }
-                         }
-                     }
-                 }
-             };
-             IntentFilter iFilter = new IntentFilter();
-             iFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
-             iFilter.addAction(Intent.ACTION_MEDIA_EJECT);
-             iFilter.addDataScheme("file");
-             registerReceiver(mSdcardUnmountReceiver, iFilter);
-         }
-     }
-
     private void sendRecordingStatusIntent(int status) {
         Intent intent = new Intent(ACTION_FM_RECORDING_STATUS);
         intent.putExtra("state", status);
@@ -289,6 +261,7 @@
              mRecorder.prepare();
              Log.d(TAG, "start");
              mRecorder.start();
+             startTimerMs = System.currentTimeMillis();
         } catch (IOException e) {
              Log.d(TAG, "IOException while start");
              mRecorder.reset();
@@ -354,6 +327,7 @@
             return;
         try {
              mRecorder.stop();
+             stopTimerMs = System.currentTimeMillis();
              mRecorder.reset();
              mRecorder.release();
              mRecorder = null;
@@ -400,6 +374,7 @@
         ContentValues cv = new ContentValues();
         long current = System.currentTimeMillis();
         long modDate = file.lastModified();
+        long recordDuration = stopTimerMs - startTimerMs;
         Date date = new Date(current);
         SimpleDateFormat formatter = new SimpleDateFormat(
                   res.getString(R.string.audio_db_title_format));
@@ -412,6 +387,7 @@
         cv.put(MediaStore.Audio.Media.DATA, file.getAbsolutePath());
         cv.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));
         cv.put(MediaStore.Audio.Media.DATE_MODIFIED, (int) (modDate / 1000));
+        cv.put(MediaStore.Audio.Media.DURATION, recordDuration);
         cv.put(MediaStore.Audio.Media.MIME_TYPE, mAudioType);
         cv.put(MediaStore.Audio.Media.ARTIST,
                 res.getString(R.string.audio_db_artist_name));
diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index 5b858c4..0893664 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -2624,12 +2624,12 @@
    Runnable mOnStereo = new Runnable() {
       public void run() {
          if (FMRADIO_UI_STATION_AUDIO_STEREO == mStereo) {
-             if ((Locale.getDefault().getLanguage().equals("zh")))
+             if ((Locale.getDefault().toString().equals("zh_HK")))
                  mStereoTV.setText("立體聲");
              else
                  mStereoTV.setText(R.string.audio_type_stereo);
          } else if (FMRADIO_UI_STATION_AUDIO_MONO == mStereo) {
-             if ((Locale.getDefault().getLanguage().equals("zh")))
+             if ((Locale.getDefault().toString().equals("zh_HK")))
                  mStereoTV.setText("單聲道");
              else
                  mStereoTV.setText(R.string.audio_type_mono);
@@ -2867,7 +2867,7 @@
       void startScroll() {
          TextView textView = mView.get();
          if (textView != null) {
-            mOriginalString = (String)textView.getText();
+            mOriginalString = textView.getText().toString();
             mStringlength = mOriginalString.length();
             if (mStringlength > 0) {
                mStatus = SCROLLER_STARTING;
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 41947da..38f870f 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -817,8 +817,6 @@
            //reason for resending the Speaker option is we are sending
            //ACTION_FM=1 to AudioManager, the previous state of Speaker we set
            //need not be retained by the Audio Manager.
-           AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_FM,
-                               AudioSystem.DEVICE_STATE_AVAILABLE, "");
            if (isSpeakerEnabled()) {
                mSpeakerPhoneOn = true;
                Log.d(LOGTAG, "Audio source set it as speaker");
@@ -827,6 +825,8 @@
                Log.d(LOGTAG, "Audio source set it as headset");
                AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, AudioSystem.FORCE_NONE);
            }
+           AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_FM,
+                               AudioSystem.DEVICE_STATE_AVAILABLE, "");
 
        }
        sendRecordServiceIntent(RECORD_START);
@@ -2748,6 +2748,7 @@
          try
          {
             FmSharedPreferences.setTunedFrequency(frequency);
+            mPrefs.Save();
             //Log.d(LOGTAG, "Call mCallbacks.onSearchComplete");
             /* Since the Tuned Status changed, clear out the RDSData cached */
             if(mReceiver != null) {
diff --git a/fmapp2/src/com/caf/fmradio/PresetStation.java b/fmapp2/src/com/caf/fmradio/PresetStation.java
index 6d677f0..698cdb6 100644
--- a/fmapp2/src/com/caf/fmradio/PresetStation.java
+++ b/fmapp2/src/com/caf/fmradio/PresetStation.java
@@ -639,9 +639,9 @@
       {
          case 1:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "新聞";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "新闻";
             else
                 ptyStr = "News";
@@ -649,9 +649,9 @@
          }
          case 2:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "資訊";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "信息频道";
             else
                 ptyStr = "Information";
@@ -659,9 +659,9 @@
          }
          case 3:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "体育";
             else
                 ptyStr = "Sports";
@@ -669,9 +669,9 @@
          }
          case 4:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "討論";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "交流";
             else
                 ptyStr = "Talk";
@@ -679,9 +679,9 @@
          }
          case 5:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "搖滾";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "摇滚";
             else
                 ptyStr = "Rock";
@@ -689,9 +689,9 @@
          }
          case 6:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "古典搖滾";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "经典摇滚";
             else
                 ptyStr = "Classic Rock";
@@ -699,9 +699,9 @@
          }
          case 7:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "成人熱門精選";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "成人点击";
             else
                 ptyStr = "Adult Hits";
@@ -709,9 +709,9 @@
          }
          case 8:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "輕柔搖滾樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "轻摇滚";
             else
                 ptyStr = "Soft Rock";
@@ -719,9 +719,9 @@
          }
          case 9:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "前40首最熱門歌曲";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "前40";
             else
                 ptyStr = "Top 40";
@@ -729,9 +729,9 @@
          }
          case 10:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "鄉村音樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "乡村";
             else
                 ptyStr = "Country";
@@ -739,9 +739,9 @@
          }
          case 11:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "懷舊";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "老歌";
             else
                 ptyStr = "Oldies";
@@ -749,9 +749,9 @@
          }
          case 12:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "輕柔";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "轻音乐";
             else
                 ptyStr = "Soft";
@@ -759,9 +759,9 @@
          }
          case 13:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "思鄉";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "怀旧";
             else
                 ptyStr = "Nostalgia";
@@ -769,9 +769,9 @@
          }
          case 14:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "爵士樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "爵士";
             else
                 ptyStr = "Jazz";
@@ -779,9 +779,9 @@
          }
          case 15:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "古典";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "古典";
             else
                 ptyStr = "Classical";
@@ -789,9 +789,9 @@
          }
          case 16:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "節奏藍調";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "节奏布鲁斯";
             else
                 ptyStr = "Rhythm and Blues";
@@ -799,9 +799,9 @@
          }
          case 17:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "輕柔節奏藍調";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "轻节奏布鲁斯";
             else
                 ptyStr = "Soft Rhythm and Blues";
@@ -809,9 +809,9 @@
          }
          case 18:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "外語";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "外语频道";
             else
                 ptyStr = "Foreign Language";
@@ -819,9 +819,9 @@
          }
          case 19:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "宗教音樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "宗教音乐";
             else
                 ptyStr = "Religious Music";
@@ -829,9 +829,9 @@
          }
          case 20:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "宗教討論";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "宗教交流";
             else
                 ptyStr = "Religious Talk";
@@ -839,9 +839,9 @@
          }
          case 21:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "個人";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "个性";
             else
                 ptyStr = "Personality";
@@ -849,9 +849,9 @@
          }
          case 22:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "公開";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "公共频道";
             else
                 ptyStr = "Public";
@@ -859,9 +859,9 @@
          }
          case 23:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "學院";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "校园";
             else
                 ptyStr = "College";
@@ -869,9 +869,9 @@
          }
          case 29:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "天氣";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "天气";
             else
                 ptyStr = "Weather";
@@ -879,9 +879,9 @@
          }
          case 30:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "緊急測試";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "紧急 测试";
             else
                 ptyStr = "Emergency Test";
@@ -889,9 +889,9 @@
          }
          case 31:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "緊急";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "紧急";
             else
                 ptyStr = "Emergency";
@@ -915,9 +915,9 @@
       {
          case 1:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "新聞";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "新闻";
             else
                 ptyStr = "News";
@@ -925,9 +925,9 @@
          }
          case 2:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "新聞時事";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "新闻时事";
             else
                 ptyStr = "Current Affairs";
@@ -935,9 +935,9 @@
          }
          case 3:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "資訊";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "信息";
             else
                 ptyStr = "Information";
@@ -945,9 +945,9 @@
          }
          case 4:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "體育";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "体育";
             else
                 ptyStr = "Sport";
@@ -955,9 +955,9 @@
          }
          case 5:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "教育";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "教育";
             else
                 ptyStr = "Education";
@@ -965,9 +965,9 @@
          }
          case 6:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "戲劇";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "戏剧";
             else
                 ptyStr = "Drama";
@@ -975,9 +975,9 @@
          }
          case 7:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "文化";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "文化";
             else
                 ptyStr = "Culture";
@@ -985,9 +985,9 @@
          }
          case 8:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "科學";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "科学";
             else
                 ptyStr = "Science";
@@ -995,9 +995,9 @@
          }
          case 9:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "多樣化";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "变奏";
             else
                 ptyStr = "Varied";
@@ -1005,9 +1005,9 @@
          }
          case 10:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "流行音樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "流行音乐";
             else
                 ptyStr = "Pop Music";
@@ -1015,9 +1015,9 @@
          }
          case 11:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "搖滾樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "摇滚音乐";
             else
                 ptyStr = "Rock Music";
@@ -1025,9 +1025,9 @@
          }
          case 12:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "輕音樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "轻音乐";
             else
                 ptyStr = "Easy Listening Music";
@@ -1035,9 +1035,9 @@
          }
          case 13:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "輕古典音樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "轻古典音乐";
             else
                 ptyStr = "Light classical";
@@ -1045,9 +1045,9 @@
          }
          case 14:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "正統古典";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "古典";
             else
                 ptyStr = "Serious classical";
@@ -1055,9 +1055,9 @@
          }
          case 15:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "其他音樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "其他音乐";
             else
                 ptyStr = "Other Music";
@@ -1065,9 +1065,9 @@
          }
          case 16:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "天氣";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "天气";
             else
                 ptyStr = "Weather";
@@ -1075,9 +1075,9 @@
          }
          case 17:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "財政";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "经济";
             else
                 ptyStr = "Finance";
@@ -1085,9 +1085,9 @@
          }
          case 18:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "少兒節目";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "儿童节目";
             else
                 ptyStr = "Children programs";
@@ -1095,9 +1095,9 @@
          }
          case 19:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "社會事務";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "社会事务";
             else
                 ptyStr = "Social Affairs";
@@ -1105,9 +1105,9 @@
          }
          case 20:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "宗教";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "宗教";
             else
                 ptyStr = "Religion";
@@ -1115,9 +1115,9 @@
          }
          case 21:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "聽眾來得";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "听众来电";
             else
                 ptyStr = "Phone In";
@@ -1125,9 +1125,9 @@
          }
          case 22:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "旅遊";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "旅行";
             else
                 ptyStr = "Travel";
@@ -1135,9 +1135,9 @@
          }
          case 23:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "休閒";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "休闲";
             else
                 ptyStr = "Leisure";
@@ -1145,9 +1145,9 @@
          }
          case 24:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "爵士樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "爵士音乐";
             else
                 ptyStr = "Jazz Music";
@@ -1155,9 +1155,9 @@
          }
          case 25:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "鄉村音樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "乡村音乐";
             else
                 ptyStr = "Country Music";
@@ -1165,9 +1165,9 @@
          }
          case 26:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "國樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "民族音乐";
             else
                 ptyStr = "National Music";
@@ -1175,9 +1175,9 @@
          }
          case 27:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "懷舊金曲";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "怀旧";
             else
                 ptyStr = "Oldies Music";
@@ -1185,9 +1185,9 @@
          }
          case 28:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "民俗音樂";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "民族音乐";
             else
                 ptyStr = "Folk Music";
@@ -1195,9 +1195,9 @@
          }
          case 29:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "紀實";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "记录";
             else
                 ptyStr = "Documentary";
@@ -1205,9 +1205,9 @@
          }
          case 30:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "緊急測試";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "紧急测试";
             else
                 ptyStr = "Emergency Test";
@@ -1215,9 +1215,9 @@
          }
          case 31:
          {
-            if (Locale.getDefault().getLanguage().equals("zh"))
+            if (Locale.getDefault().toString().equals("zh_HK"))
                 ptyStr = "緊急";
-            else if (Locale.getDefault().getLanguage().equals("zh_CN"))
+            else if (Locale.getDefault().toString().equals("zh_CN"))
                 ptyStr = "紧急";
             else
                 ptyStr = "Emergency";
diff --git a/fmapp2/src/com/caf/fmradio/Settings.java b/fmapp2/src/com/caf/fmradio/Settings.java
index 0ad85f1..e82acc3 100644
--- a/fmapp2/src/com/caf/fmradio/Settings.java
+++ b/fmapp2/src/com/caf/fmradio/Settings.java
@@ -313,7 +313,7 @@
                   setBandSummary(summaryBandItems.length - 1);
                   clearStationList();
                }else {
-                  if ((Locale.getDefault().getLanguage().equals("zh")))
+                  if ((Locale.getDefault().toString().equals("zh_HK")))
                       Toast.makeText(this,"請輸入有效的頻道範圍76.0-108.0",
                                                             Toast.LENGTH_SHORT).show();
                   else
@@ -337,7 +337,7 @@
                   setBandSummary(summaryBandItems.length - 1);
                   clearStationList();
                }else {
-                  if ((Locale.getDefault().getLanguage().equals("zh")))
+                  if ((Locale.getDefault().toString().equals("zh_HK")))
                       Toast.makeText(this,"請輸入有效的頻道範圍76.0-108.0",
                                                             Toast.LENGTH_SHORT).show();
                   else
