Merge change I721361f1 into eclair

* changes:
  Add a new priority for Auto Connection of A2DP. DO NOT MERGE.
diff --git a/api/current.xml b/api/current.xml
index 1dbe58f..51df39b 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -124750,6 +124750,20 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="rssi" type="int">
+</parameter>
+<parameter name="location" type="java.lang.String">
+</parameter>
+<parameter name="radioType" type="int">
+</parameter>
+</constructor>
+<constructor name="NeighboringCellInfo"
+ type="android.telephony.NeighboringCellInfo"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
 <parameter name="in" type="android.os.Parcel">
 </parameter>
 </constructor>
@@ -125561,6 +125575,21 @@
 <parameter name="state" type="int">
 </parameter>
 </method>
+<method name="onDataConnectionStateChanged"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="state" type="int">
+</parameter>
+<parameter name="networkType" type="int">
+</parameter>
+</method>
 <method name="onMessageWaitingIndicatorChanged"
  return="void"
  abstract="false"
@@ -125600,6 +125629,19 @@
 <parameter name="asu" type="int">
 </parameter>
 </method>
+<method name="onSignalStrengthsChanged"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="signalStrength" type="android.telephony.SignalStrength">
+</parameter>
+</method>
 <field name="LISTEN_CALL_FORWARDING_INDICATOR"
  type="int"
  transient="false"
@@ -125695,6 +125737,17 @@
  value="2"
  static="true"
  final="true"
+ deprecated="deprecated"
+ visibility="public"
+>
+</field>
+<field name="LISTEN_SIGNAL_STRENGTHS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="256"
+ static="true"
+ final="true"
  deprecated="not deprecated"
  visibility="public"
 >
@@ -125976,6 +126029,131 @@
 >
 </field>
 </class>
