AccessibilityServiceInfo does not report properly the feedback type.

Since the feedback type is an integer the bits of which correspond to a given
feedback type, the AccessibilityNodeInfo#feedbackTypeToString should return a
string representation of all feedback types. The current implementation
incorrectly assumes that the argument had only one flag set. Note that this
is a new ICS API and we would like to have this fixed.

bug:5486933

Change-Id: I5e461c385e199cce4c3054907ff0acf5e9d92afc
This commit is contained in:
Svetoslav Ganov
2011-10-19 17:10:14 -07:00
parent 47f8367ab7
commit bb1b9ea8a4

View File

@@ -463,20 +463,34 @@ public class AccessibilityServiceInfo implements Parcelable {
* @return The string representation.
*/
public static String feedbackTypeToString(int feedbackType) {
switch (feedbackType) {
case FEEDBACK_AUDIBLE:
return "FEEDBACK_AUDIBLE";
case FEEDBACK_HAPTIC:
return "FEEDBACK_HAPTIC";
case FEEDBACK_GENERIC:
return "FEEDBACK_GENERIC";
case FEEDBACK_SPOKEN:
return "FEEDBACK_SPOKEN";
case FEEDBACK_VISUAL:
return "FEEDBACK_VISUAL";
default:
return null;
StringBuilder builder = new StringBuilder();
builder.append("[");
while (feedbackType > 0) {
final int feedbackTypeFlag = 1 << Integer.numberOfTrailingZeros(feedbackType);
feedbackType &= ~feedbackTypeFlag;
if (builder.length() > 1) {
builder.append(", ");
}
switch (feedbackTypeFlag) {
case FEEDBACK_AUDIBLE:
builder.append("FEEDBACK_AUDIBLE");
break;
case FEEDBACK_HAPTIC:
builder.append("FEEDBACK_HAPTIC");
break;
case FEEDBACK_GENERIC:
builder.append("FEEDBACK_GENERIC");
break;
case FEEDBACK_SPOKEN:
builder.append("FEEDBACK_SPOKEN");
break;
case FEEDBACK_VISUAL:
builder.append("FEEDBACK_VISUAL");
break;
}
}
builder.append("]");
return builder.toString();
}
/**