am f08ebe9e: Reconcile with ics-mr1-release

* commit 'f08ebe9e0d54250d656c4a6c245ec0b5335ccae2':
diff --git a/Android.mk b/Android.mk
index 4e4f40e..90f5b5f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -19,7 +19,7 @@
 
 LOCAL_MODULE_TAGS := optional
 
-LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4
+LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4 guava
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/res/layout-land/advanced_pad.xml b/res/layout-land/advanced_pad.xml
index 55cef52..5b8f98b 100644
--- a/res/layout-land/advanced_pad.xml
+++ b/res/layout-land/advanced_pad.xml
@@ -36,26 +36,31 @@
             android:id="@+id/sin"
             android:text="@string/sin"
             style="@style/button_small_style"
+            android:contentDescription="@string/sinDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/cos"
             android:text="@string/cos"
             style="@style/button_small_style"
+            android:contentDescription="@string/cosDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/tan"
             android:text="@string/tan"
             style="@style/button_small_style"
+            android:contentDescription="@string/tanDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/pi"
             android:text="@string/pi"
             style="@style/button_style"
+            android:contentDescription="@string/piDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/factorial"
             android:text="@string/factorial"
             style="@style/button_style"
+            android:contentDescription="@string/factorialDesc"
             />
     </LinearLayout>
 
@@ -68,26 +73,31 @@
             android:id="@+id/ln"
             android:text="@string/ln"
             style="@style/button_small_style"
+            android:contentDescription="@string/lnDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/lg"
             android:text="@string/lg"
             style="@style/button_small_style"
+            android:contentDescription="@string/lgDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/e"
             android:text="@string/e"
             style="@style/button_style"
+            android:contentDescription="@string/eDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/power"
             android:text="@string/power"
             style="@style/button_style"
+            android:contentDescription="@string/powerDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/sqrt"
             android:text="@string/sqrt"
             style="@style/button_style"
+            android:contentDescription="@string/sqrtDesc"
             />
     </LinearLayout>
 </LinearLayout>
diff --git a/res/layout-land/main.xml b/res/layout-land/main.xml
index e0ac981..2d3b1c3 100644
--- a/res/layout-land/main.xml
+++ b/res/layout-land/main.xml
@@ -72,6 +72,7 @@
                  android:layout_marginRight="0dp"
                  android:textSize="15dp"
                  style="@style/button_style"
+                 android:contentDescription="@string/delDesc"
                  />
         </FrameLayout>
     </LinearLayout>
diff --git a/res/layout-land/simple_pad.xml b/res/layout-land/simple_pad.xml
index 539bdfc..271cb0e 100644
--- a/res/layout-land/simple_pad.xml
+++ b/res/layout-land/simple_pad.xml
@@ -49,16 +49,19 @@
             android:id="@+id/leftParen"
             android:text="@string/leftParen"
             style="@style/button_style"
+            android:contentDescription="@string/leftParenDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/rightParen"
             android:text="@string/rightParen"
             style="@style/button_style"
+            android:contentDescription="@string/rightParenDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/mul"
             android:text="@string/mul"
             style="@style/button_style"
+            android:contentDescription="@string/mulDesc"
             />
     </LinearLayout>
 
@@ -86,16 +89,19 @@
             android:id="@+id/dot"
             android:text="@string/dot"
             style="@style/digit_button_style"
+            android:contentDescription="@string/dotDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/div"
             android:text="@string/div"
             style="@style/button_style"
+            android:contentDescription="@string/divDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/minus"
             android:text="@string/minus"
             style="@style/button_style"
+            android:contentDescription="@string/minusDesc"
             />
     </LinearLayout>
 
@@ -128,11 +134,13 @@
             android:id="@+id/equal"
             android:text="@string/equal"
             style="@style/button_style"
+            android:contentDescription="@string/equalDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/plus"
             android:text="@string/plus"
             style="@style/button_style"
+            android:contentDescription="@string/plusDesc"
             />
     </LinearLayout>
 </LinearLayout>
diff --git a/res/layout-port/advanced_pad.xml b/res/layout-port/advanced_pad.xml
index 8dd5d95..843c54d 100644
--- a/res/layout-port/advanced_pad.xml
+++ b/res/layout-port/advanced_pad.xml
@@ -35,16 +35,19 @@
             android:id="@+id/sin"
             android:text="@string/sin"
             style="@style/button_small_style"