+<class name="SignalStrength"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getCdmaDbm"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getCdmaEcio"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEvdoDbm"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEvdoEcio"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEvdoSnr"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGsmBitErrorRate"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGsmSignalStrength"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isGsm"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="out" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+</class>
 <class name="SmsManager"
  extends="java.lang.Object"
  abstract="false"
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 7433a79..f7e55db 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1409,6 +1409,13 @@
         public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
 
         /**
+         * Whether the notification LED should repeatedly flash when a notification is
+         * pending. The value is boolean (1 or 0).
+         * @hide
+         */
+        public static final String NOTIFICATION_LIGHT_PULSE = "notification_light_pulse";
+
+        /**
          * Settings to backup. This is here so that it's in the same place as the settings
          * keys and easy to update.
          * @hide
@@ -1462,7 +1469,8 @@
             TTY_MODE,
             SOUND_EFFECTS_ENABLED,
             HAPTIC_FEEDBACK_ENABLED,
-            SHOW_WEB_SUGGESTIONS
+            SHOW_WEB_SUGGESTIONS,
+            NOTIFICATION_LIGHT_PULSE
         };
 
         // Settings moved to Settings.Secure
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 2495d9a..3f52293 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -210,11 +210,11 @@
     <string name="permlab_batteryStats" msgid="7863923071360031652">"修改电池统计信息"</string>
     <string name="permdesc_batteryStats" msgid="5847319823772230560">"允许修改收集的电池使用情况统计信息。普通应用程序不能使用此权限。"</string>
     <string name="permlab_backup" msgid="470013022865453920">"控制系统备份和还原"</string>
-    <string name="permdesc_backup" msgid="4837493065154256525">"允许应用程序控制系统的备份和还原机制。不适用于普通应用程序。"</string>
+    <string name="permdesc_backup" msgid="4837493065154256525">"允许应用程序控制系统的备份和还原机制。普通应用程序不能使用此权限。"</string>
     <string name="permlab_backup_data" msgid="4057625941707926463">"备份与还原应用程序数据"</string>
     <string name="permdesc_backup_data" msgid="8274426305151227766">"允许应用程序参与系统的备份和还原机制。"</string>
     <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"显示未授权的窗口"</string>
-    <string name="permdesc_internalSystemWindow" msgid="5895082268284998469">"允许创建专用于内部系统用户界面的窗口。普通应用程序无此权限。"</string>
+    <string name="permdesc_internalSystemWindow" msgid="5895082268284998469">"允许创建专用于内部系统用户界面的窗口。普通应用程序不能使用此权限。"</string>
     <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"显示系统级警报"</string>
     <string name="permdesc_systemAlertWindow" msgid="5109622689323490558">"允许应用程序显示系统警报窗口。恶意应用程序可借此掌控整个手机屏幕。"</string>
     <string name="permlab_setAnimationScale" msgid="2805103241153907174">"修改全局动画速度"</string>
@@ -258,7 +258,7 @@
     <string name="permlab_writeSettings" msgid="1365523497395143704">"修改全局系统设置"</string>
     <string name="permdesc_writeSettings" msgid="838789419871034696">"允许应用程序修改系统设置方面的数据。恶意应用程序可借此破坏您的系统配置。"</string>
     <string name="permlab_writeSecureSettings" msgid="204676251876718288">"修改安全系统设置"</string>
-    <string name="permdesc_writeSecureSettings" msgid="5497873143539034724">"允许应用程序修改系统的安全设置数据。不适用于普通应用程序。"</string>
+    <string name="permdesc_writeSecureSettings" msgid="5497873143539034724">"允许应用程序修改系统的安全设置数据。普通应用程序不能使用此权限。"</string>
     <string name="permlab_writeGservices" msgid="2149426664226152185">"修改 Google 服务地图"</string>
     <string name="permdesc_writeGservices" msgid="6602362746516676175">"允许应用程序修改 Google 服务地图。普通应用程序不能使用此权限。"</string>
     <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"开机时自动启动"</string>
@@ -318,11 +318,11 @@
     <string name="permlab_performCdmaProvisioning" msgid="5604848095315421425">"直接启动 CDMA 电话设置"</string>
     <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"允许应用程序启动 CDMA 服务。恶意应用程序可能会无端启动 CDMA 服务"</string>
     <string name="permlab_locationUpdates" msgid="7785408253364335740">"控制位置更新通知"</string>
-    <string name="permdesc_locationUpdates" msgid="2300018303720930256">"允许启用/禁用来自收音机的位置更新通知。普通应用程序不能使用此权限。"</string>
+    <string name="permdesc_locationUpdates" msgid="2300018303720930256">"允许启用/停用来自收音机的位置更新通知。普通应用程序不能使用此权限。"</string>
     <string name="permlab_checkinProperties" msgid="7855259461268734914">"访问检入属性"</string>
     <string name="permdesc_checkinProperties" msgid="7150307006141883832">"允许对检入服务上传的属性进行读/写访问。普通应用程序不能使用此权限。"</string>
     <string name="permlab_bindGadget" msgid="776905339015863471">"选择窗口小部件"</string>
-    <string name="permdesc_bindGadget" msgid="2098697834497452046">"允许应用程序告诉系统哪个应用程序可以使用哪些窗口小部件。具有该权限的应用程序可以允许其他应用程序访问个人数据。普通应用程序不适合使用此权限。"</string>
+    <string name="permdesc_bindGadget" msgid="2098697834497452046">"允许应用程序告诉系统哪个应用程序可以使用哪些窗口小部件。具有该权限的应用程序可以允许其他应用程序访问个人数据。普通应用程序不能使用此权限。"</string>
     <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"修改手机状态"</string>
     <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"允许应用程序控制设备的电话功能。拥有此权限的应用程序可自行切换网络、打开和关闭无线通信等。"</string>
     <string name="permlab_readPhoneState" msgid="2326172951448691631">"读取手机状态和身份"</string>
@@ -332,13 +332,13 @@
     <string name="permlab_devicePower" msgid="4928622470980943206">"开机或关机"</string>
     <string name="permdesc_devicePower" msgid="4577331933252444818">"允许应用程序打开或关闭手机。"</string>
     <string name="permlab_factoryTest" msgid="3715225492696416187">"在出厂测试模式下运行"</string>
-    <string name="permdesc_factoryTest" msgid="8136644990319244802">"作为低级别制造商测试运行,以允许完全访问手机硬件。此权限只有当手机在制造商测试模式下运行时才可用。"</string>
+    <string name="permdesc_factoryTest" msgid="8136644990319244802">"作为一项低级制造商测试来运行,从而允许对手机硬件进行完全访问。此权限仅当手机在制造商测试模式下运行时才可用。。"</string>
     <string name="permlab_setWallpaper" msgid="6627192333373465143">"设置壁纸"</string>
     <string name="permdesc_setWallpaper" msgid="6417041752170585837">"允许应用程序设置系统壁纸。"</string>
-    <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"设置壁纸大小提示"</string>
-    <string name="permdesc_setWallpaperHints" msgid="6019479164008079626">"允许应用程序设置系统壁纸大小提示。"</string>
-    <string name="permlab_masterClear" msgid="2315750423139697397">"将系统重置为出厂时的默认设置"</string>
-    <string name="permdesc_masterClear" msgid="5033465107545174514">"允许应用程序将系统完全重置为出厂设置,即清除所有数据、配置和安装的应用程序。"</string>
+    <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"设置有关壁纸大小的提示"</string>
+    <string name="permdesc_setWallpaperHints" msgid="6019479164008079626">"允许应用程序设置有关壁纸大小的提示。"</string>
+    <string name="permlab_masterClear" msgid="2315750423139697397">"将系统恢复为出厂设置"</string>
+    <string name="permdesc_masterClear" msgid="5033465107545174514">"允许应用程序将系统恢复为出厂设置,即清除所有数据、配置以及所安装的应用程序。"</string>
     <string name="permlab_setTimeZone" msgid="2945079801013077340">"设置时区"</string>
     <string name="permdesc_setTimeZone" msgid="1902540227418179364">"允许应用程序更改手机的时区。"</string>
     <string name="permlab_accountManagerService" msgid="4829262349691386986">"作为 AccountManagerService"</string>
@@ -353,12 +353,12 @@
     <string name="permdesc_useCredentials" msgid="7416570544619546974">"允许应用程序请求身份验证标记。"</string>
     <string name="permlab_accessNetworkState" msgid="6865575199464405769">"查看网络状态"</string>
     <string name="permdesc_accessNetworkState" msgid="558721128707712766">"允许应用程序查看所有网络的状态。"</string>
-    <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"完全访问互联网"</string>
+    <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"完全的互联网访问权限"</string>
     <string name="permdesc_createNetworkSockets" msgid="4593339106921772192">"允许应用程序创建网络套接字。"</string>
-    <string name="permlab_writeApnSettings" msgid="7823599210086622545">"写入接入点名称设置"</string>
+    <string name="permlab_writeApnSettings" msgid="7823599210086622545">"写入“接入点名称”设置"</string>
     <string name="permdesc_writeApnSettings" msgid="7443433457842966680">"允许应用程序修改 APN 设置,例如任何 APN 的代理和端口。"</string>
-    <string name="permlab_changeNetworkState" msgid="958884291454327309">"更改网络连接"</string>
-    <string name="permdesc_changeNetworkState" msgid="6278115726355634395">"允许应用程序更改网络连接状态。"</string>
+    <string name="permlab_changeNetworkState" msgid="958884291454327309">"更改网络连接性"</string>
+    <string name="permdesc_changeNetworkState" msgid="6278115726355634395">"允许应用程序更改状态网络连接性。"</string>
     <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"更改背景数据使用设置"</string>
     <string name="permdesc_changeBackgroundDataSetting" msgid="1001482853266638864">"允许应用程序更改背景数据使用设置。"</string>
     <string name="permlab_accessWifiState" msgid="8100926650211034400">"查看 Wi-Fi 状态"</string>
@@ -368,15 +368,15 @@
     <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"允许接收 Wi-Fi 多播"</string>
     <string name="permdesc_changeWifiMulticastState" msgid="8199464507656067553">"允许应用程序接收并非直接向您的设备发送的数据包。这样在查找附近提供的服务时很有用。这种操作所耗电量大于非多播模式。"</string>
     <string name="permlab_bluetoothAdmin" msgid="1092209628459341292">"蓝牙管理"</string>
-    <string name="permdesc_bluetoothAdmin" msgid="7256289774667054555">"允许应用程序配置本地蓝牙手机,以及查找远程设备并与之配对。"</string>
+    <string name="permdesc_bluetoothAdmin" msgid="7256289774667054555">"允许应用程序配置本地蓝牙手机,以及发现远程设备并与其配对。"</string>
     <string name="permlab_bluetooth" msgid="8361038707857018732">"创建蓝牙连接"</string>
-    <string name="permdesc_bluetooth" msgid="762515380679392945">"允许应用程序查看本地蓝牙手机的配置,以及建立和接受与配对设备的连接。"</string>
+    <string name="permdesc_bluetooth" msgid="762515380679392945">"允许应用程序查看本地蓝牙手机的配置,以及建立或接受与配对设备的连接。"</string>
     <string name="permlab_disableKeyguard" msgid="4977406164311535092">"停用键锁"</string>
-    <string name="permdesc_disableKeyguard" msgid="3189763479326302017">"允许应用程序停用键锁和任何关联的密码安全设置。这种情况的一个恰当示例就是这样一个手机:在接听来电时停用键锁,在通话结束后重新启用键锁。"</string>
+    <string name="permdesc_disableKeyguard" msgid="3189763479326302017">"允许应用程序停用键锁和任何关联的密码安全设置。例如,在手机上接听电话时停用键锁,在通话结束后重新启用键锁。"</string>
     <string name="permlab_readSyncSettings" msgid="6201810008230503052">"读取同步设置"</string>
-    <string name="permdesc_readSyncSettings" msgid="5315925706353341823">"允许应用程序读取同步设置,例如是否针对联系人启用同步。"</string>
+    <string name="permdesc_readSyncSettings" msgid="5315925706353341823">"允许应用程序读取同步设置,例如是否为“联系人”启用同步。"</string>
     <string name="permlab_writeSyncSettings" msgid="6297138566442486462">"写入同步设置"</string>
-    <string name="permdesc_writeSyncSettings" msgid="2498201614431360044">"允许应用程序修改同步设置,例如是否针对联系人启用同步。"</string>
+    <string name="permdesc_writeSyncSettings" msgid="2498201614431360044">"允许应用程序修改同步设置,例如是否为“联系人”启用同步。"</string>
     <string name="permlab_readSyncStats" msgid="7396577451360202448">"读取同步统计信息"</string>
     <string name="permdesc_readSyncStats" msgid="7511448343374465000">"允许应用程序读取同步统计信息;例如已发生的同步历史记录。"</string>
     <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"读取订阅的供稿"</string>
@@ -390,20 +390,20 @@
     <string name="permlab_sdcardWrite" msgid="8079403759001777291">"修改/删除 SD 卡内容"</string>
     <string name="permdesc_sdcardWrite" msgid="6643963204976471878">"允许应用程序写入 SD 卡。"</string>
   <string-array name="phoneTypes">
-    <item msgid="8901098336658710359">"住宅电话"</item>
+    <item msgid="8901098336658710359">"住宅"</item>
     <item msgid="869923650527136615">"手机"</item>
     <item msgid="7897544654242874543">"单位电话"</item>
     <item msgid="1103601433382158155">"单位传真"</item>
     <item msgid="1735177144948329370">"住宅传真"</item>
     <item msgid="603878674477207394">"寻呼机"</item>
-    <item msgid="1650824275177931637">"其他电话"</item>
-    <item msgid="9192514806975898961">"自定义电话"</item>
+    <item msgid="1650824275177931637">"其他"</item>
+    <item msgid="9192514806975898961">"自定义"</item>
   </string-array>
   <string-array name="emailAddressTypes">
-    <item msgid="8073994352956129127">"主要邮箱"</item>
-    <item msgid="7084237356602625604">"单位邮箱"</item>
-    <item msgid="1112044410659011023">"其他邮箱"</item>
-    <item msgid="2374913952870110618">"自定义邮箱"</item>
+    <item msgid="8073994352956129127">"家庭"</item>
+    <item msgid="7084237356602625604">"单位"</item>
+    <item msgid="1112044410659011023">"其他"</item>
+    <item msgid="2374913952870110618">"自定义"</item>
   </string-array>
   <string-array name="postalAddressTypes">
     <item msgid="6880257626740047286">"住宅"</item>
@@ -412,15 +412,15 @@
     <item msgid="4932682847595299369">"自定义"</item>
   </string-array>
   <string-array name="imAddressTypes">
-    <item msgid="1738585194601476694">"住宅聊天工具"</item>
-    <item msgid="1359644565647383708">"单位聊天工具"</item>
-    <item msgid="7868549401053615677">"其他聊天工具"</item>
-    <item msgid="3145118944639869809">"自定义聊天工具"</item>
+    <item msgid="1738585194601476694">"住宅"</item>
+    <item msgid="1359644565647383708">"单位"</item>
+    <item msgid="7868549401053615677">"其他"</item>
+    <item msgid="3145118944639869809">"自定义"</item>
   </string-array>
   <string-array name="organizationTypes">
     <item msgid="7546335612189115615">"单位"</item>
-    <item msgid="4378074129049520373">"其他组织"</item>
-    <item msgid="3455047468583965104">"自定义组织"</item>
+    <item msgid="4378074129049520373">"其他"</item>
+    <item msgid="3455047468583965104">"自定义"</item>
   </string-array>
   <string-array name="imProtocols">
     <item msgid="8595261363518459565">"AIM"</item>
@@ -508,12 +508,12 @@
     <string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"请参阅《用户指南》或联系客服人员。"</string>
     <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM 卡被锁定"</string>
     <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"正在解锁 SIM 卡..."</string>
-    <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="3514742106066877476">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。"\n\n"请在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后重试。"</string>
-    <string name="lockscreen_failed_attempts_almost_glogin" msgid="3351013842320127827">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,系统会要求您使用自己的 Google 登录信息解锁手机。"\n\n"请在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒后重试。"</string>
+    <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="3514742106066877476">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次绘错了自己的解锁图案。"\n\n"请在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后重试。"</string>
+    <string name="lockscreen_failed_attempts_almost_glogin" msgid="3351013842320127827">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次绘错了自己的解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,系统会要求您使用自己的 Google 登录信息解锁手机。"\n\n"请在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒后重试。"</string>
     <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> 秒后重试。"</string>
     <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"忘记了图案?"</string>
     <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"帐户解锁"</string>
-    <string name="lockscreen_glogin_too_many_attempts" msgid="2446246026221678244">"图案尝试次数过多!"</string>
+    <string name="lockscreen_glogin_too_many_attempts" msgid="2446246026221678244">"图案尝试次数太多!"</string>
     <string name="lockscreen_glogin_instructions" msgid="1816635201812207709">"要解除锁定,请使用您的 Google 帐户登录"</string>
     <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"用户名(电子邮件)"</string>
     <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"密码"</string>
@@ -527,7 +527,7 @@
     <string name="hour_cap_ampm" msgid="1829009197680861107">"<xliff:g id="AMPM">%p</xliff:g><xliff:g id="HOUR">%-l</xliff:g>点"</string>
     <string name="status_bar_clear_all_button" msgid="7774721344716731603">"清除"</string>
     <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"无通知"</string>
-    <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"正在进行"</string>
+    <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"正在进行的"</string>
     <string name="status_bar_latest_events_title" msgid="6594767438577593172">"通知"</string>
     <string name="battery_status_text_percent_format" msgid="7660311274698797147">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
     <string name="battery_status_charging" msgid="756617993998772213">"正在充电..."</string>
@@ -536,7 +536,7 @@
     <string name="battery_low_percent_format" msgid="696154104579022959">"电量剩余 <xliff:g id="NUMBER">%d%%</xliff:g> 或更少。"</string>
     <string name="battery_low_why" msgid="7279169609518386372">"电量使用情况"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"出厂测试失败"</string>
-    <string name="factorytest_not_system" msgid="4435201656767276723">"只有 /system/app 中安装的包支持 FACTORY_TEST 操作。"</string>
+    <string name="factorytest_not_system" msgid="4435201656767276723">"只有在 /system/app 中安装的包支持 FACTORY_TEST 操作。"</string>
     <string name="factorytest_no_action" msgid="872991874799998561">"未发现支持 FACTORY_TEST 操作的包。"</string>
     <string name="factorytest_reboot" msgid="6320168203050791643">"重新启动"</string>
     <string name="js_dialog_title" msgid="8143918455087008109">"“<xliff:g id="TITLE">%s</xliff:g>”处的页面表明:"</string>
@@ -549,11 +549,11 @@
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"写入浏览器的历史记录和书签"</string>
     <string name="permdesc_writeHistoryBookmarks" msgid="945571990357114950">"允许应用程序修改存储在手机中的浏览器历史记录或书签。恶意应用程序可借此清除或修改浏览器数据。"</string>
     <string name="save_password_message" msgid="767344687139195790">"是否希望浏览器记住此密码?"</string>
-    <string name="save_password_notnow" msgid="6389675316706699758">"此时不保存密码"</string>
+    <string name="save_password_notnow" msgid="6389675316706699758">"暂不保存"</string>
     <string name="save_password_remember" msgid="6491879678996749466">"记住"</string>
     <string name="save_password_never" msgid="8274330296785855105">"从不"</string>
     <string name="open_permission_deny" msgid="5661861460947222274">"您无权打开此网页。"</string>
-    <string name="text_copied" msgid="4985729524670131385">"文字已复制到剪贴板。"</string>
+    <string name="text_copied" msgid="4985729524670131385">"文本已复制到剪贴板。"</string>
     <string name="more_item_label" msgid="4650918923083320495">"更多"</string>
     <string name="prepend_shortcut_label" msgid="2572214461676015642">"MENU+"</string>
     <string name="menu_space_shortcut_label" msgid="2410328639272162537">"空格"</string>
@@ -658,8 +658,8 @@
     <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
     <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
     <string name="selectAll" msgid="6876518925844129331">"全选"</string>
-    <string name="selectText" msgid="3889149123626888637">"选择文字"</string>
-    <string name="stopSelectingText" msgid="4157931463872320996">"停止选择文字"</string>
+    <string name="selectText" msgid="3889149123626888637">"选择文本"</string>
+    <string name="stopSelectingText" msgid="4157931463872320996">"停止选择文本"</string>
     <string name="cut" msgid="3092569408438626261">"剪切"</string>
     <string name="cutAll" msgid="2436383270024931639">"全部剪切"</string>
     <string name="copy" msgid="2681946229533511987">"复制"</string>
@@ -695,7 +695,7 @@
     <string name="report" msgid="4060218260984795706">"报告"</string>
     <string name="wait" msgid="7147118217226317732">"等待"</string>
     <string name="debug" msgid="9103374629678531849">"调试"</string>
-    <string name="sendText" msgid="5132506121645618310">"选择要对文字执行的操作"</string>
+    <string name="sendText" msgid="5132506121645618310">"选择要对文本执行的操作"</string>
     <string name="volume_ringtone" msgid="6885421406845734650">"铃声音量"</string>
     <string name="volume_music" msgid="5421651157138628171">"媒体音量"</string>
     <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"通过蓝牙播放"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index e4b9f3a..fb84633 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -520,12 +520,9 @@
     <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"登入"</string>
     <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"使用者名稱或密碼錯誤。"</string>
     <string name="lockscreen_glogin_checking_password" msgid="6758890536332363322">"檢查中..."</string>
-    <!-- no translation found for lockscreen_unlock_label (737440483220667054) -->
-    <skip />
-    <!-- no translation found for lockscreen_sound_on_label (9068877576513425970) -->
-    <skip />
-    <!-- no translation found for lockscreen_sound_off_label (996822825154319026) -->
-    <skip />
+    <string name="lockscreen_unlock_label" msgid="737440483220667054">"解除封鎖"</string>
+    <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"開啟音效"</string>
+    <string name="lockscreen_sound_off_label" msgid="996822825154319026">"關閉音效"</string>
     <string name="hour_ampm" msgid="4329881288269772723">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string>
     <string name="hour_cap_ampm" msgid="1829009197680861107">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string>
     <string name="status_bar_clear_all_button" msgid="7774721344716731603">"清除"</string>
diff --git a/docs/html/guide/appendix/api-levels.jd b/docs/html/guide/appendix/api-levels.jd
index 5487487..2c255a99 100644
--- a/docs/html/guide/appendix/api-levels.jd
+++ b/docs/html/guide/appendix/api-levels.jd
@@ -123,7 +123,9 @@
 API Level, rather than being restricted to using only those defined 
 for the minimum API Level.</li>
 <li><code>android:maxSdkVersion</code> &mdash; Specifies the maximum API Level
-on which the application is able to run.</li>
+on which the application is able to run. <strong>Important:</strong> Please read the <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
+documentation before using this attribute.  </li>
 </ul>
 
 <p>For example, to specify the minimum system API Level that an application
@@ -133,10 +135,11 @@
 corresponding to the API Level of the earliest version of the Android platform
 under which the application can run. </p>
 
-<p>When the user attempts to install an application, the Android system first
-checks the <code>&lt;uses-sdk&gt;</code> attributes in the application's
-manifest and compares them against its own internal API Level. The system
-allows the installation to begin only if these conditions are met:</p>
+<p>When the user attempts to install an application, or when revalidating an
+appplication after a system update, the Android system first checks the
+<code>&lt;uses-sdk&gt;</code> attributes in the application's manifest and
+compares the values against its own internal API Level. The system allows the
+installation to begin only if these conditions are met:</p>
 
 <ul>
 <li>If a <code>android:minSdkVersion</code> attribute is declared, its value
@@ -145,7 +148,9 @@
 <li>If a <code>android:maxSdkVersion</code> attribute is declared, its value
 must be equal to or greater than the system's API Level integer. 
 If not declared, the system assumes that the application
-has no maximum API Level. </li>
+has no maximum API Level. Please read the <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
+documentation for more information about how the system handles this attribute.</li>
 </ul>
 
 <p>When declared in an application's manifest, a <code>&lt;uses-sdk&gt;</code>
diff --git a/docs/html/guide/publishing/versioning.jd b/docs/html/guide/publishing/versioning.jd
index 0bec658..e2ee684 100644
--- a/docs/html/guide/publishing/versioning.jd
+++ b/docs/html/guide/publishing/versioning.jd
@@ -141,9 +141,16 @@
 <li><code>android:minSdkVersion</code> &mdash; The minimum version
 of the Android platform on which the application will run, specified
 by the platform's API Level identifier. </li>
+<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
+on which the application is designed to run. In some cases, this allows the
+application to use manifest elements or behaviors defined in the target
+API Level, rather than being restricted to using only those defined 
+for the minimum API Level.</li>
 <li><code>android:maxSdkVersion</code> &mdash; The maximum version
 of the Android platform on which the application is designed to run, 
-specified by the platform's API Level identifier.  </li>
+specified by the platform's API Level identifier. <strong>Important:</strong> Please read the <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
+documentation before using this attribute. </li>
 </ul>
 
 <p>When preparing to install your application, the system checks the value of this
diff --git a/docs/html/guide/samples/images/BluetoothChat1.png b/docs/html/guide/samples/images/BluetoothChat1.png
new file mode 100644
index 0000000..f87da6a
--- /dev/null
+++ b/docs/html/guide/samples/images/BluetoothChat1.png
Binary files differ
diff --git a/docs/html/guide/samples/images/BluetoothChat2.png b/docs/html/guide/samples/images/BluetoothChat2.png
new file mode 100644
index 0000000..6218eff
--- /dev/null
+++ b/docs/html/guide/samples/images/BluetoothChat2.png
Binary files differ
diff --git a/docs/html/guide/topics/manifest/supports-screens-element.jd b/docs/html/guide/topics/manifest/supports-screens-element.jd
index 3fb0172..5494320 100644
--- a/docs/html/guide/topics/manifest/supports-screens-element.jd
+++ b/docs/html/guide/topics/manifest/supports-screens-element.jd
@@ -84,7 +84,7 @@
 <dt>see also:</dt>
 <dd>
   <ul>
-    <li><a href="{@docRoot}guide/practices/screens_suppport.html">Multiple Screens Support</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">Multiple Screens Support</a></li>
     <li>{@link android.util.DisplayMetrics}</li>
   </ul>
 </dd>
diff --git a/docs/html/guide/topics/manifest/uses-sdk-element.jd b/docs/html/guide/topics/manifest/uses-sdk-element.jd
index aa1e8ae..f8aff1e 100644
--- a/docs/html/guide/topics/manifest/uses-sdk-element.jd
+++ b/docs/html/guide/topics/manifest/uses-sdk-element.jd
@@ -5,8 +5,8 @@
 <dt>syntax:</dt>
 <dd><pre>
 &lt;uses-sdk android:<a href="#min">minSdkVersion</a>="<i>integer</i>" 
-          android:<a href="#max">maxSdkVersion</a>="<i>integer</i>"
-          android:<a href="#target">targetSdkVersion</a>="<i>integer</i>" /&gt;</pre></dd>
+          android:<a href="#target">targetSdkVersion</a>="<i>integer</i>"
+          android:<a href="#max">maxSdkVersion</a>="<i>integer</i>" /&gt;</pre></dd>
 
 <dt>contained in:</dt>
 <dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>
@@ -17,19 +17,31 @@
 API Level of a given Android system, which may vary among different Android devices.
 </p>
 
-<p>
-Despite its name, this element is used to specify the API Level, <em>not</em> the 
-version number of the SDK (software development kit).  The API Level is always 
-a single integer; the SDK version may be split into major and minor components 
-(such as 1.5).  You cannot derive the API Level from the SDK version number 
-(for example, it is not the same as the major version or the sum of the major 
-and minor versions).</p>
+<p>Despite its name, this element is used to specify the API Level, <em>not</em>
+the version number of the SDK (software development kit) or Android platform. 
+The API Level is always a single integer. You cannot derive the API Level from
+its associated Android version number (for example, it is not the same as the
+major version or the sum of the major and minor versions).</p>
 
 <p>For more information, read about 
 <a href="{@docRoot}guide/appendix/api-levels.html">Android API Levels</a> and
 <a href="{@docRoot}guide/publishing/versioning.html">Versioning Your Applications</a>.
 </p></dd> 
 
+ <div class="sidebox-wrapper" xstyle="margin-bottom:2em;margin-top:.5em;width:90%;"> 
+  <img id="rule" src="{@docRoot}assets/images/grad-rule-qv.png"> 
+  <div id="qv-sub-rule"> 
+    <img src="{@docRoot}assets/images/icon_market.jpg" style="float:left;margin:0;padding:0;"> 
+    <p style="color:#669999;">Android Market and &lt;uses-sdk&gt; attributes</p> 
+    <p>Android Market filters the applications that are visible to users, so
+that users can only see and download applications that are compatible with their
+devices. One of the ways Market filters applications is by Android
+version-compatibility. To do this, Market checks the <code>&lt;uses-sdk&gt;</code>
+attributes in each application's manifest to establish its version-compatibility
+range, then shows or hides the application based on a comparison with the API
+Level of the user's Android system version. </p>
+  </div>
+</div>
 
 <dt>attributes:</dt>
 
@@ -40,44 +52,86 @@
   for the application to run. The Android system will prevent the user from installing
   the application if the system's API Level is lower than the value specified in
   this attribute. You should always declare this attribute.
-  
-  <p class="caution"><strong>Caution:</strong>
-  If you do not declare this attribute, then a value of "1" is assumed, which
-  indicates that your application is compatible with all versions of Android. If your
-  application is <em>not</em> compatible with all versions (for instance, it uses APIs
-  introduced in API Level 3) and you have not declared the proper <code>minSdkVersion</code>,
-  then when installed on a system with an API Level less than 3, the application will crash
-  during runtime when attempting to access the unavailable APIs. For this reason, 
-  be certain to declare the appropriate API Level
-  in the <code>minSdkVersion</code> attribute.</p>
+
+  <p class="caution"><strong>Caution:</strong> If you do not declare this
+  attribute, the system assumes a default value of "1", which indicates that your
+  application is compatible with all versions of Android. If your application is
+  <em>not</em> compatible with all versions (for instance, it uses APIs introduced
+  in API Level 3) and you have not declared the proper <code>android:minSdkVersion</code>,
+  then when installed on a system with an API Level less than 3, the application
+  will crash during runtime when attempting to access the unavailable APIs. For
+  this reason, be certain to declare the appropriate API Level in the
+  <code>minSdkVersion</code> attribute.</p>
   </dd>
-  
-  <dt><a name="max"></a>{@code android:maxSdkVersion}</dt>
-  <dd>An integer designating the maximum API Level on which the application is 
-  designed to run. The Android system will prevent the user from installing the 
-  application if the system's API Level is higher than the value specified
-  in this attribute. 
-  
-  <p>Introduced in: API Level 4</p>
-  </dd>
-  
+
   <dt><a name="target"></a>{@code android:targetSdkVersion}</dt>
   <dd>An integer designating the API Level that the application is targetting.
-  
-  <p>With this attribute set, the application says that it is able to run on 
-  older versions (down to {@code minSdkVersion}), but was explicitly tested to work 
-  with the version specified here.
-  Specifying this target version allows the platform to disable compatibility
-  settings that are not required for the target version (which may otherwise be turned on
-  in order to maintain forward-compatibility) or enable newer features that are not
-  available to older applications. This does not mean that you can program different 
-  features for different versions of the platform&mdash;it simply informs the platform that you
-  have tested against the target version and the platform should not perform any extra
-  work to maintain forward-compatibility with the target version.</p>
-  
+
+  <p>With this attribute set, the application says that it is able to run on
+  older versions (down to {@code minSdkVersion}), but was explicitly tested to
+  work with the version specified here. Specifying this target version allows the
+  platform to disable compatibility settings that are not required for the target
+  version (which may otherwise be turned on in order to maintain
+  forward-compatibility) or enable newer features that are not available to older
+  applications. This does not mean that you can program different features for
+  different versions of the platform&mdash;it simply informs the platform that you
+  have tested against the target version and the platform should not perform any
+  extra work to maintain forward-compatibility with the target version.</p>
+
   <p>Introduced in: API Level 4</p>
   </dd>
 
+  <dt><a name="max"></a>{@code android:maxSdkVersion}</dt>
+  <dd>An integer designating the maximum API Level on which the application is 
+  designed to run. 
+
+  <p>In Android 1.5, 1.6, 2.0, and 2.0.1, the system checks the value of this
+  attribute when installing an application and when revalidating the application
+  after a system update. In either case, if the application's
+  <code>android:maxSdkVersion</code> attribute is lower than the API Level used by
+  the system itself, then the system will not allow the application to be
+  installed. In the case of revalidation after system update, this effectively
+  removes your application from the device.
+
+  <p>To illustrate how this attribute can affect your application after system
+  updates, consider the following example: </p>
+
+  <p>An application declaring <code>android:maxSdkVersion="5"</code> in its
+  manifest is published on Android Market. A user whose device is running Android
+  1.6 (API Level 4) downloads and installs the app. After a few weeks, the user
+  receives an over-the-air system update to Android 2.0 (API Level 5). After the
+  update is installed, the system checks the application's
+  <code>android:maxSdkVersion</code> and successfully revalidates it. The
+  application functions as normal. However, some time later, the device receives
+  another system update, this time to Android 2.0.1 (API Level 6). After the
+  update, the system can no longer revalidate the application because the system's
+  own API Level (6) is now higher than the maximum supported by the application
+  (5). The system prevents the application from being visible to the user, in
+  effect removing it from the device.</p>
+
+  <p class="warning"><strong>Warning:</strong> Declaring this attribute is not
+  recommended. First, there is no need to set the attribute as means of blocking
+  deployment of your application onto new versions of the Android platform as they
+  are released. By design, new versions of the platform are fully
+  backward-compatible. Your application should work properly on new versions,
+  provided it uses only standard APIs and follows development best practices.
+  Second, note that in some cases, declaring the attribute can <strong>result in
+  your application being removed from users' devices after a system
+  update</strong> to a higher API Level. Most devices on which your appplication
+  is likely to be installed will receive periodic system updates over the air, so
+  you should consider their effect on your application before setting this
+  attribute.</p>
+
+  <p style="margin-bottom:1em;">Introduced in: API Level 4</p>
+
+  <div class="special">Future versions of Android (beyond Android 2.0.1) will no
+longer check or enforce the <code>android:maxSdkVersion</code> attribute during
+installation or revalidation. Android Market will continue to use the attribute
+as a filter, however, when presenting users with applications available for
+download. </div>
+  </dd>
+  
+
 </dl></dd>
 
 <!-- ##api level indication## -->
diff --git a/docs/html/sdk/android-1.6.jd b/docs/html/sdk/android-1.6.jd
index 646b61d..7151325 100644
--- a/docs/html/sdk/android-1.6.jd
+++ b/docs/html/sdk/android-1.6.jd
@@ -74,7 +74,7 @@
 
 <p>API related:</p>
 <ul>
-<li>Properly exposes CDMA-related constants {@link android.telephony.TelephonyManager}: <code>DATA_ACTIVITY_DORMANT</code>,
+<li>Properly exposes CDMA-related constants in {@link android.telephony.TelephonyManager android.telephony.TelephonyManager}: <code>DATA_ACTIVITY_DORMANT</code>,
 <code>PHONE_TYPE_CDMA</code>, <code>NETWORK_TYPE_CDMA</code>,
 <code>NETWORK_TYPE_EVDO_0</code>, <code>NETWORK_TYPE_EVDO_A</code>, and
 <code>NETWORK_TYPE_1xRTT</code>.</li>
@@ -362,15 +362,15 @@
       <li>New attributes for the 
       <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code &lt;uses-sdk>}</a> element:
         <ul>
-          <li><code>maxSdkVersion</code>: This indicates the maximum API Level on which an application is 
-          designed to run. If an application declares this attribute, the Android system prevents the user 
-          from installing the application if the system's API Level is higher than the value specified in 
-          this attribute. </li>
-          <li><code>targetSdkVersion</code>: This indicates the API Level that the application is targeting. 
+          <li><code>targetSdkVersion</code>: Indicates the API Level that the application is targeting. 
           It is able to run on older versions (down to minSdkVersion), but was explicitly tested to 
           work with the version specified here. Specifying this version allows the platform to 
           disable compatibility code that is not required or enable newer features that are not 
           available to older applications. </li>
+          <li><code>maxSdkVersion</code>: Indicates the maximum API Level on which an application is 
+          designed to run. <strong>Important:</strong> Please read the <a
+          href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
+          documentation before using this attribute. </li>
         </ul>
       </li>
 
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index fd0576a..6ca02b6 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -3,15 +3,15 @@
 sdk.version=2.0.1
 sdk.date=December 2009
 
-sdk.win_download=android-sdk_r4-windows.zip
+sdk.win_download=android-sdk_r04-windows.zip
 sdk.win_bytes=23069119
 sdk.win_checksum=c48b407de852ba483869f17337e90997
 
-sdk.mac_download=android-sdk_r4-mac.zip
+sdk.mac_download=android-sdk_r04-mac_86.zip
 sdk.mac_bytes=19657927
 sdk.mac_checksum=b08512765aa9b0369bb9b8fecdf763e3
 
-sdk.linux_download=android-sdk_r4-linux.tgz
+sdk.linux_download=android-sdk_r04-linux_86.tgz
 sdk.linux_bytes=15984887
 sdk.linux_checksum=ef84b08fd9da84f4c4ae77564fe4eaee
 
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index daec6e8..9ec8de5 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -2277,10 +2277,8 @@
     LOGV("PlaybackThread::Track destructor");
     sp<ThreadBase> thread = mThread.promote();
     if (thread != 0) {
-        thread->mLock.lock();
+        Mutex::Autolock _l(thread->mLock);
         mState = TERMINATED;
-        thread->mLock.unlock();
-        AudioSystem::releaseOutput(thread->id());
     }
 }
 
@@ -2298,8 +2296,11 @@
     { // scope for mLock
         sp<ThreadBase> thread = mThread.promote();
         if (thread != 0) {
-            if (!isOutputTrack() && (mState == ACTIVE || mState == RESUMING)) {
-                AudioSystem::stopOutput(thread->id(), (AudioSystem::stream_type)mStreamType);
+            if (!isOutputTrack()) {
+                if (mState == ACTIVE || mState == RESUMING) {
+                    AudioSystem::stopOutput(thread->id(), (AudioSystem::stream_type)mStreamType);
+                }
+                AudioSystem::releaseOutput(thread->id());
             }
             Mutex::Autolock _l(thread->mLock);
             PlaybackThread *playbackThread = (PlaybackThread *)thread.get();
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index fbfe755..ab93d8c 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -48,4 +48,7 @@
     
     <bool name="def_backup_enabled">false</bool>
     <string name="def_backup_transport" translatable="false"></string>
+    <!-- Default value for whether or not to pulse the notification LED when there is a 
+         pending notification -->
+    <bool name="def_notification_pulse">true</bool>
 </resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index e25c648..1a64e20 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -71,7 +71,7 @@
     // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
     // is properly propagated through your change.  Not doing so will result in a loss of user
     // settings.
-    private static final int DATABASE_VERSION = 42;
+    private static final int DATABASE_VERSION = 43;
 
     private Context mContext;
 
@@ -521,6 +521,24 @@
             upgradeVersion = 42;
         }
 
+        if (upgradeVersion == 42) {
+            /*
+             * Initialize new notification pulse setting
+             */
+            db.beginTransaction();
+            try {
+                SQLiteStatement stmt = db.compileStatement("INSERT INTO system(name,value)"
+                        + " VALUES(?,?);");
+                loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,
+                        R.bool.def_notification_pulse);
+                stmt.close();
+                db.setTransactionSuccessful();
+            } finally {
+                db.endTransaction();
+            }
+            upgradeVersion = 43;
+        }
+
         if (upgradeVersion != currentVersion) {
             Log.w(TAG, "Got stuck trying to upgrade from version " + upgradeVersion
                     + ", must wipe the settings provider");
@@ -767,6 +785,8 @@
 
         loadDefaultHapticSettings(stmt);
 
+        loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,
+                R.bool.def_notification_pulse);
         stmt.close();
     }
 
