diff --git a/FMRecord/res/values-zh-rCN/strings.xml b/FMRecord/res/values-zh-rCN/strings.xml
index a55ae4b..660f743 100644
--- a/FMRecord/res/values-zh-rCN/strings.xml
+++ b/FMRecord/res/values-zh-rCN/strings.xml
@@ -41,4 +41,6 @@
     <!-- 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="FMRecording_reach_size_limit">已到达最长限制.</string>
+    <string name="unable_to_store">无法保存已录音频</string>
 </resources>
diff --git a/FMRecord/res/values/strings.xml b/FMRecord/res/values/strings.xml
index ff11d19..244d41c 100644
--- a/FMRecord/res/values/strings.xml
+++ b/FMRecord/res/values/strings.xml
@@ -47,4 +47,5 @@
     <string name="audio_db_playlist_name">FM recordings</string>
     <string name="save_record_file">FM Recorded file saved to "<xliff:g id="record_file">%1$s</xliff:g>"</string>
     <string name="fm_record_progress">FM Recording in progress</string>
+    <string name="unable_to_store">Unable to save recorded audio</string>
 </resources>
diff --git a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
index fc0fc21..62f4a94 100644
--- a/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
+++ b/FMRecord/src/com/codeaurora/fmrecording/FMRecordingService.java
@@ -259,7 +259,10 @@
 
         }
         mSampleFile = null;
-        File sampleDir = Environment.getExternalStorageDirectory();
+        File sampleDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +"/FMRecording");
+
+        if(!(sampleDir.mkdirs() || sampleDir.isDirectory()))
+            return false;
 
         try {
              mSampleFile = File.createTempFile("FMRecording", ".3gpp", sampleDir);
@@ -309,9 +312,12 @@
                          Log.d(TAG, "Maximum file size/duration reached, stopping the recording");
                          stopRecord();
                      }
-                     // Show the toast.
-                     Toast.makeText(FMRecordingService.this, R.string.FMRecording_reach_size_limit,
-                               Toast.LENGTH_LONG).show();
+                     if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED) {
+                         // Show the toast.
+                         Toast.makeText(FMRecordingService.this,
+                                        R.string.FMRecording_reach_size_limit,
+                                        Toast.LENGTH_LONG).show();
+                     }
                  }
              }
              // from MediaRecorder.OnErrorListener
@@ -417,7 +423,7 @@
         Log.d(TAG, "ContentURI: " + base);
         Uri result = resolver.insert(base, cv);
         if (result == null) {
-            Toast.makeText(this, "Unable to save recorded audio", Toast.LENGTH_SHORT).show();
+            Toast.makeText(this, R.string.unable_to_store, Toast.LENGTH_SHORT).show();
             return null;
         }
         if (getPlaylistId(res) == -1) {
@@ -469,7 +475,7 @@
         cv.put(MediaStore.Audio.Playlists.NAME, res.getString(R.string.audio_db_playlist_name));
         Uri uri = resolver.insert(MediaStore.Audio.Playlists.getContentUri("external"), cv);
         if (uri == null) {
-            Toast.makeText(this, "Unable to save recorded audio", Toast.LENGTH_SHORT).show();
+            Toast.makeText(this, R.string.unable_to_store, Toast.LENGTH_SHORT).show();
         }
         return uri;
     }
diff --git a/fmapp2/AndroidManifest.xml b/fmapp2/AndroidManifest.xml
index aeb3a1c..a0ed3ca 100644
--- a/fmapp2/AndroidManifest.xml
+++ b/fmapp2/AndroidManifest.xml
@@ -74,6 +74,7 @@
         <receiver android:name="com.caf.fmradio.FMMediaButtonIntentReceiver">
             <intent-filter>
                  <action android:name="android.intent.action.MEDIA_BUTTON" />
+                 <action android:name="android.media.AUDIO_BECOMING_NOISY" />
             </intent-filter>
         </receiver>
 