+            android:contentDescription="@string/sinDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/cos"
             android:text="@string/cos"
             style="@style/button_small_style"
+            android:contentDescription="@string/cosDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/tan"
             android:text="@string/tan"
             style="@style/button_small_style"
+            android:contentDescription="@string/tanDesc"
             />
     </LinearLayout>
 
@@ -57,16 +60,19 @@
             android:id="@+id/ln"
             android:text="@string/ln"
             style="@style/button_small_style"
+            android:contentDescription="@string/lnDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/lg"
             android:text="@string/lg"
             style="@style/button_small_style"
+            android:contentDescription="@string/lgDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/factorial"
             android:text="@string/factorial"
             style="@style/button_style"
+            android:contentDescription="@string/factorialDesc"
             />
     </LinearLayout>
 
@@ -79,16 +85,19 @@
             android:id="@+id/pi"
             android:text="@string/pi"
             style="@style/button_style"
+            android:contentDescription="@string/piDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/e"
             android:text="@string/e"
             style="@style/button_style"
+            android:contentDescription="@string/eDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/power"
             android:text="@string/power"
             style="@style/button_style"
+            android:contentDescription="@string/powerDesc"
             />
     </LinearLayout>
 
@@ -101,16 +110,19 @@
             android:id="@+id/leftParen"
             android:text="@string/leftParen"
             style="@style/button_style"
+            android:contentDescription="@string/leftParenDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/rightParen"
             android:text="@string/rightParen"
             style="@style/button_style"
+            android:contentDescription="@string/rightParenDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/sqrt"
             android:text="@string/sqrt"
             style="@style/button_style"
+            android:contentDescription="@string/sqrtDesc"
             />
     </LinearLayout>
 </LinearLayout>
diff --git a/res/layout-port/main.xml b/res/layout-port/main.xml
index c64a252..e0746d5 100644
--- a/res/layout-port/main.xml
+++ b/res/layout-port/main.xml
@@ -89,6 +89,7 @@
                 android:layout_marginRight="0dp"
                 android:textSize="15dp"
                 style="@style/button_style"
+                android:contentDescription="@string/delDesc"
                 />
         </FrameLayout>
 
diff --git a/res/layout-port/simple_pad.xml b/res/layout-port/simple_pad.xml
index 3041ebc..1d8b535 100644
--- a/res/layout-port/simple_pad.xml
+++ b/res/layout-port/simple_pad.xml
@@ -49,6 +49,7 @@
             android:id="@+id/div"
             android:text="@string/div"
             style="@style/button_style"
+            android:contentDescription="@string/divDesc"
             />
     </LinearLayout>
 
@@ -76,6 +77,7 @@
             android:id="@+id/mul"
             android:text="@string/mul"
             style="@style/button_style"
+            android:contentDescription="@string/mulDesc"
             />
     </LinearLayout>
 
@@ -103,6 +105,7 @@
             android:id="@+id/minus"
             android:text="@string/minus"
             style="@style/button_style"
+            android:contentDescription="@string/minusDesc"
             />
     </LinearLayout>
 
@@ -115,6 +118,7 @@
             android:id="@+id/dot"
             android:text="@string/dot"
             style="@style/digit_button_style"
+            android:contentDescription="@string/dotDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/digit0"
@@ -125,11 +129,13 @@
             android:id="@+id/equal"
             android:text="@string/equal"
             style="@style/button_style"
+            android:contentDescription="@string/equalDesc"
             />
         <com.android.calculator2.ColorButton
             android:id="@+id/plus"
             android:text="@string/plus"
             style="@style/button_style"
+            android:contentDescription="@string/plusDesc"
             />
     </LinearLayout>
 </LinearLayout>
diff --git a/res/layout-sw600dp-land/main.xml b/res/layout-sw600dp-land/main.xml
index 9b0fff8..383cb36 100644
--- a/res/layout-sw600dp-land/main.xml
+++ b/res/layout-sw600dp-land/main.xml
@@ -59,7 +59,8 @@
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:paddingLeft="5dip"
-                android:paddingRight="5dip" />
+                android:paddingRight="5dip"
+                android:contentDescription="@string/clearDesc" />
             <ImageButton
                 android:id="@+id/del"
                 android:src="@drawable/calc_clear_symbol"
@@ -67,7 +68,8 @@
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:paddingLeft="5dip"
-                android:paddingRight="5dip" />
+                android:paddingRight="5dip"
+                android:contentDescription="@string/delDesc" />
         </FrameLayout>
     </LinearLayout>
 