diff --git a/telephony/java/android/telephony/NeighboringCellInfo.java b/telephony/java/android/telephony/NeighboringCellInfo.java
index 1d69761..ad7dfc9 100644
--- a/telephony/java/android/telephony/NeighboringCellInfo.java
+++ b/telephony/java/android/telephony/NeighboringCellInfo.java
@@ -68,12 +68,13 @@
     private int mNetworkType;
 
     /**
-     * @deprecated
      * Empty constructor.  Initializes the RSSI and CID.
      *
      * NeighboringCellInfo is one time shot for the neighboring cells based on
      * the radio network type at that moment. Its constructor needs radio network
      * type.
+     *
+     * @deprecated by {@link #NeighboringCellInfo(int, String, int)}
      */
     @Deprecated
     public NeighboringCellInfo() {
@@ -85,12 +86,13 @@
     }
 
     /**
-     * @deprecated
      * Initialize the object from rssi and cid.
      *
      * NeighboringCellInfo is one time shot for the neighboring cells based on
      * the radio network type at that moment. Its constructor needs radio network
      * type.
+     *
+     * @deprecated by {@link #NeighboringCellInfo(int, String, int)}
      */
     @Deprecated
     public NeighboringCellInfo(int rssi, int cid) {
@@ -99,7 +101,6 @@
     }
 
     /**
-     * @hide
      * Initialize the object from rssi, location string, and radioType
      * radioType is one of following
      * {@link TelephonyManager#NETWORK_TYPE_GPRS TelephonyManager.NETWORK_TYPE_GPRS},
@@ -223,12 +224,14 @@
         return mNetworkType;
     }
     /**
-     * @deprecated
      * Set the cell id.
      *
      * NeighboringCellInfo is a one time shot for the neighboring cells based on
      * the radio network type at that moment. It shouldn't be changed after
      * creation.
+     *
+     * @deprecated cid value passed as in location parameter passed to constructor
+     *              {@link #NeighboringCellInfo(int, String, int)}
      */
     @Deprecated
     public void setCid(int cid) {
@@ -236,12 +239,14 @@
     }
 
     /**
-     * @deprecated
      * Set the signal strength of the cell.
      *
      * NeighboringCellInfo is a one time shot for the neighboring cells based on
      * the radio network type at that moment. It shouldn't be changed after
      * creation.
+     *
+     * @deprecated initial rssi value passed as parameter to constructor
+     *              {@link #NeighboringCellInfo(int, String, int)}
      */
     @Deprecated
     public void setRssi(int rssi) {
diff --git a/telephony/java/android/telephony/PhoneStateListener.java b/telephony/java/android/telephony/PhoneStateListener.java
index ea6593e..9bfd900 100644
--- a/telephony/java/android/telephony/PhoneStateListener.java
+++ b/telephony/java/android/telephony/PhoneStateListener.java
@@ -49,8 +49,9 @@
      *
      * @see #onSignalStrengthChanged
      *
-     * TODO: @deprecated to be deprecated by LISTEN_SIGNAL_STRENGTHS, @see #onSignalStrengthsChanged
+     * @deprecated by {@link #LISTEN_SIGNAL_STRENGTHS}
      */
+    @Deprecated
     public static final int LISTEN_SIGNAL_STRENGTH                          = 0x00000002;
 
     /**
@@ -127,8 +128,6 @@
      * icon.
      *
      * @see #onSignalStrengthsChanged
-     *
-     * @hide
      */
     public static final int LISTEN_SIGNAL_STRENGTHS                         = 0x00000100;
 
@@ -206,7 +205,6 @@
     }
 
     /**
-     * @hide
      * same as above, but with the network type.  Both called.
      */
     public void onDataConnectionStateChanged(int state, int networkType) {
@@ -232,8 +230,6 @@
      * @see ServiceState#STATE_IN_SERVICE
      * @see ServiceState#STATE_OUT_OF_SERVICE
      * @see ServiceState#STATE_POWER_OFF
-     *
-     * @hide
      */
     public void onSignalStrengthsChanged(SignalStrength signalStrength) {
         // default implementation empty
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index 8ed0065..c9e304a 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -24,8 +24,6 @@
 
 /**
  * Contains phone signal strength related information.
- *
- * @hide
  */
 public class SignalStrength implements Parcelable {
 
@@ -50,6 +48,7 @@
      * @param m Bundle from intent notifier
      * @return newly created SignalStrength
      *
+     * @hide
      */
     public static SignalStrength newFromBundle(Bundle m) {
         SignalStrength ret;
@@ -61,6 +60,7 @@
     /**
      * Empty constructor
      *
+     * @hide
      */
     public SignalStrength() {
         mGsmSignalStrength = 99;
@@ -76,6 +76,7 @@
     /**
      * Constructor
      *
+     * @hide
      */
     public SignalStrength(int gsmSignalStrength, int gsmBitErrorRate,
             int cdmaDbm, int cdmaEcio,
@@ -94,6 +95,8 @@
      * Copy constructors
      *
      * @param s Source SignalStrength
+     *
+     * @hide
      */
     public SignalStrength(SignalStrength s) {
         copyFrom(s);
@@ -115,6 +118,8 @@
 
     /**
      * Construct a SignalStrength object from the given parcel.
+     *
+     * @hide
      */
     public SignalStrength(Parcel in) {
         mGsmSignalStrength = in.readInt();
@@ -127,6 +132,9 @@
         isGsm = (in.readInt() != 0);
     }
 
+    /**
+     * {@link Parcelable#writeToParcel}
+     */
     public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mGsmSignalStrength);
         out.writeInt(mGsmBitErrorRate);
@@ -138,10 +146,18 @@
         out.writeInt(isGsm ? 1 : 0);
     }
 
+    /**
+     * {@link Parcelable#describeContents}
+     */
     public int describeContents() {
         return 0;
     }
 
+    /**
+     * {@link Parcelable.Creator}
+     *
+     * @hide
+     */
     public static final Parcelable.Creator<SignalStrength> CREATOR = new Parcelable.Creator() {
         public SignalStrength createFromParcel(Parcel in) {
             return new SignalStrength(in);
@@ -202,14 +218,14 @@
     }
 
     /**
-     * @hide
+     * @return true if this is for GSM
      */
     public boolean isGsm() {
         return this.isGsm;
     }
 
     /**
-     * @hide
+     * @return hash code
      */
     @Override
     public int hashCode() {
@@ -221,7 +237,7 @@
     }
 
     /**
-     * @hide
+     * @return true if the signal strengths are the same
      */
     @Override
     public boolean equals (Object o) {
@@ -248,7 +264,7 @@
     }
 
     /**
-     * @hide
+     * @return string representation.
      */
     @Override
     public String toString() {