Show different glowpad options for incoming video call.

- Refactor code be more flexibile/specific in specifying the targets
for the glow pad; went from "n-way" labeling of different target sets
to more explicit labeling of scenarios, such as "audio without sms".
- Add target sets and cases for showing targest in AnswerFragment.
- Added new drawable for the target to answer a video call.
- Add method to GlowPadView to allow changing the handle (now it may
be either a videocamera or phone icon, depending on the scenario).
- Add a new video handle for incoming video calls.
- TODO: Hook this up to show these glowpads if there is an incoming
video call.
- Deleted some unused resource files.

Bug: 16015750
Change-Id: I77ff08f45f57cd2817866b5d78648af8891bb675
diff --git a/InCallUI/res/drawable-hdpi/ic_in_call_touch_handle_normal.png b/InCallUI/res/drawable-hdpi/ic_in_call_touch_handle_normal.png
deleted file mode 100644
index e852534..0000000
--- a/InCallUI/res/drawable-hdpi/ic_in_call_touch_handle_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-hdpi/ic_in_call_touch_handle_normal.png b/InCallUI/res/drawable-ldrtl-hdpi/ic_in_call_touch_handle_normal.png
deleted file mode 100644
index 4a3628b..0000000
--- a/InCallUI/res/drawable-ldrtl-hdpi/ic_in_call_touch_handle_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-mdpi/ic_in_call_touch_handle_normal.png b/InCallUI/res/drawable-ldrtl-mdpi/ic_in_call_touch_handle_normal.png
deleted file mode 100644
index 13b2ecf..0000000
--- a/InCallUI/res/drawable-ldrtl-mdpi/ic_in_call_touch_handle_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-xhdpi/ic_in_call_touch_handle_normal.png b/InCallUI/res/drawable-ldrtl-xhdpi/ic_in_call_touch_handle_normal.png
deleted file mode 100644
index c707950..0000000
--- a/InCallUI/res/drawable-ldrtl-xhdpi/ic_in_call_touch_handle_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_in_call_touch_handle_normal.png b/InCallUI/res/drawable-mdpi/ic_in_call_touch_handle_normal.png
deleted file mode 100644
index cebdc4d..0000000
--- a/InCallUI/res/drawable-mdpi/ic_in_call_touch_handle_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_in_call_touch_handle_normal.png b/InCallUI/res/drawable-xhdpi/ic_in_call_touch_handle_normal.png
deleted file mode 100644
index 1d112f2..0000000
--- a/InCallUI/res/drawable-xhdpi/ic_in_call_touch_handle_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_in_call_touch_handle_normal.png b/InCallUI/res/drawable-xxhdpi/ic_in_call_touch_handle_normal.png
deleted file mode 100644
index b41967b..0000000
--- a/InCallUI/res/drawable-xxhdpi/ic_in_call_touch_handle_normal.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable/ic_in_call_touch_handle.xml b/InCallUI/res/drawable/ic_incall_audio_handle.xml
similarity index 95%
rename from InCallUI/res/drawable/ic_in_call_touch_handle.xml
rename to InCallUI/res/drawable/ic_incall_audio_handle.xml
index 47d902b..fd40e51 100644
--- a/InCallUI/res/drawable/ic_in_call_touch_handle.xml
+++ b/InCallUI/res/drawable/ic_incall_audio_handle.xml
@@ -17,7 +17,7 @@
 <!-- Touch handle for the GlowPadView widget on the incoming call screen -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <!-- Call icon on tinted floating action bar background. -->
+    <!-- Audio call icon on tinted floating action bar background. -->
     <item
         android:state_enabled="true"
         android:state_active="false"