@@ -88,55 +90,65 @@
                 <Button
                     android:id="@+id/sin"
                     android:text="@string/sin"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/sinDesc" />
                 <Button
                     android:id="@+id/ln"
                     android:text="@string/ln"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/lnDesc" />
             </LinearLayout>
             <LinearLayout
                 style="@style/btn_row_style">
                 <Button
                     android:id="@+id/cos"
                     android:text="@string/cos"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/cosDesc" />
                 <Button
                     android:id="@+id/lg"
                     android:text="@string/lg"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/lgDesc" />
             </LinearLayout>
             <LinearLayout
                 style="@style/btn_row_style">
                 <Button
                     android:id="@+id/tan"
                     android:text="@string/tan"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/tanDesc" />
                 <Button
                     android:id="@+id/e"
                     android:text="@string/e"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/eDesc" />
             </LinearLayout>
             <LinearLayout
                 style="@style/btn_row_style">
                 <Button
                     android:id="@+id/pi"
                     android:text="@string/pi"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/piDesc" />
                 <Button
                     android:id="@+id/power"
                     android:text="@string/power"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/powerDesc" />
             </LinearLayout>
             <LinearLayout
                 style="@style/btn_row_style">
                 <Button
                     android:id="@+id/factorial"
                     android:text="@string/factorial"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/factorialDesc" />
                 <Button
                     android:id="@+id/sqrt"
                     android:text="@string/sqrt"
-                    style="@style/btn_function_cell_style" />
+                    style="@style/btn_function_cell_style"
+                    android:contentDescription="@string/sqrtDesc" />
             </LinearLayout>
         </LinearLayout>
 
@@ -162,11 +174,13 @@
                 <Button
                     android:id="@+id/div"
                     android:text="@string/div"
-                    style="@style/btn_operation_cell_style" />
+                    style="@style/btn_operation_cell_style"
+                    android:contentDescription="@string/divDesc" />
                 <Button
                     android:id="@+id/leftParen"
                     android:text="@string/leftParen"
-                    style="@style/btn_operation_cell_style" />
+                    style="@style/btn_operation_cell_style"
+                    android:contentDescription="@string/leftParenDesc" />
             </LinearLayout>
             <LinearLayout
                 style="@style/btn_row_style">
@@ -185,11 +199,13 @@
                 <Button
                     android:id="@+id/mul"
                     android:text="@string/mul"
-                    style="@style/btn_operation_cell_style" />
+                    style="@style/btn_operation_cell_style"
+                    android:contentDescription="@string/mulDesc" />
                 <Button
                     android:id="@+id/rightParen"
                     android:text="@string/rightParen"
-                    style="@style/btn_operation_cell_style" />
+                    style="@style/btn_operation_cell_style"
+                    android:contentDescription="@string/rightParenDesc" />
             </LinearLayout>
             <LinearLayout
                 android:layout_width="match_parent"
@@ -218,7 +234,8 @@
                         <Button
                             android:id="@+id/minus"
                             android:text="@string/minus"
-                            style="@style/btn_operation_cell_style" />
+                            style="@style/btn_operation_cell_style"
+                            android:contentDescription="@string/minusDesc" />
                     </LinearLayout>
                     <LinearLayout
                         style="@style/btn_row_style">
@@ -230,17 +247,20 @@
                         <Button
                             android:id="@+id/dot"
                             android:text="@string/dot"
-                            style="@style/btn_digit_cell_style" />
+                            style="@style/btn_digit_cell_style"
+                            android:contentDescription="@string/dotDesc" />
                         <Button
                             android:id="@+id/plus"
                             android:text="@string/plus"
-                            style="@style/btn_operation_cell_style" />
+                            style="@style/btn_operation_cell_style"
+                            android:contentDescription="@string/plusDesc" />
                     </LinearLayout>
                 </LinearLayout>
                 <Button
                     android:id="@+id/equal"
                     android:text="@string/equal"
-                    style="@style/btn_operation_cell_style" />
+                    style="@style/btn_operation_cell_style"
+                    android:contentDescription="@string/equalDesc" />
             </LinearLayout>
         </LinearLayout>
     </LinearLayout>
