diff --git a/res/layout/bottom_bar_contents.xml b/res/layout/bottom_bar_contents.xml
index 4e8a56f..d237833 100644
--- a/res/layout/bottom_bar_contents.xml
+++ b/res/layout/bottom_bar_contents.xml
@@ -49,28 +49,32 @@
         android:layout_height="match_parent"
         android:layout_weight="1"
         android:background="@null"
-        camera:imageIds="@array/refocus_icons" />
+        camera:imageIds="@array/refocus_icons"
+        camera:contentDescriptionIds="@array/refocus_descriptions" />
     <com.android.camera.MultiToggleImageButton
         android:id="@+id/hdr_plus_toggle_button"
         android:layout_width="0dp"
         android:layout_height="match_parent"
         android:background="@null"
         android:layout_weight="1"
-        camera:imageIds="@array/pref_camera_hdr_plus_icons" />
+        camera:imageIds="@array/pref_camera_hdr_plus_icons"
+        camera:contentDescriptionIds="@array/hdr_plus_descriptions" />
     <com.android.camera.MultiToggleImageButton
         android:id="@+id/flash_toggle_button"
         android:layout_width="0dp"
         android:layout_height="match_parent"
         android:layout_weight="1"
         android:background="@null"
-        camera:imageIds="@array/camera_flashmode_icons" />
+        camera:imageIds="@array/camera_flashmode_icons"
+        camera:contentDescriptionIds="@array/camera_flash_descriptions" />
     <com.android.camera.MultiToggleImageButton
         android:id="@+id/camera_toggle_button"
         android:layout_width="0dp"
         android:layout_height="match_parent"
         android:layout_weight="1"
         android:background="@null"
-        camera:imageIds="@array/camera_id_icons" />
+        camera:imageIds="@array/camera_id_icons"
+        camera:contentDescriptionIds="@array/camera_id_descriptions" />
     <ImageButton
         android:id="@+id/reference_toggle"
         android:layout_width="0dp"
@@ -92,7 +96,8 @@
           android:layout_height="wrap_content"
           android:scaleType="center"
           android:background="@null"
-          camera:imageIds="@array/settings_toggle_icons"/>
+          camera:imageIds="@array/settings_toggle_icons"
+          camera:contentDescriptionIds="@array/settings_toggle_descriptions" />
   </com.android.camera.ui.TopRightMostOverlay>
 
   <com.android.camera.ui.TopRightWeightedLayout
@@ -109,20 +114,23 @@
         android:layout_height="wrap_content"
         android:src="@drawable/ic_cancel"
         android:layout_weight="1"
-        android:background="@null" />
+        android:background="@null"
+        android:contentDescription="@string/cancel_button_description" />
     <ImageButton
         android:id="@+id/done_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@drawable/ic_confirm"
         android:layout_weight="1"
-        android:background="@null" />
+        android:background="@null"
+        android:contentDescription="@string/done_button_description" />
     <ImageButton
         android:id="@+id/retake_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@drawable/ic_back"
         android:layout_weight="1"
-        android:background="@null" />
+        android:background="@null"
+        android:contentDescription="@string/retake_button_description" />
   </com.android.camera.ui.TopRightWeightedLayout>
 </merge>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 486e616..ae59967 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -246,6 +246,12 @@
         <item>@drawable/ic_flash_on</item>
     </array>
 
+    <array name="camera_flash_descriptions" translatable="false">
+      <item>@string/flash_off_desc</item>
+      <item>@string/flash_auto_desc</item>
+      <item>@string/flash_on_desc</item>
+    </array>
+
     <array name="camera_flashmode_largeicons" translatable="false">
         <item>@drawable/ic_flash_off</item>
         <item>@drawable/ic_flash_auto</item>
@@ -284,6 +290,11 @@
         <item>@drawable/ic_flash_off</item>
     </array>
 
+    <array name="video_flash_descriptions" translatable="false">
+      <item>@string/torch_on_desc</item>
+      <item>@string/torch_off_desc</item>
+    </array>
+
     <array name="video_flashmode_indicator_icons" translatable="false">
         <item>@drawable/ic_flash_on_indicator</item>
         <item>@drawable/ic_flash_off_indicator</item>
@@ -411,6 +422,12 @@
         <item>@drawable/ic_switch_camera_front</item>
     </array>
 