diff --git a/fmapp2/res/values-zh-rCN/strings.xml b/fmapp2/res/values-zh-rCN/strings.xml
index 76936b7..d32c0cd 100644
--- a/fmapp2/res/values-zh-rCN/strings.xml
+++ b/fmapp2/res/values-zh-rCN/strings.xml
@@ -115,5 +115,6 @@
     <string name="chanl_spacing">信道间隔</string>
     <string name="set">设置</string>
     <string name="cancel">取消</string>
-	<string name="rt_plus_tags">标签</string>
+    <string name="rt_plus_tags">标签</string>
+    <string name="user_defind_band_msg">请输入有效的频段范围 76.0 - 108.0</string>
 </resources>
diff --git a/fmapp2/res/values/strings.xml b/fmapp2/res/values/strings.xml
index 146866a..a2bf1d4 100644
--- a/fmapp2/res/values/strings.xml
+++ b/fmapp2/res/values/strings.xml
@@ -263,5 +263,6 @@
     <string name="band_sweep_choose">Choose Band Sweep Method</string>
     <string name="set">Set</string>
     <string name="cancel">Cancel</string>
+    <string name="user_defind_band_msg">Enter Freq from range 76.0 - 108.0</string>
 
 </resources>
diff --git a/fmapp2/src/com/caf/fmradio/FMMediaButtonIntentReceiver.java b/fmapp2/src/com/caf/fmradio/FMMediaButtonIntentReceiver.java
index 9bc4d77..949453f 100644
--- a/fmapp2/src/com/caf/fmradio/FMMediaButtonIntentReceiver.java
+++ b/fmapp2/src/com/caf/fmradio/FMMediaButtonIntentReceiver.java
@@ -36,6 +36,7 @@
 import android.content.pm.PackageManager;
 import android.content.Context;
 import android.content.ComponentName;
+import android.media.AudioManager;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.os.Bundle;
@@ -45,9 +46,14 @@
 
 private static final String TAG = "FMMediaButtonIntentReceiver";
 public static final String FM_MEDIA_BUTTON = "com.caf.fmradio.action.MEDIA_BUTTON";
+public static final String AUDIO_BECOMING_NOISY = "com.caf.fmradio.action.AUDIO_BECOMING_NOISY";
 public void onReceive(Context context, Intent intent) {
-        String action = intent.getAction();
-       if ((action != null) && action.equals("android.intent.action.MEDIA_BUTTON")) {
+       String action = intent.getAction();
+       if ((action != null) && action.equals(AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
+           Log.d(TAG, "ACTION_AUDIO_BECOMING_NOISY intent received for ACTION_HEADSET_PLUG");
+           Intent i = new Intent(AUDIO_BECOMING_NOISY);
+           context.sendBroadcast(i);
+       } else if ((action != null) && action.equals("android.intent.action.MEDIA_BUTTON")) {
            KeyEvent event = (KeyEvent)
                     intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
 
diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index 9d48888..870df8c 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -962,6 +962,7 @@
                       RestoreDefaults();
                       enableRadioOnOffUI();
                       tuneRadio(FmSharedPreferences.DEFAULT_NO_FREQUENCY);
+                      FmSharedPreferences.addStation("", FmSharedPreferences.DEFAULT_NO_FREQUENCY, 0);
                   }
                }
             }
@@ -2046,11 +2047,9 @@
             String display = "";
             if (station != null) {
                display = station.getName();
-                Log.e(LOGTAG, "Venkat:before" + display );
                 if (display.length() > 6)
-		 display = display.substring(0,6)+"...";
-	       Log.e(LOGTAG, "Venkat: after" + display );
-		mPresetButtons[buttonIndex].setEllipsize(TextUtils.TruncateAt.END);
+                    display = display.substring(0,6)+"...";
+	       mPresetButtons[buttonIndex].setEllipsize(TextUtils.TruncateAt.END);
                mPresetButtons[buttonIndex].setText(display);
                mPresetButtons[buttonIndex].setTag(station);
                mPresetButtons[buttonIndex].setHeight(-1);
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 005bdff..3ed64bc 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -106,6 +106,7 @@
    private boolean mSleepActive = false;
    private BroadcastReceiver mRecordTimeoutListener = null;
    private BroadcastReceiver mDelayedServiceStopListener = null;
+   private BroadcastReceiver mAudioBecomeNoisyListener = null;
    private boolean mOverA2DP = false;
    private BroadcastReceiver mFmMediaButtonListener;
    private IFMRadioServiceCallbacks mCallbacks;
@@ -204,6 +205,7 @@
       // registering media button receiver seperately as we need to set
       // different priority for receiving media events
       registerFmMediaButtonReceiver();
+      registerAudioBecomeNoisy();
       if ( false == SystemProperties.getBoolean("ro.fm.mulinst.recording.support",true)) {
            mSingleRecordingInstanceSupported = true;
       }
@@ -257,6 +259,10 @@
           unregisterReceiver(mFmMediaButtonListener);
           mFmMediaButtonListener = null;
       }
+      if (mAudioBecomeNoisyListener != null) {
+          unregisterReceiver(mAudioBecomeNoisyListener);
+          mAudioBecomeNoisyListener = null;
+      }
       if (mSleepExpiredListener != null ) {
           unregisterReceiver(mSleepExpiredListener);
           mSleepExpiredListener = null;
@@ -505,6 +511,40 @@
          }
      }
 