diff --git a/res/layout-sw600dp/main.xml b/res/layout-sw600dp/main.xml
index e149e61..e21e30c 100644
--- a/res/layout-sw600dp/main.xml
+++ b/res/layout-sw600dp/main.xml
@@ -59,7 +59,8 @@
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:paddingLeft="5dip"
-                android:paddingRight="5dip" />
+                android:paddingRight="5dip"
+                android:contentDescription="@string/clearDesc" />
             <ImageButton
                 android:id="@+id/del"
                 android:src="@drawable/calc_clear_symbol"
@@ -67,7 +68,8 @@
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:paddingLeft="5dip"
-                android:paddingRight="5dip" />
+                android:paddingRight="5dip"
+                android:contentDescription="@string/delDesc" />
         </FrameLayout>
     </LinearLayout>
 
@@ -83,46 +85,56 @@
             <Button
                 android:id="@+id/sin"
                 android:text="@string/sin"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/sinDesc" />
             <Button
                 android:id="@+id/cos"
                 android:text="@string/cos"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/cosDesc" />
             <Button
                 android:id="@+id/tan"
                 android:text="@string/tan"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/tanDesc" />
             <Button
                 android:id="@+id/pi"
                 android:text="@string/pi"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/piDesc" />
             <Button
                 android:id="@+id/factorial"
                 android:text="@string/factorial"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/factorialDesc" />
         </LinearLayout>
         <LinearLayout
             style="@style/btn_row_style">
             <Button
                 android:id="@+id/ln"
                 android:text="@string/ln"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/lnDesc" />
             <Button
                 android:id="@+id/lg"
                 android:text="@string/lg"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/lgDesc" />
             <Button
                 android:id="@+id/e"
                 android:text="@string/e"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/eDesc" />
             <Button
                 android:id="@+id/power"
                 android:text="@string/power"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/powerDesc" />
             <Button
                 android:id="@+id/sqrt"
                 android:text="@string/sqrt"
-                style="@style/btn_function_cell_style" />
+                style="@style/btn_function_cell_style"
+                android:contentDescription="@string/sqrtDesc" />
         </LinearLayout>
 
     </LinearLayout>
@@ -149,11 +161,13 @@
             <Button
                 android:id="@+id/div"
                 android:text="@string/div"
-                style="@style/btn_operation_cell_style" />
+                style="@style/btn_operation_cell_style"
+                android:contentDescription="@string/divDesc" />
             <Button
                 android:id="@+id/leftParen"
                 android:text="@string/leftParen"
-                style="@style/btn_operation_cell_style" />
+                style="@style/btn_operation_cell_style"
+                android:contentDescription="@string/leftParenDesc" />
         </LinearLayout>
         <LinearLayout
             style="@style/btn_row_style">
@@ -172,11 +186,13 @@
             <Button
                 android:id="@+id/mul"
                 android:text="@string/mul"
-                style="@style/btn_operation_cell_style" />
+                style="@style/btn_operation_cell_style"
+                android:contentDescription="@string/mulDesc" />
             <Button
                 android:id="@+id/rightParen"
                 android:text="@string/rightParen"
-                style="@style/btn_operation_cell_style" />
+                style="@style/btn_operation_cell_style"
+                android:contentDescription="@string/rightParenDesc" />
         </LinearLayout>
         <LinearLayout
             android:layout_width="match_parent"
@@ -205,7 +221,8 @@
                     <Button
                         android:id="@+id/minus"
                         android:text="@string/minus"
-                        style="@style/btn_operation_cell_style" />
+                        style="@style/btn_operation_cell_style"
+                        android:contentDescription="@string/minusDesc" />
                 </LinearLayout>
                 <LinearLayout
                     style="@style/btn_row_style">
@@ -217,17 +234,20 @@
                     <Button
                         android:id="@+id/dot"
                         android:text="@string/dot"
-                        style="@style/btn_digit_cell_style" />
+                        style="@style/btn_digit_cell_style"
+                        android:contentDescription="@string/dotDesc" />
                     <Button
                         android:id="@+id/plus"
                         android:text="@string/plus"
-                        style="@style/btn_operation_cell_style" />
+                        style="@style/btn_operation_cell_style"
+                        android:contentDescription="@string/plusDesc" />
                 </LinearLayout>
             </LinearLayout>
             <Button
                 android:id="@+id/equal"
                 android:text="@string/equal"
-                style="@style/btn_operation_cell_style" />
+                style="@style/btn_operation_cell_style"
+                android:contentDescription="@string/equalDesc" />
         </LinearLayout>
     </LinearLayout>
 </LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index df87d98..958a6c4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -90,4 +90,92 @@
     <string name="clear_history">Clear history</string>
     <!-- Toast shown when text is copied to the clipboard. -->
     <string name="text_copied_toast">Text copied.</string>