+    <array name="camera_id_descriptions" translatable="false">
+      <item>@string/camera_id_back_desc</item>
+      <item>@string/camera_id_front_desc</item>
+    </array>
+
+
     <array name="camera_id_largeicons" translatable="false">
         <item>@drawable/ic_switch_camera_back</item>
         <item>@drawable/ic_switch_camera_front</item>
@@ -470,11 +487,21 @@
         <item>@drawable/ic_hdr_plus_on</item>
     </array>
 
+    <array name="hdr_plus_descriptions" translatable="false">
+      <item>@string/hdr_plus_off_desc</item>
+      <item>@string/hdr_plus_on_desc</item>
+    </array>
+
     <array name="pref_camera_hdr_icons" translatable="false">
         <item>@drawable/ic_hdr_off</item>
         <item>@drawable/ic_hdr_on</item>
     </array>
 
+    <array name="hdr_descriptions" translatable="false">
+      <item>@string/hdr_off_desc</item>
+      <item>@string/hdr_on_desc</item>
+    </array>
+
     <array name="pref_camera_hdr_plus_indicator_icons" translatable="false">
         <item>@drawable/ic_hdr_plus_off_indicator</item>
         <item>@drawable/ic_hdr_plus_on_indicator</item>
@@ -557,6 +584,11 @@
       <item>@drawable/ic_refocus</item>
     </array>
 
+    <array name="refocus_descriptions" translatable="false">
+      <item>@string/refocus_off_desc</item>
+      <item>@string/refocus_on_desc</item>
+    </array>
+
     <array name="refocus_indicator_icons" translatable="false">
       <item>@drawable/ic_refocus_off_indicator</item>
       <item>@drawable/ic_refocus_on_indicator</item>
@@ -572,6 +604,12 @@
       <item>@drawable/ic_options_active</item>
     </array>
 
+    <array name="settings_toggle_descriptions" translatable="false">
+      <item>@string/settings_open_desc</item>
+      <item>@string/settings_close_desc</item>
+    </array>
+
+
     <!--Index of camera modes. -->
     <integer name="camera_mode_photo">0</integer>
     <integer name="camera_mode_video">1</integer>
@@ -637,6 +675,18 @@
         <item>""</item>
     </string-array>
 
+    <string-array name="camera_mode_content_description">
+        <item>@string/mode_camera_desc</item>
+        <item>@string/mode_video_desc</item>
+        <item>@string/mode_advanced_camera_desc</item>
+        <item>@string/mode_photosphere_desc</item>
+        <item>@string/mode_panorama_desc</item>
+        <item>@string/mode_timelapse_desc</item>
+        <item>@string/mode_settings_desc</item>
+        <item>""</item>
+        <item>""</item>
+    </string-array>
+
     <array name="camera_mode_icon">
         <item>@drawable/ic_camera_normal</item>
         <item>@drawable/ic_video_normal</item>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 452acb5..a92d6ab 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -44,5 +44,6 @@
     </declare-styleable>
     <declare-styleable name="MultiToggleImageButton">
         <attr name="imageIds" format="reference" />
+        <attr name="contentDescriptionIds" format="reference" />
     </declare-styleable>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e380bab..cad63a5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -701,6 +701,63 @@
     <!-- Text shown in the camera mode options list for putting camera in panorama mode [CHAR LIMIT=25] -->
     <string name="mode_panorama">Panorama</string>
 
