Merge change 3697

* changes:
  Disable bluetooth functions for SDK and Simulator.
diff --git a/api/current.xml b/api/current.xml
index 295ac8f..bc82d00 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -50211,6 +50211,17 @@
  visibility="public"
 >
 </method>
+<method name="getFadeOffset"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getGesture"
  return="android.gesture.Gesture"
  abstract="false"
@@ -50441,6 +50452,19 @@
 <parameter name="fadeEnabled" type="boolean">
 </parameter>
 </method>
+<method name="setFadeOffset"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="fadeOffset" type="long">
+</parameter>
+</method>
 <method name="setGesture"
  return="void"
  abstract="false"
diff --git a/core/java/android/gesture/GestureOverlayView.java b/core/java/android/gesture/GestureOverlayView.java
index 98e7dcd..1e81780 100755
--- a/core/java/android/gesture/GestureOverlayView.java
+++ b/core/java/android/gesture/GestureOverlayView.java
@@ -274,6 +274,14 @@
         return mCurrentGesture;
     }
 
+    public long getFadeOffset() {
+        return mFadeOffset;
+    }
+
+    public void setFadeOffset(long fadeOffset) {
+        mFadeOffset = fadeOffset;
+    }
+
     public void setGesture(Gesture gesture) {
         if (mCurrentGesture != null) {
             clear(false);
diff --git a/core/java/android/gesture/InstanceLearner.java b/core/java/android/gesture/InstanceLearner.java
index 00cdadc..b93b76f 100644
--- a/core/java/android/gesture/InstanceLearner.java
+++ b/core/java/android/gesture/InstanceLearner.java
@@ -26,6 +26,20 @@
  */
 
 class InstanceLearner extends Learner {
+    private static final Comparator<Prediction> sComparator = new Comparator<Prediction>() {
+        public int compare(Prediction object1, Prediction object2) {
+            double score1 = object1.score;
+            double score2 = object2.score;
+            if (score1 > score2) {
+                return -1;
+            } else if (score1 < score2) {
+                return 1;
+            } else {
+                return 0;
+            }
+        }
+    };
+
     @Override
     ArrayList<Prediction> classify(int sequenceType, float[] vector) {
         ArrayList<Prediction> predictions = new ArrayList<Prediction>();
@@ -55,31 +69,19 @@
             }
         }
 
-        double sum = 0;
+//        double sum = 0;
         for (String name : label2score.keySet()) {
             double score = label2score.get(name);
-            sum += score;
+//            sum += score;
             predictions.add(new Prediction(name, score));
         }
 
         // normalize
-        for (Prediction prediction : predictions) {
-            prediction.score /= sum;
-        }
+//        for (Prediction prediction : predictions) {
+//            prediction.score /= sum;
+//        }
 
-        Collections.sort(predictions, new Comparator<Prediction>() {
-            public int compare(Prediction object1, Prediction object2) {
-                double score1 = object1.score;
-                double score2 = object2.score;
-                if (score1 > score2) {
-                    return -1;
-                } else if (score1 < score2) {
-                    return 1;
-                } else {
-                    return 0;
-                }
-            }
-        });
+        Collections.sort(predictions, sComparator);
 
         return predictions;
     }
diff --git a/core/java/android/widget/ViewSwitcher.java b/core/java/android/widget/ViewSwitcher.java
index f4f23a8..0dcaf95 100644
--- a/core/java/android/widget/ViewSwitcher.java
+++ b/core/java/android/widget/ViewSwitcher.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import java.util.Map;
-
 import android.content.Context;
 import android.util.AttributeSet;
 import android.view.View;
diff --git a/core/res/res/anim/slide_in_up.xml b/core/res/res/anim/slide_in_up.xml
new file mode 100644
index 0000000..bf471c3
--- /dev/null
+++ b/core/res/res/anim/slide_in_up.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<translate
+    xmlns:android="http://schemas.android.com/apk/res/android"
+
+    android:fromYDelta="100%p"
+    android:toYDelta="0"
+
+    android:duration="@android:integer/config_longAnimTime" />
diff --git a/core/res/res/anim/slide_out_down.xml b/core/res/res/anim/slide_out_down.xml
new file mode 100644
index 0000000..9b8d5b7
--- /dev/null
+++ b/core/res/res/anim/slide_out_down.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<translate
+    xmlns:android="http://schemas.android.com/apk/res/android"
+
+    android:fromYDelta="0"
+    android:toYDelta="100%p"
+
+    android:duration="@android:integer/config_longAnimTime" />
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 72402d0..648a7dd 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -124,6 +124,12 @@
         <item name="windowExitAnimation">@anim/shrink_fade_out_from_bottom</item>
     </style>
 
+    <!-- {@hide} -->
+    <style name="Animation.SlidingCard">
+        <item name="windowEnterAnimation">@anim/slide_in_up</item>
+        <item name="windowExitAnimation">@anim/slide_out_down</item>
+    </style>
+
     <!-- Window animations that are applied to input method overlay windows.
          {@hide Pending API council approval} -->
     <style name="Animation.InputMethod">