+
+    <!--Content descriptions for accessibility. These strings will be read aloud to users who are using the calculator with
+    accessibility features enabled and should reflect the mathematical concept instead of a direct representation of what is shown
+    on the button-->
+    <string name="leftParenDesc">left parenthesis</string>
+    <string name="rightParenDesc">right parenthesis</string>
+    <string name="factorialDesc">factorial</string>
+    <string name="lnDesc">natural logarithm</string>
+    <string name="lgDesc">logarithm</string>
+    <string name="sqrtDesc">square root</string>
+    <string name="divDesc">divide</string>
+    <string name="mulDesc">multiply</string>
+    <string name="plusDesc">plus</string>
+    <string name="minusDesc">minus</string>
+    <string name="dotDesc">point</string>
+    <string name="powerDesc">power</string>
+    <string name="delDesc">delete</string>
+    <string name="clearDesc">clear</string>
+    <string name="tanDesc">tangent</string>
+    <string name="sinDesc">sine</string>
+    <string name="cosDesc">cosine</string>
+    <string name="eDesc">Euler\'s number</string>
+    <string name="piDesc">pi</string>
+    <string name="equalDesc">equals</string>
+
+    <!--Content descriptions for accessibility used as keys when determining which mathematical
+    concept description to speak when accessibility features are enabled. Order of the array is
+    important. -->
+    <string-array name="operators" translatable="false">
+        <item>(</item>
+        <item>)</item>
+        <item>!</item>
+        <item>ln</item>
+        <item>log</item>
+        <item>\u221a</item>
+        <item>\u00f7</item>
+        <item>\u00d7</item>
+        <item>+</item>
+        <item>\u2212</item>
+        <item>.</item>
+        <item>^</item>
+        <item>tan</item>
+        <item>sin</item>
+        <item>cos</item>
+        <item>\u03c0</item>
+        <item>=</item>
+    </string-array>
+
+    <!--Content descriptions for accessibility. These strings will be read aloud to users who
+     are using the calculator with accessibility features enabled and hover over the edit text
+     field. These should reflect the mathematical concept instead of a direct representation of
+     what is shown in the text field. Order of the array is important.-->
+    <string-array name="operatorDescs">
+        <!-- Description for mathematical ( [CHAR LIMIT=200]-->
+        <item>left parenthesis</item>
+        <!-- Description for mathematical ) [CHAR LIMIT=200]-->
+        <item>right parenthesis</item>
+        <!-- Description for mathematical ! (factorial) function [CHAR LIMIT=200]-->
+        <item>factorial</item>
+        <!-- Description for mathematical ln [CHAR LIMIT=200]-->
+        <item>natural logarithm</item>
+        <!-- Description for mathematical log [CHAR LIMIT=200]-->
+        <item>logarithm</item>
+        <!-- Description for mathematical square root [CHAR LIMIT=200]-->
+        <item>square root</item>
+        <!-- Description for mathematical / [CHAR LIMIT=200]-->
+        <item>divided by</item>
+        <!-- Description for mathematical x [CHAR LIMIT=200]-->
+        <item>multiplied by</item>
+        <!-- Description for mathematical + [CHAR LIMIT=200]-->
+        <item>plus</item>
+        <!-- Description for mathematical - [CHAR LIMIT=200]-->
+        <item>minus</item>
+        <!-- Description for mathematical . [CHAR LIMIT=200]-->
+        <item>point</item>
+        <!-- Description for mathematical ^ [CHAR LIMIT=200]-->
+        <item>power</item>
+        <!-- Description for mathematical TAN [CHAR LIMIT=200]-->
+        <item>tangent</item>
+        <!-- Description for mathematical SIN [CHAR LIMIT=200]-->
+        <item>sine</item>
+        <!-- Description for mathematical COS [CHAR LIMIT=200]-->
+        <item>cosine</item>
+        <!-- Description for mathematical PI [CHAR LIMIT=200]-->
+        <item>pi</item>
+        <!-- Description for mathematical = [CHAR LIMIT=200]-->
+        <item>equals</item>
+    </string-array>
 </resources>