diff --git a/InCallUI/res/drawable/ic_incall_video_handle.xml b/InCallUI/res/drawable/ic_incall_video_handle.xml
new file mode 100644
index 0000000..80636af
--- /dev/null
+++ b/InCallUI/res/drawable/ic_incall_video_handle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+
+<!-- Touch handle for the GlowPadView widget on the incoming call screen -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!-- Video call icon on tinted floating action bar background. -->
+    <item
+        android:state_enabled="true"
+        android:state_active="false"
+        android:state_focused="false">
+        <layer-list>
+            <item>
+                <bitmap
+                    android:src="@drawable/fab_teal_background"
+                    android:tint="@color/glowpad_incoming_widget_background_tint" />
+            </item>
+            <item>
+                <bitmap
+                    android:gravity="center"
+                    android:src="@drawable/ic_videocam"
+                    android:tint="@color/glowpad_incoming_widget_tint" />
+            </item>
+        </layer-list>
+    </item>
+
+</selector>
diff --git a/InCallUI/res/drawable/ic_lockscreen_answer_video.xml b/InCallUI/res/drawable/ic_lockscreen_answer_video.xml
new file mode 100644
index 0000000..0557797
--- /dev/null
+++ b/InCallUI/res/drawable/ic_lockscreen_answer_video.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+<!-- Used with incoming call wigdet. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_enabled="true" android:state_active="false" android:state_focused="false"
+        android:drawable="@drawable/ic_lockscreen_answer_video_normal_layer"/>
+    <item
+        android:state_enabled="true" android:state_active="true"  android:state_focused="false"
+        android:drawable="@drawable/ic_lockscreen_answer_video_activated_layer" />
+   <item
+        android:state_enabled="true" android:state_active="false"  android:state_focused="true"
+        android:drawable="@drawable/ic_lockscreen_answer_video_activated_layer" />
+</selector>
diff --git a/InCallUI/res/drawable/ic_lockscreen_answer_video_activated_layer.xml b/InCallUI/res/drawable/ic_lockscreen_answer_video_activated_layer.xml
new file mode 100644
index 0000000..3cb7692
--- /dev/null
+++ b/InCallUI/res/drawable/ic_lockscreen_answer_video_activated_layer.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/fab_teal_background" />
+    <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@drawable/ic_videocam"
+            android:tint="@color/glowpad_widget_active_color" />
+    </item>
+</layer-list>
diff --git a/InCallUI/res/drawable/ic_lockscreen_answer_video_normal_layer.xml b/InCallUI/res/drawable/ic_lockscreen_answer_video_normal_layer.xml
new file mode 100644
index 0000000..708bbcc
--- /dev/null
+++ b/InCallUI/res/drawable/ic_lockscreen_answer_video_normal_layer.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- A fake circle to fix the size of this layer asset. -->
+    <item>
+        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
+            <solid android:color="#00000000"/>
+            <size
+                android:width="@dimen/incoming_call_widget_circle_size"
+                android:height="@dimen/incoming_call_widget_circle_size" />
+        </shape>
+    </item>
+    <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@drawable/ic_videocam"
+            android:tint="@color/glowpad_call_widget_normal_tint" />
+    </item>
+</layer-list>
diff --git a/InCallUI/res/layout/answer_fragment.xml b/InCallUI/res/layout/answer_fragment.xml
index 92630b8..7026dd1 100644
--- a/InCallUI/res/layout/answer_fragment.xml
+++ b/InCallUI/res/layout/answer_fragment.xml
@@ -28,10 +28,10 @@
         android:background="@color/glowpad_background_color"
         android:visibility="gone"
 
-        dc:targetDrawables="@array/incoming_call_widget_3way_targets"
-        dc:targetDescriptions="@array/incoming_call_widget_3way_target_descriptions"
-        dc:directionDescriptions="@array/incoming_call_widget_3way_direction_descriptions"
-        dc:handleDrawable="@drawable/ic_in_call_touch_handle"
+        dc:targetDrawables="@array/incoming_call_widget_audio_with_sms_targets"
+        dc:targetDescriptions="@array/incoming_call_widget_audio_with_sms_target_descriptions"
+        dc:directionDescriptions="@array/incoming_call_widget_audio_with_sms_direction_descriptions"
+        dc:handleDrawable="@drawable/ic_incall_audio_handle"
         dc:outerRingDrawable="@drawable/ic_lockscreen_outerring"
         dc:outerRadius="@dimen/glowpadview_target_placement_radius"
         dc:innerRadius="@dimen/glowpadview_inner_radius"
@@ -40,5 +40,4 @@
         dc:vibrationDuration="20"
         dc:glowRadius="@dimen/glowpadview_glow_radius"
         dc:pointDrawable="@drawable/ic_lockscreen_glowdot"