+    <!-- Accessibility text for switching to camera settings [CHAR_LIMIT=NONE] -->
+    <string name="mode_settings_desc">Open Settings</string>
+    <!-- Accessibility text for switching to normal camera mode [CHAR_LIMIT=NONE] -->
+    <string name="mode_camera_desc">Switch to Camera Mode</string>
+    <!-- Accessibility text for switching to video mode [CHAR_LIMIT=NONE] -->
+    <string name="mode_video_desc">Switch to Video Camera</string>
+    <!-- Accessibility text for switching to photo sphere mode. 'Photo sphere' is a product name. [CHAR_LIMIT=NONE] -->
+    <string name="mode_photosphere_desc">Switch to Photo Sphere Mode</string>
+    <!-- Accessibility text for switching to craft mode. Craft mode contains more advanced features such as capability to refocus and recognize barcode/QR code. [CHAR_LIMIT=NONE] -->
+    <string name="mode_craft_desc">Switch to Advanced Camera Mode</string>
+    <!-- Accessibility text for switching to advanced camera mode. It contains more advanced features such as capability to refocus and recognize barcode/QR code. [CHAR_LIMIT=NONE] -->
+    <string name="mode_advanced_camera_desc">Switch to Advanced Camera Mode</string>
+    <!-- Accessibility text for switching to timelapse mode [CHAR_LIMIT=NONE] -->
+    <string name="mode_timelapse_desc">Switch to Timelapse Mode</string>
+    <!-- Accessibility text for switching to wideangle mode [CHAR_LIMIT=NONE] -->
+    <string name="mode_wideangle_desc">Switch to Wideangle Mode</string>
+    <!-- Accessibility text for switching to panorama mode [CHAR_LIMIT=NONE] -->
+    <string name="mode_panorama_desc">Switch to Panorama Mode</string>
+
+
+    <!-- Accessibility text for refocus toggle button states [CHAR_LIMIT=NONE] -->
+    <string name="refocus_off_desc">Foreground Focus off</string>
+    <string name="refocus_on_desc">Foreground Focus on</string>
+
+    <!-- Accessibility text for settings toggle button states [CHAR_LIMIT=NONE] -->
+    <string name="settings_open_desc">Open settings</string>
+    <string name="settings_close_desc">Close settings</string>
+
+    <!-- Accessibility text for HDR+ toggle button states [CHAR_LIMIT=NONE] -->
+    <string name="hdr_plus_off_desc">HDR Plus off</string>
+    <string name="hdr_plus_on_desc">HDR Plus on</string>
+
+    <!-- Accessibility text for HDR toggle button states [CHAR_LIMIT=NONE] -->
+    <string name="hdr_off_desc">HDR off</string>
+    <string name="hdr_on_desc">HDR on</string>
+
+    <!-- Accessibility text for camera flash toggle button states [CHAR_LIMIT=NONE] -->
+    <string name="flash_off_desc">Flash off</string>
+    <string name="flash_auto_desc">Flash auto</string>
+    <string name="flash_on_desc">Flash on</string>
+
+    <!-- Accessibility text for vide torch (flash) toggle button states [CHAR_LIMIT=NONE] -->
+    <string name="torch_on_desc">Torch on</string>
+    <string name="torch_off_desc">Torch off</string>
+
+    <!-- Accessibility text for camera switch toggle button states [CHAR_LIMIT=NONE] -->
+    <string name="camera_id_back_desc">Back camera</string>
+    <string name="camera_id_front_desc">Front camera</string>
+
+    <!-- Accessibility text for cancel button [CHAR_LIMIT=NONE] -->
+    <string name="cancel_button_description">Cancel</string>
+    <!-- Accessibility text for done button [CHAR_LIMIT=NONE] -->
+    <string name="done_button_description">Done</string>
+    <!-- Accessibility text for retake button [CHAR_LIMIT=NONE] -->
+    <string name="retake_button_description">Retake</string>
+
+
     <!-- Text shown in camera settings list for toggling photo location on or off [CHAR LIMIT=25] -->
     <string name="setting_location">Location</string>
     <!-- Text shown in camera settings list for selecting the size of photos that will be captured [CHAR LIMIT=25] -->
diff --git a/src/com/android/camera/ButtonManager.java b/src/com/android/camera/ButtonManager.java
index 7cf909c..8e8ba7d 100644
--- a/src/com/android/camera/ButtonManager.java
+++ b/src/com/android/camera/ButtonManager.java
@@ -454,6 +454,8 @@
         if (resIdImages > 0) {
             button.overrideImageIds(resIdImages);
         }
+        button.overrideContentDescriptions(R.array.camera_flash_descriptions);
+
         int index = mSettingsManager.getStringValueIndex(SettingsManager.SETTING_FLASH_MODE);
         button.setState(index >= 0 ? index : 0, false);
 
@@ -477,6 +479,8 @@
         if (resIdImages > 0) {
             button.overrideImageIds(resIdImages);
         }
+        button.overrideContentDescriptions(R.array.video_flash_descriptions);
+
         int index = mSettingsManager.getStringValueIndex(
                 SettingsManager.SETTING_VIDEOCAMERA_FLASH_MODE);
         button.setState(index >= 0 ? index : 0, false);
@@ -529,6 +533,7 @@
         if (resIdImages > 0) {
             button.overrideImageIds(resIdImages);
         }