diff --git a/src/com/android/calculator2/CalculatorDisplay.java b/src/com/android/calculator2/CalculatorDisplay.java
index 3b48e1d..ca31fe9 100644
--- a/src/com/android/calculator2/CalculatorDisplay.java
+++ b/src/com/android/calculator2/CalculatorDisplay.java
@@ -19,11 +19,11 @@
 import android.content.Context;
 import android.graphics.Rect;
 import android.text.Editable;
+import android.text.InputType;
 import android.text.Spanned;
 import android.text.method.NumberKeyListener;
 import android.util.AttributeSet;
 import android.view.animation.TranslateAnimation;
-import android.view.inputmethod.EditorInfo;
 import android.widget.EditText;
 import android.widget.ViewSwitcher;
 
@@ -48,7 +48,6 @@
     TranslateAnimation inAnimDown;
     TranslateAnimation outAnimDown;
 
-    private Logic mLogic;
     private int mMaxDigits = DEFAULT_MAX_DIGITS;
 
     public CalculatorDisplay(Context context, AttributeSet attrs) {
@@ -61,11 +60,10 @@
     }
 
     protected void setLogic(Logic logic) {
-        mLogic = logic;
         NumberKeyListener calculatorKeyListener =
             new NumberKeyListener() {
                 public int getInputType() {
-                    return EditorInfo.TYPE_CLASS_TEXT;
+                    return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
                 }
 
                 @Override
diff --git a/src/com/android/calculator2/CalculatorEditText.java b/src/com/android/calculator2/CalculatorEditText.java
index 170e116..2135b38 100644
--- a/src/com/android/calculator2/CalculatorEditText.java
+++ b/src/com/android/calculator2/CalculatorEditText.java
@@ -30,9 +30,13 @@
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MotionEvent;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.EditText;
 import android.widget.Toast;
 
+import com.google.common.collect.ImmutableMap;
+
 public class CalculatorEditText extends EditText {
 
     private static final String LOG_TAG = "Calculator2";
@@ -40,6 +44,8 @@
     private static final int COPY = 1;
     private static final int PASTE = 2;
     private String[] mMenuItemsStrings;
+    private ImmutableMap<String, String> sReplacementTable;
+    private String[] sOperators;
 
     public CalculatorEditText(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -62,6 +68,58 @@
         return true;
     }
 
+    @Override
+    public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+        super.onInitializeAccessibilityEvent(event);
+        String mathText = mathParse(getText().toString());
+        // Parse the string into something more "mathematical" sounding.
+        if (!TextUtils.isEmpty(mathText)) {
+            event.getText().clear();
+            event.getText().add(mathText);
+            setContentDescription(mathText);
+        }
+    }
+
+    @Override
+    public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+        super.onInitializeAccessibilityNodeInfo(info);
+        info.setText(mathParse(getText().toString()));
+    }
+
+    @Override
+    public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
+        // Do nothing.
+    }
+
+    private String mathParse(String plainText) {
+        String parsedText = plainText;
+        if (!TextUtils.isEmpty(parsedText)) {
+            // Initialize replacement table.
+            initializeReplacementTable();
+            for (String operator : sOperators) {
+                if (sReplacementTable.containsKey(operator)) {
+                    parsedText = parsedText.replace(operator, sReplacementTable.get(operator));
+                }
+            }
+        }
+        return parsedText;
+    }
+
+    private synchronized void initializeReplacementTable() {
+        if (sReplacementTable == null) {
+            ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
+            Resources res = getContext().getResources();
+            sOperators = res.getStringArray(R.array.operators);
+            String[] descs = res.getStringArray(R.array.operatorDescs);
+            int pos = 0;
+            for (String key : sOperators) {
+                builder.put(key, descs[pos]);
+                pos++;
+            }
+            sReplacementTable = builder.build();
+        }
+    }
+
     private class MenuHandler implements MenuItem.OnMenuItemClickListener {
         public boolean onMenuItemClick(MenuItem item) {
             return onTextContextMenuItem(item.getTitle());
diff --git a/src/com/android/calculator2/ColorButton.java b/src/com/android/calculator2/ColorButton.java
index 742db7e..de330e2 100644
--- a/src/com/android/calculator2/ColorButton.java
+++ b/src/com/android/calculator2/ColorButton.java
@@ -17,15 +17,15 @@
 package com.android.calculator2;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Paint.Style;
 import android.util.AttributeSet;
-import android.widget.Button;
 import android.view.View.OnClickListener;
 import android.view.View;
 import android.view.MotionEvent;
-import android.content.res.Resources;
+import android.widget.Button;
 
 /**
  * Button with click-animation effect.