-        dc:allowScaling="true"
-        />
+        dc:allowScaling="true" />
diff --git a/InCallUI/res/values/array.xml b/InCallUI/res/values/array.xml
index 3902e84..b741905 100644
--- a/InCallUI/res/values/array.xml
+++ b/InCallUI/res/values/array.xml
@@ -20,50 +20,95 @@
     <!-- "Target" resources for the GlowPadView widget used for incoming calls;
          see InCallTouchUi.showIncomingCallWidget() and incall_touch_ui.xml.  -->
 
-    <!-- For most incoming calls the GlowPadView widget provides 3 choices:
+    <!-- For audio calls, if respond via SMS is disabled:
          - Answer (drag right)
-         - Reject (drag left)
-         - Respond via SMS (drag up) -->
-    <array name="incoming_call_widget_3way_targets">
+         - Decline (drag left) -->
+    <array name="incoming_call_widget_audio_without_sms_targets">
+        <item>@drawable/ic_lockscreen_answer</item>
+        <item>@null</item>
+        <item>@drawable/ic_lockscreen_decline</item>
+        <item>@null</item>"
+    </array>
+    <array name="incoming_call_widget_audio_without_sms_target_descriptions">
+        <item>@string/description_target_answer</item>
+        <item>@null</item>
+        <item>@string/description_target_decline</item>
+        <item>@null</item>"
+    </array>
+    <array name="incoming_call_widget_audio_without_sms_direction_descriptions">
+        <item>@string/description_direction_right</item>
+        <item>@null</item>
+        <item>@string/description_direction_left</item>
+        <item>@null</item>
+    </array>
+
+    <!-- For audio calls, if respond via SMS is enabled:
+         - Answer (drag right)
+         - Respond via SMS (drag up)
+         - Decline (drag left) -->
+    <array name="incoming_call_widget_audio_with_sms_targets">
         <item>@drawable/ic_lockscreen_answer</item>
         <item>@drawable/ic_lockscreen_text</item>
         <item>@drawable/ic_lockscreen_decline</item>
         <item>@null</item>"
     </array>
-    <array name="incoming_call_widget_3way_target_descriptions">
+    <array name="incoming_call_widget_audio_with_sms_target_descriptions">
         <item>@string/description_target_answer</item>
         <item>@string/description_target_send_sms</item>
         <item>@string/description_target_decline</item>
         <item>@null</item>"
     </array>
-    <array name="incoming_call_widget_3way_direction_descriptions">
+    <array name="incoming_call_widget_audio_with_sms_direction_descriptions">
         <item>@string/description_direction_right</item>
         <item>@string/description_direction_up</item>
         <item>@string/description_direction_left</item>
         <item>@null</item>
     </array>
 
-    <!-- But in some cases "Respond via SMS" isn't available, so there are
-         only 2 choices:
-         - Answer (drag right)
-         - Reject (drag left) -->
-    <array name="incoming_call_widget_2way_targets">
+    <!-- For video calls, if respond via SMS is disabled:
+         - Answer as video call (drag right)
+         - Decline (drag left)
+         - Answer as audio call (drag down) -->
+    <array name="incoming_call_widget_video_without_sms_targets">
         <item>@drawable/ic_lockscreen_answer</item>
         <item>@null</item>
         <item>@drawable/ic_lockscreen_decline</item>
-        <item>@null</item>"
+        <item>@drawable/ic_lockscreen_answer_video</item>
     </array>
-    <array name="incoming_call_widget_2way_target_descriptions">
-        <item>@string/description_target_answer</item>
+    <array name="incoming_call_widget_video_without_sms_target_descriptions">
+        <item>@string/description_target_answer_video_call</item>
         <item>@null</item>
         <item>@string/description_target_decline</item>
-        <item>@null</item>"
+        <item>@string/description_target_answer_audio_call</item>
     </array>
-    <array name="incoming_call_widget_2way_direction_descriptions">
+    <array name="incoming_call_widget_video_without_sms_direction_descriptions">
         <item>@string/description_direction_right</item>
         <item>@null</item>
         <item>@string/description_direction_left</item>