+        button.overrideContentDescriptions(R.array.hdr_plus_descriptions);
 
         int index = mSettingsManager.getStringValueIndex(SettingsManager.SETTING_CAMERA_HDR);
         button.setState(index >= 0 ? index : 0, false);
diff --git a/src/com/android/camera/MultiToggleImageButton.java b/src/com/android/camera/MultiToggleImageButton.java
index 49b073f..6b43cd6 100644
--- a/src/com/android/camera/MultiToggleImageButton.java
+++ b/src/com/android/camera/MultiToggleImageButton.java
@@ -22,6 +22,7 @@
 import android.util.AttributeSet;
 import android.widget.ImageButton;
 import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
 
 import com.android.camera2.R;
 
@@ -50,6 +51,7 @@
     private OnStateChangeListener mOnStateChangeListener;
     private int mState;
     private int[] mImageIds;
+    private int[] mDescIds;
     private int mLevel;
 
     public MultiToggleImageButton(Context context) {
@@ -107,6 +109,9 @@
     public void setState(int state, boolean callListener) {
         mState = state;
         setImageResource(mImageIds[mState]);
+        setContentDescription(getResources().getString(mDescIds[mState]));
+        // TODO get talkback to announce the current button state
+        //sendAccessibilityEvent(AccessibilityEvent.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION);
         super.setImageLevel(mLevel);
         if (callListener && mOnStateChangeListener != null) {
             mOnStateChangeListener.stateChanged(this, getState());
@@ -135,8 +140,12 @@
             attrs,
             R.styleable.MultiToggleImageButton,
             0, 0);
-        int resId = a.getResourceId(R.styleable.MultiToggleImageButton_imageIds, 0);
-        overrideImageIds(resId);
+        int imageIds = a.getResourceId(R.styleable.MultiToggleImageButton_imageIds, 0);
+        overrideImageIds(imageIds);
+
+        int descIds = a.getResourceId(R.styleable.MultiToggleImageButton_contentDescriptionIds, 0);
+        overrideContentDescriptions(descIds);
+
         a.recycle();
     }
 
@@ -158,6 +167,24 @@
         }
     }
 
+    /**
+     * Override the content descriptions of this button.
+     */
+    public void overrideContentDescriptions(int resId) {
+        TypedArray ids = null;
+        try {
+            ids = getResources().obtainTypedArray(resId);
+            mDescIds = new int[ids.length()];
+            for (int i = 0; i < ids.length(); i++) {
+                mDescIds[i] = ids.getResourceId(i, 0);
+            }
+        } finally {
+            if (ids != null) {
+                ids.recycle();
+            }
+        }
+    }
+
     @Override
     public void setImageLevel(int level) {
         super.setImageLevel(level);
diff --git a/src/com/android/camera/ui/ModeListView.java b/src/com/android/camera/ui/ModeListView.java
index d7386b9..939c643 100644
--- a/src/com/android/camera/ui/ModeListView.java
+++ b/src/com/android/camera/ui/ModeListView.java
@@ -368,6 +368,11 @@
 
             // Set text
             selectorItem.setText(CameraUtil.getCameraModeText(modeId, getContext()));
+
+            // Set content description (for a11y)
+            selectorItem.setContentDescription(CameraUtil
+                    .getCameraModeContentDescription(modeId, getContext()));
+
             mModeSelectorItems[i] = selectorItem;
         }
 
diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java
index 7af8670..fbce28e 100644
--- a/src/com/android/camera/util/CameraUtil.java
+++ b/src/com/android/camera/util/CameraUtil.java
@@ -1053,6 +1053,23 @@
     }
 
     /**
+     * Gets the mode content description of a specific mode.
+     *
+     * @param modeIndex index of the mode
+     * @param context current context
+     * @return mode content description if the index is valid, otherwise a new empty string
+     */
+    public static String getCameraModeContentDescription(int modeIndex, Context context) {
+        String[] cameraModesDesc = context.getResources()
+                .getStringArray(R.array.camera_mode_content_description);
+        if (modeIndex < 0 || modeIndex >= cameraModesDesc.length) {
+            Log.e(TAG, "Invalid mode index: " + modeIndex);
+            return new String();
+        }
+        return cameraModesDesc[modeIndex];
+    }
+
+    /**
      * Gets the shutter icon res id for a specific mode.
      *
      * @param modeIndex index of the mode