+    public void registerAudioBecomeNoisy() {
+        if (mAudioBecomeNoisyListener == null) {
+            mAudioBecomeNoisyListener = new BroadcastReceiver() {
+                @Override
+                public void onReceive(Context context, Intent intent) {
+                    Log.d(LOGTAG, "FMMediaButtonIntentReceiver.AUDIO_BECOMING_NOISY");
+                    String intentAction = intent.getAction();
+                    if (FMMediaButtonIntentReceiver.AUDIO_BECOMING_NOISY.equals(intentAction)) {
+                       if (isFmOn())
+                       {
+                           /* Disable FM and let the UI know */
+                           fmOff();
+                           try
+                           {
+                              /* Notify the UI/Activity, only if the service is "bound"
+                              by an activity and if Callbacks are registered
+                              */
+                              if((mServiceInUse) && (mCallbacks != null) )
+                              {
+                                  mCallbacks.onDisabled();
+                              }
+                           } catch (RemoteException e)
+                           {
+                               e.printStackTrace();
+                           }
+                       }
+                    }
+                }
+            };
+            IntentFilter intentFilter = new IntentFilter(FMMediaButtonIntentReceiver.AUDIO_BECOMING_NOISY);
+            registerReceiver(mAudioBecomeNoisyListener, intentFilter);
+        }
+    }
+
     public void registerMusicServiceCommandReceiver() {
         if (mMusicCommandListener == null) {
             mMusicCommandListener = new BroadcastReceiver() {
@@ -599,6 +639,8 @@
             /* Update the UI based on the state change of the headset/antenna*/
             if(!isAntennaAvailable())
             {
+                if (!isFmOn())
+                    return;
                 /* Disable FM and let the UI know */
                 fmOff();
                 try
@@ -1142,11 +1184,26 @@
               switch (msg.arg1) {
                   case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                       Log.v(LOGTAG, "AudioFocus: received AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
+                  case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
+                      Log.v(LOGTAG, "AudioFocus: received AUDIOFOCUS_LOSS_TRANSIENT");
+                      if (mSpeakerPhoneOn) {
+                         mSpeakerDisableHandler.removeCallbacks(mSpeakerDisableTask);
+                         mSpeakerDisableHandler.postDelayed(mSpeakerDisableTask, 0);
+                      }
+                      if (true == mPlaybackInProgress) {
+                          if(mMuted)
+                             unMute();
+                          stopFM();
+                      }
+                      if (mSpeakerPhoneOn) {
+                          if (isAnalogModeSupported())
+                              setAudioPath(false);
+                      }
+                      mStoppedOnFocusLoss = true;
+                      break;
                   case AudioManager.AUDIOFOCUS_LOSS:
                       Log.v(LOGTAG, "AudioFocus: received AUDIOFOCUS_LOSS");
                       //intentional fall through.
-                  case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
-                      Log.v(LOGTAG, "AudioFocus: received AUDIOFOCUS_LOSS_TRANSIENT");
                       if (true == isFmRecordingOn())
                           stopRecording();
                       if (mSpeakerPhoneOn) {
@@ -1739,6 +1796,12 @@
       if (isFmRecordingOn())
       {
           stopRecording();
+          try {
+               Thread.sleep(300);
+          } catch (Exception ex) {
+               Log.d( LOGTAG, "RunningThread InterruptedException");
+               return;
+          }
       }
       AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
       if(audioManager != null)
diff --git a/fmapp2/src/com/caf/fmradio/HorizontalNumberPicker.java b/fmapp2/src/com/caf/fmradio/HorizontalNumberPicker.java
index ac886bb..505097f 100644
--- a/fmapp2/src/com/caf/fmradio/HorizontalNumberPicker.java
+++ b/fmapp2/src/com/caf/fmradio/HorizontalNumberPicker.java
@@ -1600,7 +1600,11 @@
         for (int i = 0; i < mSelectorIndices.length; i++) {
             int selectorIndex = current + (i - mSelectorMiddleItemIndex);
             if (mWrapSelectorWheel) {
-                selectorIndex = getWrappedSelectorIndex(selectorIndex);
+                try {
+                    selectorIndex = getWrappedSelectorIndex(selectorIndex);
+                } catch(RuntimeException e) {
+                    e.printStackTrace();
+                }
             }
             mSelectorIndices[i] = selectorIndex;
             ensureCachedScrollSelectorValue(mSelectorIndices[i]);
@@ -1622,7 +1626,11 @@
         }
         // Wrap around the values if we go past the start or end
         if (mWrapSelectorWheel) {
-            current = getWrappedSelectorIndex(current);
+            try {
+                current = getWrappedSelectorIndex(current);
+            } catch(RuntimeException e) {
+                e.printStackTrace();
+            }
         }
         int previous = mValue;
         setValue(current);
diff --git a/fmapp2/src/com/caf/fmradio/PresetStation.java b/fmapp2/src/com/caf/fmradio/PresetStation.java
index 77bf648..bcbb55e 100644
--- a/fmapp2/src/com/caf/fmradio/PresetStation.java
+++ b/fmapp2/src/com/caf/fmradio/PresetStation.java
@@ -29,7 +29,7 @@
 package com.caf.fmradio;
 
 import qcom.fmradio.FmReceiver;
-
+import java.util.Locale;
 import android.text.TextUtils;
 //import android.util.Log;
 
@@ -638,132 +638,236 @@
       {
          case 1:
          {
-            ptyStr = "News";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "新闻";
+            else
+                ptyStr = "News";
             break;
          }
          case 2:
          {
-            ptyStr = "Information";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "信息频道";
+            else
+                ptyStr = "Information";
             break;
          }
          case 3:
          {
-            ptyStr = "Sports";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "体育";
+            else
+                ptyStr = "Sports";
             break;
          }
          case 4:
          {
-            ptyStr = "Talk";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "交流";
+            else
+                ptyStr = "Talk";
             break;
          }
          case 5:
          {
-            ptyStr = "Rock";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "摇滚";
+            else
+                ptyStr = "Rock";
             break;
          }
          case 6:
          {
-            ptyStr = "Classic Rock";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "经典摇滚";
+            else
+                ptyStr = "Classic Rock";
             break;
          }
          case 7:
          {
-            ptyStr = "Adult Hits";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "成人点击";
+            else
+                ptyStr = "Adult Hits";
             break;
          }
          case 8:
          {
-            ptyStr = "Soft Rock";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "轻摇滚";
+            else
+                ptyStr = "Soft Rock";
             break;
          }
          case 9:
          {
-            ptyStr = "Top 40";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "前40";
+            else
+                ptyStr = "Top 40";
             break;
          }
          case 10:
          {
-            ptyStr = "Country";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "乡村";
+            else
+                ptyStr = "Country";
             break;
          }
          case 11:
          {
-            ptyStr = "Oldies";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "老歌";
+            else
+                ptyStr = "Oldies";
             break;
          }
          case 12:
          {
-            ptyStr = "Soft";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "轻音乐";
+            else
+                ptyStr = "Soft";
             break;
          }
          case 13:
          {
-            ptyStr = "Nostalgia";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "怀旧";
+            else
+                ptyStr = "Nostalgia";
             break;
          }
          case 14:
          {
-            ptyStr = "Jazz";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "爵士";
+            else
+                ptyStr = "Jazz";
             break;
          }
          case 15:
          {
-            ptyStr = "Classical";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "古典";
+            else
+                ptyStr = "Classical";
             break;
          }
          case 16:
          {
-            ptyStr = "Rhythm and Blues";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "节奏布鲁斯";
+            else
+                ptyStr = "Rhythm and Blues";
             break;
          }
          case 17:
          {
-            ptyStr = "Soft Rhythm and Blues";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "轻节奏布鲁斯";
+            else
+                ptyStr = "Soft Rhythm and Blues";
             break;
          }
          case 18:
          {
-            ptyStr = "Foreign Language";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "外语频道";
+            else
+                ptyStr = "Foreign Language";
             break;
          }
          case 19:
          {
-            ptyStr = "Religious Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "宗教音乐";
+            else
+                ptyStr = "Religious Music";
             break;
          }
          case 20:
          {
-            ptyStr = "Religious Talk";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "宗教交流";
+            else
+                ptyStr = "Religious Talk";
             break;
          }
          case 21:
          {
-            ptyStr = "Personality";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "个性";
+            else
+                ptyStr = "Personality";
             break;
          }
          case 22:
          {
-            ptyStr = "Public";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "公共频道";
+            else
+                ptyStr = "Public";
             break;
          }
          case 23:
          {
-            ptyStr = "College";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "校园";
+            else
+                ptyStr = "College";
             break;
          }
          case 29:
          {
-            ptyStr = "Weather";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "天气";
+            else
+                ptyStr = "Weather";
             break;
          }
          case 30:
          {
-            ptyStr = "Emergency Test";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "紧急 测试";
+            else
+                ptyStr = "Emergency Test";
             break;
          }
          case 31:
          {
-            ptyStr = "Emergency";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "紧急";
+            else
+                ptyStr = "Emergency";
             break;
          }
          default:
@@ -784,157 +888,281 @@
       {
          case 1:
          {
-            ptyStr = "News";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "新闻";
+            else
+                ptyStr = "News";
             break;
          }
          case 2:
          {
-            ptyStr = "Current Affairs";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "新闻时事";
+            else
+                ptyStr = "Current Affairs";
             break;
          }
          case 3:
          {
-            ptyStr = "Information";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "信息";
+            else
+                ptyStr = "Information";
             break;
          }
          case 4:
          {
-            ptyStr = "Sport";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "体育";
+            else
+                ptyStr = "Sport";
             break;
          }
          case 5:
          {
-            ptyStr = "Education";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "教育";
+            else
+                ptyStr = "Education";
             break;
          }
          case 6:
          {
-            ptyStr = "Drama";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "戏剧";
+            else
+                ptyStr = "Drama";
             break;
          }
          case 7:
          {
-            ptyStr = "Culture";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "文化";
+            else
+                ptyStr = "Culture";
             break;
          }
          case 8:
          {
-            ptyStr = "Science";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "科学";
+            else
+                ptyStr = "Science";
             break;
          }
          case 9:
          {
-            ptyStr = "Varied";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "变奏";
+            else
+                ptyStr = "Varied";
             break;
          }
          case 10:
          {
-            ptyStr = "Pop Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "流行音乐";
+            else
+                ptyStr = "Pop Music";
             break;
          }
          case 11:
          {
-            ptyStr = "Rock Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "摇滚音乐";
+            else
+                ptyStr = "Rock Music";
             break;
          }
          case 12:
          {
-            ptyStr = "Easy Listening Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "轻音乐";
+            else
+                ptyStr = "Easy Listening Music";
             break;
          }
          case 13:
          {
-            ptyStr = "Light classical";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "轻古典音乐";
+            else
+                ptyStr = "Light classical";
             break;
          }
          case 14:
          {
-            ptyStr = "Serious classical";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "古典";
+            else
+                ptyStr = "Serious classical";
             break;
          }
          case 15:
          {
-            ptyStr = "Other Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "其他音乐";
+            else
+                ptyStr = "Other Music";
             break;
          }
          case 16:
          {
-            ptyStr = "Weather";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "天气";
+            else
+                ptyStr = "Weather";
             break;
          }
          case 17:
          {
-            ptyStr = "Finance";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "经济";
+            else
+                ptyStr = "Finance";
             break;
          }
          case 18:
          {
-            ptyStr = "Children programs";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "儿童节目";
+            else
+                ptyStr = "Children programs";
             break;
          }
          case 19:
          {
-            ptyStr = "Social Affairs";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "社会事务";
+            else
+                ptyStr = "Social Affairs";
             break;
          }
          case 20:
          {
-            ptyStr = "Religion";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "宗教";
+            else
+                ptyStr = "Religion";
             break;
          }
          case 21:
          {
-            ptyStr = "Phone In";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "听众来电";
+            else
+                ptyStr = "Phone In";
             break;
          }
          case 22:
          {
-            ptyStr = "Travel";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "旅行";
+            else
+                ptyStr = "Travel";
             break;
          }
          case 23:
          {
-            ptyStr = "Leisure";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "休闲";
+            else
+                ptyStr = "Leisure";
             break;
          }
          case 24:
          {
-            ptyStr = "Jazz Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "爵士音乐";
+            else
+                ptyStr = "Jazz Music";
             break;
          }
          case 25:
          {
-            ptyStr = "Country Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "乡村音乐";
+            else
+                ptyStr = "Country Music";
             break;
          }
          case 26:
          {
-            ptyStr = "National Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "民族音乐";
+            else
+                ptyStr = "National Music";
             break;
          }
          case 27:
          {
-            ptyStr = "Oldies Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "怀旧";
+            else
+                ptyStr = "Oldies Music";
             break;
          }
          case 28:
          {
-            ptyStr = "Folk Music";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "民族音乐";
+            else
+                ptyStr = "Folk Music";
             break;
          }
          case 29:
          {
-            ptyStr = "Documentary";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "记录";
+            else
+                ptyStr = "Documentary";
             break;
          }
          case 30:
          {
-            ptyStr = "Emergency Test";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "紧急测试";
+            else
+                ptyStr = "Emergency Test";
             break;
          }
          case 31:
          {
-            ptyStr = "Emergency";
+            if ((Locale.getDefault().getLanguage().equals("zh"))
+                || (Locale.getDefault().getLanguage().equals("zh_CN")))
+                ptyStr = "紧急";
+            else
+                ptyStr = "Emergency";
             break;
          }
          default:
diff --git a/fmapp2/src/com/caf/fmradio/Settings.java b/fmapp2/src/com/caf/fmradio/Settings.java
index d64621b..03f88c1 100644
--- a/fmapp2/src/com/caf/fmradio/Settings.java
+++ b/fmapp2/src/com/caf/fmradio/Settings.java
@@ -317,7 +317,8 @@
                   setBandSummary(summaryBandItems.length - 1);
                   clearStationList();
                }else {
-                  displayToast(USR_BAND_MSG);
+                  Toast.makeText(this, getString(R.string.user_defind_band_msg),
+                                                            Toast.LENGTH_SHORT).show();
                }
            }else if(key.equals(USER_DEFINED_BAND_MAX_KEY)) {
                String valStr = mUserBandMaxPref.getText();
@@ -336,7 +337,8 @@
                   setBandSummary(summaryBandItems.length - 1);
                   clearStationList();
                }else {
-                  displayToast(USR_BAND_MSG);
+                  Toast.makeText(this, getString(R.string.user_defind_band_msg),
+                                                            Toast.LENGTH_SHORT).show();
                }
           }else {
               if(mRxMode) {