-        <item>@null</item>
+        <item>@string/description_direction_down</item>
     </array>
 
+    <!-- For video calls, if respond via SMS is enabled:
+         - Answer as video call (drag right)
+         - Respond via SMS (drag up)
+         - Decline (drag left)
+         - Answer as audio call (drag down) -->
+    <array name="incoming_call_widget_video_with_sms_targets">
+        <item>@drawable/ic_lockscreen_answer_video</item>
+        <item>@drawable/ic_lockscreen_text</item>
+        <item>@drawable/ic_lockscreen_decline</item>
+        <item>@drawable/ic_lockscreen_answer</item>
+    </array>
+    <array name="incoming_call_widget_video_with_sms_target_descriptions">
+        <item>@string/description_target_answer_video_call</item>
+        <item>@string/description_target_send_sms</item>
+        <item>@string/description_target_decline</item>
+        <item>@string/description_target_answer_audio_call</item>
+    </array>
+    <array name="incoming_call_widget_video_with_sms_direction_descriptions">
+        <item>@string/description_direction_right</item>
+        <item>@string/description_direction_up</item>
+        <item>@string/description_direction_left</item>
+        <item>@string/description_direction_down</item>
+    </array>
 </resources>
diff --git a/InCallUI/src/com/android/incallui/AnswerFragment.java b/InCallUI/src/com/android/incallui/AnswerFragment.java
index dfc902d..371a3ca 100644
--- a/InCallUI/src/com/android/incallui/AnswerFragment.java
+++ b/InCallUI/src/com/android/incallui/AnswerFragment.java
@@ -44,6 +44,11 @@
 public class AnswerFragment extends BaseFragment<AnswerPresenter, AnswerPresenter.AnswerUi>
         implements GlowPadWrapper.AnswerListener, AnswerPresenter.AnswerUi {
 
+    public static final int TARGET_SET_FOR_AUDIO_WITHOUT_SMS = 0;
+    public static final int TARGET_SET_FOR_AUDIO_WITH_SMS = 1;
+    public static final int TARGET_SET_FOR_VIDEO_WITHOUT_SMS = 2;
+    public static final int TARGET_SET_FOR_VIDEO_WITH_SMS = 3;
+
     /**
      * The popup showing the list of canned responses.
      *
@@ -112,29 +117,58 @@
         }
     }
 
+    /**
+     * Sets targets on the glowpad according to target set identified by the parameter.
+     * @param targetSet Integer identifying the set of targets to use.
+     */
     @Override
-    public void showTextButton(boolean show) {
-        final int targetResourceId = show
-                ? R.array.incoming_call_widget_3way_targets
-                : R.array.incoming_call_widget_2way_targets;
+    public void showTargets(int targetSet) {
+        final int targetResourceId;
+        final int targetDescriptionsResourceId;
+        final int directionDescriptionsResourceId;
+        final int handleDrawableResourceId;
+
+        switch (targetSet) {
+            case TARGET_SET_FOR_AUDIO_WITH_SMS:
+                targetResourceId = R.array.incoming_call_widget_audio_with_sms_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_audio_with_sms_target_descriptions;
+                directionDescriptionsResourceId =
+                        R.array.incoming_call_widget_audio_with_sms_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_audio_handle;
+                break;
+            case TARGET_SET_FOR_VIDEO_WITHOUT_SMS:
+                targetResourceId = R.array.incoming_call_widget_video_without_sms_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_without_sms_target_descriptions;
+                directionDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_without_sms_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_video_handle;
+                break;
+            case TARGET_SET_FOR_VIDEO_WITH_SMS:
+                targetResourceId = R.array.incoming_call_widget_video_with_sms_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_with_sms_target_descriptions;
+                directionDescriptionsResourceId =
+                        R.array.incoming_call_widget_video_with_sms_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_video_handle;
+                break;
+            case TARGET_SET_FOR_AUDIO_WITHOUT_SMS:
+            default:
+                targetResourceId = R.array.incoming_call_widget_audio_without_sms_targets;
+                targetDescriptionsResourceId =
+                        R.array.incoming_call_widget_audio_without_sms_target_descriptions;
+                directionDescriptionsResourceId =
+                        R.array.incoming_call_widget_audio_without_sms_direction_descriptions;
+                handleDrawableResourceId = R.drawable.ic_incall_audio_handle;
+                break;
+        }
 
         if (targetResourceId != mGlowpad.getTargetResourceId()) {
-            if (show) {
-                // Answer, Decline, and Respond via SMS.
-                mGlowpad.setTargetResources(targetResourceId);
-                mGlowpad.setTargetDescriptionsResourceId(
-                        R.array.incoming_call_widget_3way_target_descriptions);
-                mGlowpad.setDirectionDescriptionsResourceId(
-                        R.array.incoming_call_widget_3way_direction_descriptions);
-            } else {
-                // Answer or Decline.
-                mGlowpad.setTargetResources(targetResourceId);
-                mGlowpad.setTargetDescriptionsResourceId(
-                        R.array.incoming_call_widget_2way_target_descriptions);
-                mGlowpad.setDirectionDescriptionsResourceId(
-                        R.array.incoming_call_widget_2way_direction_descriptions);
-            }
-
+            mGlowpad.setTargetResources(targetResourceId);
+            mGlowpad.setTargetDescriptionsResourceId(targetDescriptionsResourceId);
+            mGlowpad.setDirectionDescriptionsResourceId(directionDescriptionsResourceId);
+            mGlowpad.setHandleDrawable(handleDrawableResourceId);
             mGlowpad.reset(false);
         }
     }
diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java
index 5c7188e..188fabb 100644
--- a/InCallUI/src/com/android/incallui/AnswerPresenter.java
+++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java
@@ -94,14 +94,13 @@
         getUi().showAnswerUi(true);
 
         if (call.can(CallCapabilities.RESPOND_VIA_TEXT) && textMsgs != null) {
-            getUi().showTextButton(true);
+            getUi().showTargets(AnswerFragment.TARGET_SET_FOR_AUDIO_WITH_SMS);
             getUi().configureMessageDialog(textMsgs);
         } else {
-            getUi().showTextButton(false);
+            getUi().showTargets(AnswerFragment.TARGET_SET_FOR_AUDIO_WITHOUT_SMS);
         }
     }
 
-
     @Override
     public void onCallChanged(Call call) {
         Log.d(this, "onCallStateChange() " + call + " " + this);
@@ -154,7 +153,7 @@
 
     interface AnswerUi extends Ui {
         public void showAnswerUi(boolean show);
-        public void showTextButton(boolean show);
+        public void showTargets(int targetSet);
         public void showMessageDialog();
         public void configureMessageDialog(List<String> textResponses);
     }
diff --git a/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java b/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java
index e97691b..a5733de 100644
--- a/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java
+++ b/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java
@@ -223,8 +223,7 @@
                 mFeedbackCount);
         mAllowScaling = a.getBoolean(R.styleable.GlowPadView_allowScaling, false);
         TypedValue handle = a.peekValue(R.styleable.GlowPadView_handleDrawable);
-        mHandleDrawable = new TargetDrawable(res, handle != null ? handle.resourceId : 0, 2);
-        mHandleDrawable.setState(TargetDrawable.STATE_INACTIVE);
+        setHandleDrawable(handle != null ? handle.resourceId : R.drawable.ic_incall_audio_handle);
         mOuterRing = new TargetDrawable(res,
                 getResourceId(a, R.styleable.GlowPadView_outerRingDrawable), 1);
 
@@ -620,7 +619,6 @@
             updatePointCloudPosition(mWaveCenterX, mWaveCenterY);
         }
     }
-
     /**
      * Loads an array of drawables from the given resourceId.
      *
@@ -640,6 +638,15 @@
     }
 
     /**
+     * Sets teh handle drawable to the drawable specified by the resource ID.
+     * @param resourceId
+     */
+    public void setHandleDrawable(int resourceId) {
+        mHandleDrawable = new TargetDrawable(getResources(), resourceId, 2);
+        mHandleDrawable.setState(TargetDrawable.STATE_INACTIVE);
+    }
+
+    /**
      * Sets the resource id specifying the target descriptions for accessibility.
      *
      * @param resourceId The resource id.