Merge "Fix for Media Server memory leak" into honeycomb-mr1
diff --git a/api/12.xml b/api/12.xml
index 37a81fc..b8b11fe 100644
--- a/api/12.xml
+++ b/api/12.xml
@@ -7913,6 +7913,17 @@
visibility="public"
>
</field>
+<field name="resizeMode"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843619"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="resizeable"
type="int"
transient="false"
@@ -9926,6 +9937,17 @@
visibility="public"
>
</field>
+<field name="textCursorDrawable"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843618"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="textEditNoPasteWindowLayout"
type="int"
transient="false"
@@ -21131,6 +21153,17 @@
<parameter name="listener" type="android.animation.ValueAnimator.AnimatorUpdateListener">
</parameter>
</method>
+<method name="getAnimatedFraction"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getAnimatedValue"
return="java.lang.Object"
abstract="false"
@@ -22680,6 +22713,19 @@
<parameter name="id" type="int">
</parameter>
</method>
+<method name="dispatchGenericMotionEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="ev" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="dispatchKeyEvent"
return="boolean"
abstract="false"
@@ -23510,6 +23556,19 @@
visibility="public"
>
</method>
+<method name="onGenericMotionEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="onKeyDown"
return="boolean"
abstract="false"
@@ -25027,6 +25086,17 @@
<parameter name="packageName" type="java.lang.String">
</parameter>
</method>
+<field name="MOVE_TASK_NO_USER_ACTION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="MOVE_TASK_WITH_HOME"
type="int"
transient="false"
@@ -25458,6 +25528,16 @@
visibility="public"
>
</field>
+<field name="persistentId"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
</class>
<class name="ActivityManager.RunningAppProcessInfo"
extends="java.lang.Object"
@@ -27506,6 +27586,19 @@
visibility="public"
>
</method>
+<method name="dispatchGenericMotionEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="ev" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="dispatchKeyEvent"
return="boolean"
abstract="false"
@@ -27861,6 +27954,19 @@
visibility="public"
>
</method>
+<method name="onGenericMotionEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="onKeyDown"
return="boolean"
abstract="false"
@@ -28537,6 +28643,17 @@
visibility="public"
>
</method>
+<method name="dismissAllowingStateLoss"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getDialog"
return="android.app.Dialog"
abstract="false"
@@ -28744,6 +28861,31 @@
deprecated="not deprecated"
visibility="public"
>
+<method name="addCompletedDownload"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="title" type="java.lang.String">
+</parameter>
+<parameter name="description" type="java.lang.String">
+</parameter>
+<parameter name="isMediaScannerScannable" type="boolean">
+</parameter>
+<parameter name="mimeType" type="java.lang.String">
+</parameter>
+<parameter name="path" type="java.lang.String">
+</parameter>
+<parameter name="length" type="long">
+</parameter>
+<parameter name="showNotification" type="boolean">
+</parameter>
+</method>
<method name="enqueue"
return="long"
abstract="false"
@@ -29147,6 +29289,17 @@
visibility="public"
>
</field>
+<field name="INTENT_EXTRAS_SORT_BY_SIZE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.app.DownloadManager.extra_sortBySize""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="PAUSED_QUEUED_FOR_WIFI"
type="int"
transient="false"
@@ -29538,6 +29691,17 @@
visibility="public"
>
</field>
+<field name="VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
</class>
<class name="ExpandableListActivity"
extends="android.app.Activity"
@@ -30233,9 +30397,26 @@
synchronized="false"
static="false"
final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+<parameter name="attrs" type="android.util.AttributeSet">
+</parameter>
+<parameter name="savedInstanceState" type="android.os.Bundle">
+</parameter>
+</method>
+<method name="onInflate"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
deprecated="not deprecated"
visibility="public"
>
+<parameter name="activity" type="android.app.Activity">
+</parameter>
<parameter name="attrs" type="android.util.AttributeSet">
</parameter>
<parameter name="savedInstanceState" type="android.os.Bundle">
@@ -30582,6 +30763,19 @@
<parameter name="visibleCrumbs" type="int">
</parameter>
</method>
+<method name="setOnBreadCrumbClickListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener">
+</parameter>
+</method>
<method name="setParentTitle"
return="void"
abstract="false"
@@ -30615,6 +30809,29 @@
</parameter>
</method>
</class>
+<interface name="FragmentBreadCrumbs.OnBreadCrumbClickListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onBreadCrumbClick"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="backStack" type="android.app.FragmentManager.BackStackEntry">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+</interface>
<class name="FragmentManager"
extends="java.lang.Object"
abstract="true"
@@ -35162,6 +35379,17 @@
visibility="public"
>
</field>
+<field name="EXTRA_NEW_SEARCH"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""new_search""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="EXTRA_SELECT_QUERY"
type="java.lang.String"
transient="false"
@@ -39602,6 +39830,50 @@
visibility="public"
>
</field>
+<field name="RESIZE_BOTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESIZE_HORIZONTAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESIZE_NONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESIZE_VERTICAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="autoAdvanceViewId"
type="int"
transient="false"
@@ -39692,6 +39964,16 @@
visibility="public"
>
</field>
+<field name="resizeMode"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="updatePeriodMillis"
type="int"
transient="false"
@@ -49100,6 +49382,17 @@
visibility="public"
>
</field>
+<field name="USB_SERVICE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""usb""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="VIBRATOR_SERVICE"
type="java.lang.String"
transient="false"
@@ -52954,6 +53247,17 @@
visibility="public"
>
</field>
+<field name="ACTION_MY_PACKAGE_REPLACED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.intent.action.MY_PACKAGE_REPLACED""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="ACTION_NEW_OUTGOING_CALL"
type="java.lang.String"
transient="false"
@@ -52998,6 +53302,17 @@
visibility="public"
>
</field>
+<field name="ACTION_PACKAGE_FIRST_LAUNCH"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.intent.action.PACKAGE_FIRST_LAUNCH""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="ACTION_PACKAGE_INSTALL"
type="java.lang.String"
transient="false"
@@ -54273,6 +54588,17 @@
visibility="public"
>
</field>
+<field name="FLAG_EXCLUDE_STOPPED_PACKAGES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="FLAG_FROM_BACKGROUND"
type="int"
transient="false"
@@ -54306,6 +54632,17 @@
visibility="public"
>
</field>
+<field name="FLAG_INCLUDE_STOPPED_PACKAGES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="FLAG_RECEIVER_REGISTERED_ONLY"
type="int"
transient="false"
@@ -58121,6 +58458,17 @@
visibility="public"
>
</field>
+<field name="FLAG_STOPPED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2097152"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="FLAG_SUPPORTS_LARGE_SCREENS"
type="int"
transient="false"
@@ -60936,6 +61284,28 @@
visibility="public"
>
</field>
+<field name="FEATURE_USB_ACCESSORY"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.hardware.usb.accessory""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FEATURE_USB_HOST"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.hardware.usb.host""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="FEATURE_WIFI"
type="java.lang.String"
transient="false"
@@ -72295,6 +72665,33 @@
<parameter name="message" type="java.lang.String">
</parameter>
</constructor>
+<constructor name="DrmErrorEvent"
+ type="android.drm.DrmErrorEvent"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uniqueId" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="message" type="java.lang.String">
+</parameter>
+<parameter name="attributes" type="java.util.HashMap<java.lang.String, java.lang.Object>">
+</parameter>
+</constructor>
+<field name="TYPE_ACQUIRE_DRM_INFO_FAILED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2008"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="TYPE_NOT_SUPPORTED"
type="int"
transient="false"
@@ -72394,7 +72791,36 @@
</parameter>
<parameter name="message" type="java.lang.String">
</parameter>
+<parameter name="attributes" type="java.util.HashMap<java.lang.String, java.lang.Object>">
+</parameter>
</constructor>
+<constructor name="DrmEvent"
+ type="android.drm.DrmEvent"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+<parameter name="uniqueId" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="message" type="java.lang.String">
+</parameter>
+</constructor>
+<method name="getAttribute"
+ return="java.lang.Object"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="java.lang.String">
+</parameter>
+</method>
<method name="getMessage"
return="java.lang.String"
abstract="false"
@@ -72428,6 +72854,17 @@
visibility="public"
>
</method>
+<field name="DRM_INFO_OBJECT"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""drm_info_object""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="DRM_INFO_STATUS_OBJECT"
type="java.lang.String"
transient="false"
@@ -72604,6 +73041,22 @@
<parameter name="message" type="java.lang.String">
</parameter>
</constructor>
+<constructor name="DrmInfoEvent"
+ type="android.drm.DrmInfoEvent"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uniqueId" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="message" type="java.lang.String">
+</parameter>
+<parameter name="attributes" type="java.util.HashMap<java.lang.String, java.lang.Object>">
+</parameter>
+</constructor>
<field name="TYPE_ACCOUNT_ALREADY_REGISTERED"
type="int"
transient="false"
@@ -72648,6 +73101,17 @@
visibility="public"
>
</field>
+<field name="TYPE_RIGHTS_REMOVED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="TYPE_WAIT_FOR_RIGHTS"
type="int"
transient="false"
@@ -76248,6 +76712,17 @@
<parameter name="offsetXY" type="int[]">
</parameter>
</method>
+<method name="getByteCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getConfig"
return="android.graphics.Bitmap.Config"
abstract="false"
@@ -76270,6 +76745,17 @@
visibility="public"
>
</method>
+<method name="getGenerationId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getHeight"
return="int"
abstract="false"
@@ -76487,6 +76973,19 @@
visibility="public"
>
</method>
+<method name="sameAs"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="other" type="android.graphics.Bitmap">
+</parameter>
+</method>
<method name="setDensity"
return="void"
abstract="false"
@@ -76500,6 +76999,19 @@
<parameter name="density" type="int">
</parameter>
</method>
+<method name="setHasAlpha"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="hasAlpha" type="boolean">
+</parameter>
+</method>
<method name="setPixel"
return="void"
abstract="false"
@@ -77335,6 +77847,23 @@
visibility="public"
>
</method>
+<method name="rotate"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+</method>
<method name="rotateX"
return="void"
abstract="false"
@@ -77385,6 +77914,23 @@
visibility="public"
>
</method>
+<method name="setLocation"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+</method>
<method name="translate"
return="void"
abstract="false"
@@ -90485,7 +91031,7 @@
<method name="addCallbackBuffer"
return="void"
abstract="false"
- native="true"
+ native="false"
synchronized="false"
static="false"
final="true"
@@ -93949,6 +94495,1334 @@
</field>
</class>
</package>
+<package name="android.hardware.usb"
+>
+<class name="UsbAccessory"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDescription"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getManufacturer"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getModel"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSerial"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getUri"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getVersion"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="parcel" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="UsbConstants"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="UsbConstants"
+ type="android.hardware.usb.UsbConstants"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<field name="USB_CLASS_APP_SPEC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="254"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_AUDIO"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_CDC_DATA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_COMM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_CONTENT_SEC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="13"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_CSCID"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="11"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_HID"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_HUB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_MASS_STORAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_MISC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="239"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_PER_INTERFACE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_PHYSICA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_PRINTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_STILL_IMAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_VENDOR_SPEC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="255"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_VIDEO"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_CLASS_WIRELESS_CONTROLLER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="224"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_DIR_IN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="128"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_DIR_OUT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_ENDPOINT_DIR_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="128"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_ENDPOINT_NUMBER_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="15"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_ENDPOINT_XFERTYPE_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_ENDPOINT_XFER_BULK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_ENDPOINT_XFER_CONTROL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_ENDPOINT_XFER_INT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_ENDPOINT_XFER_ISOC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_INTERFACE_SUBCLASS_BOOT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_SUBCLASS_VENDOR_SPEC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="255"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_TYPE_CLASS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_TYPE_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="96"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_TYPE_RESERVED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="96"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_TYPE_STANDARD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="USB_TYPE_VENDOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="64"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="UsbDevice"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDeviceClass"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDeviceId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDeviceId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</method>
+<method name="getDeviceName"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDeviceName"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="id" type="int">
+</parameter>
+</method>
+<method name="getDeviceProtocol"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDeviceSubclass"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getInterface"
+ return="android.hardware.usb.UsbInterface"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+</method>
+<method name="getInterfaceCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getProductId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getVendorId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="parcel" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="UsbDeviceConnection"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="bulkTransfer"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="endpoint" type="android.hardware.usb.UsbEndpoint">
+</parameter>
+<parameter name="buffer" type="byte[]">
+</parameter>
+<parameter name="length" type="int">
+</parameter>
+<parameter name="timeout" type="int">
+</parameter>
+</method>
+<method name="claimInterface"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="intf" type="android.hardware.usb.UsbInterface">
+</parameter>
+<parameter name="force" type="boolean">
+</parameter>
+</method>
+<method name="close"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="controlTransfer"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="requestType" type="int">
+</parameter>
+<parameter name="request" type="int">
+</parameter>
+<parameter name="value" type="int">
+</parameter>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="buffer" type="byte[]">
+</parameter>
+<parameter name="length" type="int">
+</parameter>
+<parameter name="timeout" type="int">
+</parameter>
+</method>
+<method name="getFileDescriptor"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSerial"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="releaseInterface"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="intf" type="android.hardware.usb.UsbInterface">
+</parameter>
+</method>
+<method name="requestWait"
+ return="android.hardware.usb.UsbRequest"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</class>
+<class name="UsbEndpoint"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getAddress"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getAttributes"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDirection"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEndpointNumber"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getInterval"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getMaxPacketSize"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getType"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="parcel" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="UsbInterface"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEndpoint"
+ return="android.hardware.usb.UsbEndpoint"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+</method>
+<method name="getEndpointCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getInterfaceClass"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getInterfaceProtocol"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getInterfaceSubclass"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="parcel" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="UsbManager"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="getAccessoryList"
+ return="android.hardware.usb.UsbAccessory[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDeviceList"
+ return="java.util.HashMap<java.lang.String, android.hardware.usb.UsbDevice>"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="hasPermission"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="device" type="android.hardware.usb.UsbDevice">
+</parameter>
+</method>
+<method name="hasPermission"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="accessory" type="android.hardware.usb.UsbAccessory">
+</parameter>
+</method>
+<method name="openAccessory"
+ return="android.os.ParcelFileDescriptor"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="accessory" type="android.hardware.usb.UsbAccessory">
+</parameter>
+</method>
+<method name="openDevice"
+ return="android.hardware.usb.UsbDeviceConnection"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="device" type="android.hardware.usb.UsbDevice">
+</parameter>
+</method>
+<method name="requestPermission"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="device" type="android.hardware.usb.UsbDevice">
+</parameter>
+<parameter name="pi" type="android.app.PendingIntent">
+</parameter>
+</method>
+<method name="requestPermission"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="accessory" type="android.hardware.usb.UsbAccessory">
+</parameter>
+<parameter name="pi" type="android.app.PendingIntent">
+</parameter>
+</method>
+<field name="ACTION_USB_ACCESSORY_ATTACHED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.hardware.usb.action.USB_ACCESSORY_ATTACHED""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ACTION_USB_ACCESSORY_DETACHED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.hardware.usb.action.USB_ACCESSORY_DETACHED""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ACTION_USB_DEVICE_ATTACHED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.hardware.usb.action.USB_DEVICE_ATTACHED""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ACTION_USB_DEVICE_DETACHED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""android.hardware.usb.action.USB_DEVICE_DETACHED""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="EXTRA_ACCESSORY"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""accessory""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="EXTRA_DEVICE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""device""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="EXTRA_PERMISSION_GRANTED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""permission""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="UsbRequest"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="UsbRequest"
+ type="android.hardware.usb.UsbRequest"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="cancel"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="close"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getClientData"
+ return="java.lang.Object"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEndpoint"
+ return="android.hardware.usb.UsbEndpoint"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="initialize"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="connection" type="android.hardware.usb.UsbDeviceConnection">
+</parameter>
+<parameter name="endpoint" type="android.hardware.usb.UsbEndpoint">
+</parameter>
+</method>
+<method name="queue"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="buffer" type="java.nio.ByteBuffer">
+</parameter>
+<parameter name="length" type="int">
+</parameter>
+</method>
+<method name="setClientData"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="data" type="java.lang.Object">
+</parameter>
+</method>
+</class>
+</package>
<package name="android.inputmethodservice"
>
<class name="AbstractInputMethodService"
@@ -110687,6 +112561,1268 @@
</method>
</interface>
</package>
+<package name="android.mtp"
+>
+<class name="MtpConstants"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="MtpConstants"
+ type="android.mtp.MtpConstants"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="isAbstractObject"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="format" type="int">
+</parameter>
+</method>
+<field name="ASSOCIATION_TYPE_GENERIC_FOLDER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_3GP_CONTAINER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47492"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_AAC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47363"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_AUDIO_ALBUM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47619"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_AUDIO_PLAYLIST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47625"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_AV_PLAYLIST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47621"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_DOCUMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47745"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_IMAGE_ALBUM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47618"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_MEDIACAST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47627"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_MULTIMEDIA_ALBUM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47617"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_VIDEO_ALBUM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47620"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ABSTRACT_VIDEO_PLAYLIST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47626"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_AIFF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12295"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ASF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12300"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ASSOCIATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12289"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_ASX_PLAYLIST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47635"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_AUDIBLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47364"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_AVI"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12298"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_BMP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14340"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_DPOF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12294"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_EXECUTABLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12291"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_EXIF_JPEG"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14337"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_FLAC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47366"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_GIF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14343"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_HTML"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12293"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_JFIF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14344"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_JP2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14351"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_JPX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14352"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_M3U_PLAYLIST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47633"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_MP2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47491"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_MP3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12297"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_MP4_CONTAINER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47490"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_MPEG"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12299"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_MPL_PLAYLIST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47634"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_MS_EXCEL_SPREADSHEET"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47749"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_MS_POWERPOINT_PRESENTATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47750"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_MS_WORD_DOCUMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47747"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_OGG"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47362"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_PICT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14346"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_PLS_PLAYLIST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47636"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_PNG"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14347"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_SCRIPT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12290"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_TEXT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12292"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_TIFF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14349"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_TIFF_EP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14338"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_UNDEFINED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12288"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_UNDEFINED_AUDIO"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47360"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_UNDEFINED_COLLECTION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47616"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_UNDEFINED_DOCUMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47744"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_UNDEFINED_FIRMWARE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47106"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_UNDEFINED_VIDEO"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47488"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_WAV"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12296"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_WINDOWS_IMAGE_FORMAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47233"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_WMA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47361"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_WMV"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47489"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_WPL_PLAYLIST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47632"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FORMAT_XML_DOCUMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47746"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="PROTECTION_STATUS_NONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="PROTECTION_STATUS_NON_TRANSFERABLE_DATA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32771"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="PROTECTION_STATUS_READ_ONLY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32769"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="PROTECTION_STATUS_READ_ONLY_DATA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32770"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="MtpDevice"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="MtpDevice"
+ type="android.mtp.MtpDevice"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="device" type="android.hardware.usb.UsbDevice">
+</parameter>
+</constructor>
+<method name="close"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="deleteObject"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="getDeviceId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDeviceInfo"
+ return="android.mtp.MtpDeviceInfo"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDeviceName"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getObject"
+ return="byte[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="objectHandle" type="int">
+</parameter>
+<parameter name="objectSize" type="int">
+</parameter>
+</method>
+<method name="getObjectHandles"
+ return="int[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="storageId" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="getObjectInfo"
+ return="android.mtp.MtpObjectInfo"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="getParent"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="getStorageId"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="getStorageIds"
+ return="int[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStorageInfo"
+ return="android.mtp.MtpStorageInfo"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="storageId" type="int">
+</parameter>
+</method>
+<method name="getThumbnail"
+ return="byte[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="importFile"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="objectHandle" type="int">
+</parameter>
+<parameter name="destPath" type="java.lang.String">
+</parameter>
+</method>
+<method name="open"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="connection" type="android.hardware.usb.UsbDeviceConnection">
+</parameter>
+</method>
+</class>
+<class name="MtpDeviceInfo"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="getManufacturer"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getModel"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSerialNumber"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getVersion"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</class>
+<class name="MtpObjectInfo"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="getAssociationDesc"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getAssociationType"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getCompressedSize"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDateCreated"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDateModified"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getFormat"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getImagePixDepth"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getImagePixHeight"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getImagePixWidth"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getKeywords"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getName"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getObjectHandle"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getParent"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getProtectionStatus"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSequenceNumber"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStorageId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getThumbCompressedSize"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getThumbFormat"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getThumbPixHeight"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getThumbPixWidth"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</class>
+<class name="MtpStorageInfo"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="getDescription"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getFreeSpace"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getMaxCapacity"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStorageId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getVolumeIdentifier"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</class>
+</package>
<package name="android.net"
>
<class name="ConnectivityManager"
@@ -112468,6 +115604,71 @@
<parameter name="uid" type="int">
</parameter>
</method>
+<method name="getUidRxPackets"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
+<method name="getUidTcpRxBytes"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
+<method name="getUidTcpRxSegments"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
+<method name="getUidTcpTxBytes"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
+<method name="getUidTcpTxSegments"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
<method name="getUidTxBytes"
return="long"
abstract="false"
@@ -112481,6 +115682,71 @@
<parameter name="uid" type="int">
</parameter>
</method>
+<method name="getUidTxPackets"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
+<method name="getUidUdpRxBytes"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
+<method name="getUidUdpRxPackets"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
+<method name="getUidUdpTxBytes"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
+<method name="getUidUdpTxPackets"
+ return="long"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uid" type="int">
+</parameter>
+</method>
<field name="UNSUPPORTED"
type="int"
transient="false"
@@ -114289,7 +117555,7 @@
type="android.net.http.SslCertificate"
static="false"
final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
<parameter name="issuedTo" type="java.lang.String">
@@ -114604,6 +117870,497 @@
</field>
</class>
</package>
+<package name="android.net.rtp"
+>
+<class name="AudioCodec"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="getCodec"
+ return="android.net.rtp.AudioCodec"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="rtpmap" type="java.lang.String">
+</parameter>
+<parameter name="fmtp" type="java.lang.String">
+</parameter>
+</method>
+<method name="getCodecs"
+ return="android.net.rtp.AudioCodec[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<field name="AMR"
+ type="android.net.rtp.AudioCodec"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GSM"
+ type="android.net.rtp.AudioCodec"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GSM_EFR"
+ type="android.net.rtp.AudioCodec"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="PCMA"
+ type="android.net.rtp.AudioCodec"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="PCMU"
+ type="android.net.rtp.AudioCodec"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="fmtp"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="rtpmap"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="type"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="AudioGroup"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="AudioGroup"
+ type="android.net.rtp.AudioGroup"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="clear"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getMode"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStreams"
+ return="android.net.rtp.AudioStream[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="sendDtmf"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="int">
+</parameter>
+</method>
+<method name="setMode"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<field name="MODE_ECHO_SUPPRESSION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MODE_MUTED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MODE_NORMAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MODE_ON_HOLD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="AudioStream"
+ extends="android.net.rtp.RtpStream"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="AudioStream"
+ type="android.net.rtp.AudioStream"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="address" type="java.net.InetAddress">
+</parameter>
+<exception name="SocketException" type="java.net.SocketException">
+</exception>
+</constructor>
+<method name="getCodec"
+ return="android.net.rtp.AudioCodec"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDtmfType"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGroup"
+ return="android.net.rtp.AudioGroup"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isBusy"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="join"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="group" type="android.net.rtp.AudioGroup">
+</parameter>
+</method>
+<method name="setCodec"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="codec" type="android.net.rtp.AudioCodec">
+</parameter>
+</method>
+<method name="setDtmfType"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="type" type="int">
+</parameter>
+</method>
+</class>
+<class name="RtpStream"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="associate"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="address" type="java.net.InetAddress">
+</parameter>
+<parameter name="port" type="int">
+</parameter>
+</method>
+<method name="getLocalAddress"
+ return="java.net.InetAddress"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getLocalPort"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getMode"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getRemoteAddress"
+ return="java.net.InetAddress"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getRemotePort"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isBusy"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="release"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="setMode"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<field name="MODE_NORMAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MODE_RECEIVE_ONLY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MODE_SEND_ONLY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+</package>
<package name="android.net.sip"
>
<class name="SipAudioCall"
@@ -115627,6 +119384,17 @@
visibility="public"
>
</method>
+<method name="getAuthUserName"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getAutoRegistration"
return="boolean"
abstract="false"
@@ -115829,6 +119597,19 @@
visibility="public"
>
</method>
+<method name="setAuthUserName"
+ return="android.net.sip.SipProfile.Builder"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</method>
<method name="setAutoRegistration"
return="android.net.sip.SipProfile.Builder"
abstract="false"
@@ -117869,6 +121650,17 @@
visibility="public"
>
</field>
+<field name="WIFI_MODE_FULL_HIGH_PERF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="WIFI_MODE_SCAN_ONLY"
type="int"
transient="false"
@@ -140062,6 +143854,17 @@
visibility="public"
>
</field>
+<field name="HONEYCOMB_MR1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
</class>
<class name="Bundle"
extends="java.lang.Object"
@@ -140321,6 +144124,21 @@
<parameter name="key" type="java.lang.String">
</parameter>
</method>
+<method name="getCharSequence"
+ return="java.lang.CharSequence"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="java.lang.String">
+</parameter>
+<parameter name="defaultValue" type="java.lang.CharSequence">
+</parameter>
+</method>
<method name="getCharSequenceArray"
return="java.lang.CharSequence[]"
abstract="false"
@@ -140654,6 +144472,21 @@
<parameter name="key" type="java.lang.String">
</parameter>
</method>
+<method name="getString"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="java.lang.String">
+</parameter>
+<parameter name="defaultValue" type="java.lang.String">
+</parameter>
+</method>
<method name="getStringArray"
return="java.lang.String[]"
abstract="false"
@@ -146206,6 +150039,17 @@
visibility="public"
>
</method>
+<method name="detachFd"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="fromSocket"
return="android.os.ParcelFileDescriptor"
abstract="false"
@@ -146219,6 +150063,17 @@
<parameter name="socket" type="java.net.Socket">
</parameter>
</method>
+<method name="getFd"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getFileDescriptor"
return="java.io.FileDescriptor"
abstract="false"
@@ -152703,6 +156558,17 @@
visibility="public"
>
</field>
+<field name="EXTRA_CREATE_NEW_TAB"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value=""create_new_tab""
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="EXTRA_HEADERS"
type="java.lang.String"
transient="false"
@@ -161659,6 +165525,19 @@
visibility="public"
>
</method>
+<method name="getVersion"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+</method>
<field name="ACTION_IMAGE_CAPTURE"
type="java.lang.String"
transient="false"
@@ -191322,7 +195201,7 @@
synchronized="false"
static="false"
final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
<parameter name="contextStart" type="int">
@@ -194263,10 +198142,10 @@
synchronized="false"
static="true"
final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
-<parameter name="addr" type="int">
+<parameter name="ipv4Address" type="int">
</parameter>
</method>
<method name="formatShortFileSize"
@@ -195280,6 +199159,23 @@
<parameter name="buffer" type="android.text.Spannable">
</parameter>
</method>
+<method name="onGenericMotionEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="widget" type="android.widget.TextView">
+</parameter>
+<parameter name="text" type="android.text.Spannable">
+</parameter>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="onKeyDown"
return="boolean"
abstract="false"
@@ -196353,6 +200249,23 @@
<parameter name="text" type="android.text.Spannable">
</parameter>
</method>
+<method name="onGenericMotionEvent"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="widget" type="android.widget.TextView">
+</parameter>
+<parameter name="text" type="android.text.Spannable">
+</parameter>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="onKeyDown"
return="boolean"
abstract="true"
@@ -203017,6 +206930,223 @@
</parameter>
</method>
</class>
+<class name="LruCache"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="LruCache"
+ type="android.util.LruCache"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="maxSize" type="int">
+</parameter>
+</constructor>
+<method name="create"
+ return="V"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+<parameter name="key" type="K">
+</parameter>
+</method>
+<method name="createCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="entryRemoved"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+<parameter name="evicted" type="boolean">
+</parameter>
+<parameter name="key" type="K">
+</parameter>
+<parameter name="oldValue" type="V">
+</parameter>
+<parameter name="newValue" type="V">
+</parameter>
+</method>
+<method name="evictAll"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="evictionCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="get"
+ return="V"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="K">
+</parameter>
+</method>
+<method name="hitCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="maxSize"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="missCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="put"
+ return="V"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="K">
+</parameter>
+<parameter name="value" type="V">
+</parameter>
+</method>
+<method name="putCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="remove"
+ return="V"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="K">
+</parameter>
+</method>
+<method name="size"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="sizeOf"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+<parameter name="key" type="K">
+</parameter>
+<parameter name="value" type="V">
+</parameter>
+</method>
+<method name="snapshot"
+ return="java.util.Map<K, V>"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="toString"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="true"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</class>
<class name="MalformedJsonException"
extends="java.io.IOException"
abstract="false"
@@ -206984,9 +211114,35 @@
deprecated="not deprecated"
visibility="public"
>
-<parameter name="rangeType" type="int">
+<parameter name="axis" type="int">
</parameter>
</method>
+<method name="getMotionRange"
+ return="android.view.InputDevice.MotionRange"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="axis" type="int">
+</parameter>
+<parameter name="source" type="int">
+</parameter>
+</method>
+<method name="getMotionRanges"
+ return="java.util.List<android.view.InputDevice.MotionRange>"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getName"
return="java.lang.String"
abstract="false"
@@ -207074,7 +211230,7 @@
value="8"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207085,7 +211241,7 @@
value="2"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207096,7 +211252,7 @@
value="3"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207107,7 +211263,7 @@
value="6"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207118,7 +211274,7 @@
value="7"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207129,7 +211285,7 @@
value="4"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207140,7 +211296,7 @@
value="5"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207151,7 +211307,7 @@
value="0"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207162,7 +211318,7 @@
value="1"
static="true"
final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</field>
@@ -207188,6 +211344,17 @@
visibility="public"
>
</field>
+<field name="SOURCE_CLASS_JOYSTICK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="SOURCE_CLASS_MASK"
type="int"
transient="false"
@@ -207243,6 +211410,28 @@
visibility="public"
>
</field>
+<field name="SOURCE_GAMEPAD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1025"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SOURCE_JOYSTICK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16777232"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="SOURCE_KEYBOARD"
type="int"
transient="false"
@@ -207318,6 +211507,17 @@
deprecated="not deprecated"
visibility="public"
>
+<method name="getAxis"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getFlat"
return="float"
abstract="false"
@@ -207373,6 +211573,17 @@
visibility="public"
>
</method>
+<method name="getSource"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
</class>
<class name="InputEvent"
extends="java.lang.Object"
@@ -208213,6 +212424,17 @@
<parameter name="c" type="int">
</parameter>
</method>
+<method name="getDeviceId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getDisplayLabel"
return="char"
abstract="false"
@@ -208386,6 +212608,17 @@
visibility="public"
>
</method>
+<method name="getSource"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getUnicodeChar"
return="int"
abstract="false"
@@ -208489,6 +212722,19 @@
visibility="public"
>
</method>
+<method name="isGamepadButton"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="keyCode" type="int">
+</parameter>
+</method>
<method name="isLongPress"
return="boolean"
abstract="false"
@@ -208601,6 +212847,32 @@
visibility="public"
>
</method>
+<method name="keyCodeFromString"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="symbolicName" type="java.lang.String">
+</parameter>
+</method>
+<method name="keyCodeToString"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="keyCode" type="int">
+</parameter>
+</method>
<method name="metaStateHasModifiers"
return="boolean"
abstract="false"
@@ -208642,6 +212914,19 @@
<parameter name="metaState" type="int">
</parameter>
</method>
+<method name="setSource"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="source" type="int">
+</parameter>
+</method>
<method name="startTracking"
return="void"
abstract="false"
@@ -209085,6 +213370,182 @@
visibility="public"
>
</field>
+<field name="KEYCODE_BUTTON_1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="188"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_10"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="197"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_11"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="198"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_12"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="199"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_13"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="200"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_14"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="201"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_15"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="202"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_16"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="203"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="189"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="190"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="191"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="192"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_6"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="193"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_7"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="194"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_8"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="195"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEYCODE_BUTTON_9"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="196"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="KEYCODE_BUTTON_A"
type="int"
transient="false"
@@ -212676,6 +217137,32 @@
<parameter name="metaState" type="int">
</parameter>
</method>
+<method name="axisFromString"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="symbolicName" type="java.lang.String">
+</parameter>
+</method>
+<method name="axisToString"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="axis" type="int">
+</parameter>
+</method>
<method name="findPointerIndex"
return="int"
abstract="false"
@@ -212722,6 +217209,45 @@
visibility="public"
>
</method>
+<method name="getAxisValue"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="axis" type="int">
+</parameter>
+</method>
+<method name="getAxisValue"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="axis" type="int">
+</parameter>
+<parameter name="pointerIndex" type="int">
+</parameter>
+</method>
+<method name="getDeviceId"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getDownTime"
return="long"
abstract="false"
@@ -212766,6 +217292,38 @@
visibility="public"
>
</method>
+<method name="getHistoricalAxisValue"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="axis" type="int">
+</parameter>
+<parameter name="pos" type="int">
+</parameter>
+</method>
+<method name="getHistoricalAxisValue"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="axis" type="int">
+</parameter>
+<parameter name="pointerIndex" type="int">
+</parameter>
+<parameter name="pos" type="int">
+</parameter>
+</method>
<method name="getHistoricalEventTime"
return="long"
abstract="false"
@@ -213203,6 +217761,17 @@
<parameter name="pointerIndex" type="int">
</parameter>
</method>
+<method name="getSource"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getToolMajor"
return="float"
abstract="false"
@@ -213511,7 +218080,7 @@
deprecated="not deprecated"
visibility="public"
>
-<parameter name="o" type="android.view.MotionEvent">
+<parameter name="other" type="android.view.MotionEvent">
</parameter>
</method>
<method name="obtainNoHistory"
@@ -213524,7 +218093,7 @@
deprecated="not deprecated"
visibility="public"
>
-<parameter name="o" type="android.view.MotionEvent">
+<parameter name="other" type="android.view.MotionEvent">
</parameter>
</method>
<method name="offsetLocation"
@@ -213594,6 +218163,19 @@
<parameter name="y" type="float">
</parameter>
</method>
+<method name="setSource"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="source" type="int">
+</parameter>
+</method>
<method name="transform"
return="void"
abstract="false"
@@ -213644,6 +218226,17 @@
visibility="public"
>
</field>
+<field name="ACTION_HOVER_MOVE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="ACTION_MASK"
type="int"
transient="false"
@@ -213809,6 +218402,17 @@
visibility="public"
>
</field>
+<field name="ACTION_SCROLL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="ACTION_UP"
type="int"
transient="false"
@@ -213820,6 +218424,446 @@
visibility="public"
>
</field>
+<field name="AXIS_BRAKE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="23"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GAS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="22"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_10"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="41"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_11"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="42"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_12"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="43"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_13"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="44"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_14"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="45"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_15"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="46"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_16"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_6"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="37"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_7"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="38"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_8"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="39"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_GENERIC_9"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="40"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_HAT_X"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="15"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_HAT_Y"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_HSCROLL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_LTRIGGER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="17"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_ORIENTATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_PRESSURE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_RTRIGGER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="18"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_RUDDER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="20"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_RX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_RY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="13"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_RZ"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="14"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_THROTTLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="19"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_TOOL_MAJOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_TOOL_MINOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_TOUCH_MAJOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_TOUCH_MINOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_VSCROLL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_WHEEL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="21"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_X"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_Y"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="AXIS_Z"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="11"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="CREATOR"
type="android.os.Parcelable.Creator"
transient="false"
@@ -213902,6 +218946,68 @@
visibility="public"
>
</constructor>
+<constructor name="MotionEvent.PointerCoords"
+ type="android.view.MotionEvent.PointerCoords"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="other" type="android.view.MotionEvent.PointerCoords">
+</parameter>
+</constructor>
+<method name="clear"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="copyFrom"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="other" type="android.view.MotionEvent.PointerCoords">
+</parameter>
+</method>
+<method name="getAxisValue"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="axis" type="int">
+</parameter>
+</method>
+<method name="setAxisValue"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="axis" type="int">
+</parameter>
+<parameter name="value" type="float">
+</parameter>
+</method>
<field name="orientation"
type="float"
transient="false"
@@ -215888,6 +220994,19 @@
<parameter name="focusableMode" type="int">
</parameter>
</method>
+<method name="addOnAttachStateChangeListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.view.View.OnAttachStateChangeListener">
+</parameter>
+</method>
<method name="addOnLayoutChangeListener"
return="void"
abstract="false"
@@ -215914,6 +221033,17 @@
<parameter name="views" type="java.util.ArrayList<android.view.View>">
</parameter>
</method>
+<method name="animate"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="awakenScrollBars"
return="boolean"
abstract="false"
@@ -215988,6 +221118,17 @@
<parameter name="autoScale" type="boolean">
</parameter>
</method>
+<method name="buildLayer"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="cancelLongPress"
return="void"
abstract="false"
@@ -216202,6 +221343,19 @@
<parameter name="canvas" type="android.graphics.Canvas">
</parameter>
</method>
+<method name="dispatchGenericMotionEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="dispatchKeyEvent"
return="boolean"
abstract="false"
@@ -218357,6 +223511,19 @@
<parameter name="previouslyFocusedRect" type="android.graphics.Rect">
</parameter>
</method>
+<method name="onGenericMotionEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="onKeyDown"
return="boolean"
abstract="false"
@@ -218865,6 +224032,19 @@
<parameter name="action" type="java.lang.Runnable">
</parameter>
</method>
+<method name="removeOnAttachStateChangeListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.view.View.OnAttachStateChangeListener">
+</parameter>
+</method>
<method name="removeOnLayoutChangeListener"
return="void"
abstract="false"
@@ -219189,6 +224369,19 @@
<parameter name="bottom" type="int">
</parameter>
</method>
+<method name="setCameraDistance"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="distance" type="float">
+</parameter>
+</method>
<method name="setClickable"
return="void"
abstract="false"
@@ -219609,6 +224802,19 @@
<parameter name="l" type="android.view.View.OnFocusChangeListener">
</parameter>
</method>
+<method name="setOnGenericMotionListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="l" type="android.view.View.OnGenericMotionListener">
+</parameter>
+</method>
<method name="setOnKeyListener"
return="void"
abstract="false"
@@ -221186,6 +226392,40 @@
>
</field>
</class>
+<interface name="View.OnAttachStateChangeListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onViewAttachedToWindow"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="v" type="android.view.View">
+</parameter>
+</method>
+<method name="onViewDetachedFromWindow"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="v" type="android.view.View">
+</parameter>
+</method>
+</interface>
<interface name="View.OnClickListener"
abstract="true"
static="true"
@@ -221278,6 +226518,29 @@
</parameter>
</method>
</interface>
+<interface name="View.OnGenericMotionListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onGenericMotion"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="v" type="android.view.View">
+</parameter>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
+</interface>
<interface name="View.OnKeyListener"
abstract="true"
static="true"
@@ -221489,6 +226752,28 @@
visibility="public"
>
</method>
+<method name="getKeyRepeatDelay"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getKeyRepeatTimeout"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getLongPressTimeout"
return="int"
abstract="false"
@@ -224079,6 +229364,314 @@
</parameter>
</method>
</interface>
+<class name="ViewPropertyAnimator"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="alpha"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="alphaBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="rotation"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="rotationBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="rotationX"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="rotationXBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="rotationY"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="rotationYBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="scaleX"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="scaleXBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="scaleY"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="scaleYBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="setDuration"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="duration" type="long">
+</parameter>
+</method>
+<method name="setInterpolator"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="interpolator" type="android.animation.TimeInterpolator">
+</parameter>
+</method>
+<method name="setListener"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.animation.Animator.AnimatorListener">
+</parameter>
+</method>
+<method name="translationX"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="translationXBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="translationY"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="translationYBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="x"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="xBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="y"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+<method name="yBy"
+ return="android.view.ViewPropertyAnimator"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+</method>
+</class>
<class name="ViewStub"
extends="android.view.View"
abstract="false"
@@ -225371,6 +230964,19 @@
<parameter name="hardwareAccelerated" type="boolean">
</parameter>
</method>
+<method name="superDispatchGenericMotionEvent"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="superDispatchKeyEvent"
return="boolean"
abstract="true"
@@ -225716,6 +231322,19 @@
deprecated="not deprecated"
visibility="public"
>
+<method name="dispatchGenericMotionEvent"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
<method name="dispatchKeyEvent"
return="boolean"
abstract="true"
@@ -228295,6 +233914,17 @@
visibility="protected"
>
</method>
+<method name="getBackgroundColor"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getDetachWallpaper"
return="boolean"
abstract="false"
@@ -228580,6 +234210,19 @@
<parameter name="listener" type="android.view.animation.Animation.AnimationListener">
</parameter>
</method>
+<method name="setBackgroundColor"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="bg" type="int">
+</parameter>
+</method>
<method name="setDetachWallpaper"
return="void"
abstract="false"
@@ -233738,6 +239381,19 @@
>
<implements name="android.os.Parcelable">
</implements>
+<method name="containsExtraValueKey"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="java.lang.String">
+</parameter>
+</method>
<method name="describeContents"
return="int"
abstract="false"
@@ -233760,6 +239416,19 @@
visibility="public"
>
</method>
+<method name="getExtraValueOf"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="java.lang.String">
+</parameter>
+</method>
<method name="getIconResId"
return="int"
abstract="false"
@@ -234231,6 +239900,17 @@
visibility="public"
>
</method>
+<method name="allowFileSchemeCookies"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getCookie"
return="java.lang.String"
abstract="false"
@@ -234312,6 +239992,19 @@
<parameter name="accept" type="boolean">
</parameter>
</method>
+<method name="setAcceptFileSchemeCookies"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="accept" type="boolean">
+</parameter>
+</method>
<method name="setCookie"
return="void"
abstract="false"
@@ -237982,7 +243675,7 @@
synchronized="false"
static="false"
final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
visibility="public"
>
</method>
@@ -238996,6 +244689,25 @@
<parameter name="realm" type="java.lang.String">
</parameter>
</method>
+<method name="onReceivedLoginRequest"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="view" type="android.webkit.WebView">
+</parameter>
+<parameter name="realm" type="java.lang.String">
+</parameter>
+<parameter name="account" type="java.lang.String">
+</parameter>
+<parameter name="args" type="java.lang.String">
+</parameter>
+</method>
<method name="onReceivedSslError"
return="void"
abstract="false"
@@ -245009,6 +250721,17 @@
<parameter name="defStyle" type="int">
</parameter>
</constructor>
+<method name="getCalendarView"
+ return="android.widget.CalendarView"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getCalendarViewShown"
return="boolean"
abstract="false"
@@ -253384,6 +259107,21 @@
<parameter name="started" type="boolean">
</parameter>
</method>
+<method name="setDisplayedChild"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="viewId" type="int">
+</parameter>
+<parameter name="childIndex" type="int">
+</parameter>
+</method>
<method name="setDouble"
return="void"
abstract="false"
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index fc07478..80bed0d 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -1442,7 +1442,7 @@
* {@link Intent#resolveActivity} finds an activity if a class has not
* been explicitly specified.
*
- * <p><em>Note: if using an implicit Intent (without an explicit ComponentName
+ * <p><em>Note:</em> if using an implicit Intent (without an explicit ComponentName
* specified), be sure to consider whether to set the {@link #MATCH_DEFAULT_ONLY}
* only flag. You need to do so to resolve the activity in the same way
* that {@link android.content.Context#startActivity(Intent)} and
diff --git a/core/java/android/webkit/HTML5VideoFullScreen.java b/core/java/android/webkit/HTML5VideoFullScreen.java
index f52fa66..0510f8b 100644
--- a/core/java/android/webkit/HTML5VideoFullScreen.java
+++ b/core/java/android/webkit/HTML5VideoFullScreen.java
@@ -114,6 +114,13 @@
return mVideoSurfaceView;
}
+ @Override
+ public void start() {
+ if (getAutostart()) {
+ super.start();
+ }
+ }
+
HTML5VideoFullScreen(Context context, int videoLayerId, int position,
boolean autoStart) {
mVideoSurfaceView = new VideoSurfaceView(context);
diff --git a/core/java/android/webkit/HTML5VideoInline.java b/core/java/android/webkit/HTML5VideoInline.java
index 4f042a6..25921bc 100644
--- a/core/java/android/webkit/HTML5VideoInline.java
+++ b/core/java/android/webkit/HTML5VideoInline.java
@@ -20,7 +20,9 @@
// Video control FUNCTIONS:
@Override
public void start() {
- super.start();
+ if (!getPauseDuringPreparing()) {
+ super.start();
+ }
}
HTML5VideoInline(int videoLayerId, int position,
diff --git a/core/java/android/webkit/HTML5VideoView.java b/core/java/android/webkit/HTML5VideoView.java
index cd2264c..8ea73b5 100644
--- a/core/java/android/webkit/HTML5VideoView.java
+++ b/core/java/android/webkit/HTML5VideoView.java
@@ -65,6 +65,7 @@
// The spec says the timer should fire every 250 ms or less.
private static final int TIMEUPDATE_PERIOD = 250; // ms
+ protected boolean mPauseDuringPreparing;
// common Video control FUNCTIONS:
public void start() {
if (mCurrentState == STATE_PREPARED) {
@@ -83,8 +84,9 @@
public void pause() {
if (mCurrentState == STATE_PREPARED && mPlayer.isPlaying()) {
mPlayer.pause();
+ } else if (mCurrentState == STATE_NOTPREPARED) {
+ mPauseDuringPreparing = true;
}
-
// Delete the Timer to stop it since there is no stop call.
if (mTimer != null) {
mTimer.purge();
@@ -133,6 +135,10 @@
return mAutostart;
}
+ public boolean getPauseDuringPreparing() {
+ return mPauseDuringPreparing;
+ }
+
// Every time we start a new Video, we create a VideoView and a MediaPlayer
public void init(int videoLayerId, int position, boolean autoStart) {
mPlayer = new MediaPlayer();
@@ -142,6 +148,7 @@
mSaveSeekTime = position;
mAutostart = autoStart;
mTimer = null;
+ mPauseDuringPreparing = false;
}
protected HTML5VideoView() {
@@ -242,15 +249,17 @@
if (mProxy != null) {
mProxy.onPrepared(mp);
}
+ if (mPauseDuringPreparing) {
+ pauseAndDispatch(mProxy);
+ mPauseDuringPreparing = false;
+ }
}
// Pause the play and update the play/pause button
public void pauseAndDispatch(HTML5VideoViewProxy proxy) {
- if (isPlaying()) {
- pause();
- if (proxy != null) {
- proxy.dispatchOnPaused();
- }
+ pause();
+ if (proxy != null) {
+ proxy.dispatchOnPaused();
}
}
diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java
index d12b965..094566f 100644
--- a/core/java/android/webkit/HTML5VideoViewProxy.java
+++ b/core/java/android/webkit/HTML5VideoViewProxy.java
@@ -224,10 +224,8 @@
}
public static void onPrepared() {
- if (!mHTML5VideoView.isFullScreenMode() ||
- mHTML5VideoView.isFullScreenMode() &&
- mHTML5VideoView.getAutostart() )
- mHTML5VideoView.start();
+ // The VideoView will decide whether to really kick off to play.
+ mHTML5VideoView.start();
if (mBaseLayer != 0) {
setBaseLayer(mBaseLayer);
}
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 25e66b4..d8c64f0 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -987,7 +987,7 @@
<item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> od <xliff:g id="TOTAL">%d</xliff:g>"</item>
</plurals>
<string name="action_mode_done" msgid="7217581640461922289">"Gotovo"</string>
- <string name="progress_unmounting" product="nosdcard" msgid="535863554318797377">"Isključivanje memorije USB..."</string>
+ <string name="progress_unmounting" product="nosdcard" msgid="535863554318797377">"Isključivanje USB memorije..."</string>
<string name="progress_unmounting" product="default" msgid="5556813978958789471">"Isključivanje SD kartice..."</string>
<string name="progress_erasing" product="nosdcard" msgid="4183664626203056915">"Brisanje memorije USB..."</string>
<string name="progress_erasing" product="default" msgid="2115214724367534095">"Brisanje SD kartice..."</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 10a2898..1c4ff09 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -825,7 +825,7 @@
<string name="anr_application_process" msgid="4185842666452210193">"Приложение <xliff:g id="APPLICATION">%1$s</xliff:g> (в процессе <xliff:g id="PROCESS">%2$s</xliff:g>) не отвечает."</string>
<string name="anr_process" msgid="1246866008169975783">"Процесс <xliff:g id="PROCESS">%1$s</xliff:g> не отвечает."</string>
<string name="force_close" msgid="3653416315450806396">"Закрыть"</string>
- <string name="report" msgid="4060218260984795706">"Отчет"</string>
+ <string name="report" msgid="4060218260984795706">"Отзыв"</string>
<string name="wait" msgid="7147118217226317732">"Подождать"</string>
<string name="launch_warning_title" msgid="8323761616052121936">"Приложение перенаправлено"</string>
<string name="launch_warning_replace" msgid="6202498949970281412">"Приложение <xliff:g id="APP_NAME">%1$s</xliff:g> выполняется."</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 58b681e..ad4eee7 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -896,7 +896,7 @@
<string name="dlg_confirm_kill_storage_users_text" msgid="3202838234780505886">"USB depolama birimini açarsanız, kullanmakta olduğunuz bazı uygulamalar durur ve USB depolama birimi kapatılıncaya kadar kullanılamayabilir."</string>
<string name="dlg_error_title" msgid="8048999973837339174">"USB işlemi başarısız oldu"</string>
<string name="dlg_ok" msgid="7376953167039865701">"Tamam"</string>
- <string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USB dep br biçimlndr"</string>
+ <string name="extmedia_format_title" product="nosdcard" msgid="7980995592595097841">"USB\'yi biçimlendir"</string>
<string name="extmedia_format_title" product="default" msgid="8663247929551095854">"SD kartı biçimlendir"</string>
<string name="extmedia_format_message" product="nosdcard" msgid="8296908079722897772">"USB depolama birimi biçimlendirilsin mi? Depolama biriminde saklanan tüm dosyalar silinir. İşlem geri alınamaz!"</string>
<string name="extmedia_format_message" product="default" msgid="3621369962433523619">"SD kartı biçimlendirmek istediğinizden emin misiniz? Kartınızdaki tüm veriler yok olacak."</string>
diff --git a/core/tests/coretests/src/android/bluetooth/BluetoothStressTest.java b/core/tests/coretests/src/android/bluetooth/BluetoothStressTest.java
index 5dedd4a..7f13791 100644
--- a/core/tests/coretests/src/android/bluetooth/BluetoothStressTest.java
+++ b/core/tests/coretests/src/android/bluetooth/BluetoothStressTest.java
@@ -60,6 +60,7 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ mTestUtils.disable(adapter);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("enable iteration " + (i + 1) + " of " + iterations);
@@ -78,7 +79,9 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
+ mTestUtils.undiscoverable(adapter);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("discoverable iteration " + (i + 1) + " of " + iterations);
@@ -99,7 +102,9 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
+ mTestUtils.stopScan(adapter);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("scan iteration " + (i + 1) + " of " + iterations);
@@ -116,7 +121,9 @@
public void testEnablePan() {
int iterations = BluetoothTestRunner.sEnablePanIterations;
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
+ mTestUtils.disablePan(adapter);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("testEnablePan iteration " + (i + 1) + " of "
@@ -141,13 +148,15 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sPairAddress);
+ BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
+ mTestUtils.unpair(adapter, device);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("pair iteration " + (i + 1) + " of " + iterations);
- mTestUtils.pair(adapter, device, BluetoothTestRunner.sPairPasskey,
- BluetoothTestRunner.sPairPin);
+ mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
+ BluetoothTestRunner.sDevicePairPin);
mTestUtils.unpair(adapter, device);
}
mTestUtils.disable(adapter);
@@ -162,13 +171,15 @@
public void testAcceptPair() {
int iterations = BluetoothTestRunner.sPairIterations;
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sPairAddress);
+ BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
+ mTestUtils.unpair(adapter, device);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("acceptPair iteration " + (i + 1) + " of " + iterations);
- mTestUtils.acceptPair(adapter, device, BluetoothTestRunner.sPairPasskey,
- BluetoothTestRunner.sPairPin);
+ mTestUtils.acceptPair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
+ BluetoothTestRunner.sDevicePairPin);
mTestUtils.unpair(adapter, device);
}
mTestUtils.disable(adapter);
@@ -187,15 +198,20 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sA2dpAddress);
+ BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
- mTestUtils.pair(adapter, device, BluetoothTestRunner.sPairPasskey,
- BluetoothTestRunner.sPairPin);
+ mTestUtils.unpair(adapter, device);
+ mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
+ BluetoothTestRunner.sDevicePairPin);
+ mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.A2DP, null);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("connectA2dp iteration " + (i + 1) + " of " + iterations);
- mTestUtils.connectProfile(adapter, device, BluetoothProfile.A2DP);
- mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.A2DP);
+ mTestUtils.connectProfile(adapter, device, BluetoothProfile.A2DP,
+ String.format("connectA2dp(device=%s)", device));
+ mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.A2DP,
+ String.format("disconnectA2dp(device=%s)", device));
}
mTestUtils.unpair(adapter, device);
@@ -215,15 +231,20 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sHeadsetAddress);
+ BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
- mTestUtils.pair(adapter, device, BluetoothTestRunner.sPairPasskey,
- BluetoothTestRunner.sPairPin);
+ mTestUtils.unpair(adapter, device);
+ mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
+ BluetoothTestRunner.sDevicePairPin);
+ mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET, null);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("connectHeadset iteration " + (i + 1) + " of " + iterations);
- mTestUtils.connectProfile(adapter, device, BluetoothProfile.HEADSET);
- mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET);
+ mTestUtils.connectProfile(adapter, device, BluetoothProfile.HEADSET,
+ String.format("connectHeadset(device=%s)", device));
+ mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET,
+ String.format("disconnectHeadset(device=%s)", device));
}
mTestUtils.unpair(adapter, device);
@@ -243,15 +264,20 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sInputAddress);
+ BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
- mTestUtils.pair(adapter, device, BluetoothTestRunner.sPairPasskey,
- BluetoothTestRunner.sPairPin);
+ mTestUtils.unpair(adapter, device);
+ mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
+ BluetoothTestRunner.sDevicePairPin);
+ mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.INPUT_DEVICE, null);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("connectInput iteration " + (i + 1) + " of " + iterations);
- mTestUtils.connectProfile(adapter, device, BluetoothProfile.INPUT_DEVICE);
- mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.INPUT_DEVICE);
+ mTestUtils.connectProfile(adapter, device, BluetoothProfile.INPUT_DEVICE,
+ String.format("connectInput(device=%s)", device));
+ mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.INPUT_DEVICE,
+ String.format("disconnectInput(device=%s)", device));
}
mTestUtils.unpair(adapter, device);
@@ -271,10 +297,12 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sPanAddress);
+ BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
- mTestUtils.pair(adapter, device, BluetoothTestRunner.sPairPasskey,
- BluetoothTestRunner.sPairPin);
+ mTestUtils.unpair(adapter, device);
+ mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
+ BluetoothTestRunner.sDevicePairPin);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("connectPan iteration " + (i + 1) + " of " + iterations);
@@ -299,11 +327,14 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sPanAddress);
+ BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
+ mTestUtils.disablePan(adapter);
mTestUtils.enablePan(adapter);
- mTestUtils.acceptPair(adapter, device, BluetoothTestRunner.sPairPasskey,
- BluetoothTestRunner.sPairPin);
+ mTestUtils.unpair(adapter, device);
+ mTestUtils.acceptPair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
+ BluetoothTestRunner.sDevicePairPin);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("incomingPanConnection iteration " + (i + 1) + " of "
@@ -330,11 +361,15 @@
}
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sHeadsetAddress);
+ BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
+ mTestUtils.disable(adapter);
mTestUtils.enable(adapter);
- mTestUtils.pair(adapter, device, BluetoothTestRunner.sPairPasskey,
- BluetoothTestRunner.sPairPin);
- mTestUtils.connectProfile(adapter, device, BluetoothProfile.HEADSET);
+ mTestUtils.unpair(adapter, device);
+ mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
+ BluetoothTestRunner.sDevicePairPin);
+ mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET, null);
+ mTestUtils.connectProfile(adapter, device, BluetoothProfile.HEADSET, null);
+ mTestUtils.stopSco(adapter, device);
for (int i = 0; i < iterations; i++) {
mTestUtils.writeOutput("startStopSco iteration " + (i + 1) + " of " + iterations);
@@ -342,7 +377,7 @@
mTestUtils.stopSco(adapter, device);
}
- mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET);
+ mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET, null);
mTestUtils.unpair(adapter, device);
mTestUtils.disable(adapter);
}
diff --git a/core/tests/coretests/src/android/bluetooth/BluetoothTestRunner.java b/core/tests/coretests/src/android/bluetooth/BluetoothTestRunner.java
index 1febc5c..64d2c12 100644
--- a/core/tests/coretests/src/android/bluetooth/BluetoothTestRunner.java
+++ b/core/tests/coretests/src/android/bluetooth/BluetoothTestRunner.java
@@ -65,14 +65,9 @@
public static int sConnectPanIterations = 100;
public static int sStartStopScoIterations = 100;
- public static String sPairAddress = "";
- public static String sHeadsetAddress = "";
- public static String sA2dpAddress = "";
- public static String sInputAddress = "";
- public static String sPanAddress = "";
-
- public static byte[] sPairPin = {'1', '2', '3', '4'};
- public static int sPairPasskey = 123456;
+ public static String sDeviceAddress = "";
+ public static byte[] sDevicePairPin = {'1', '2', '3', '4'};
+ public static int sDevicePairPasskey = 123456;
@Override
public TestSuite getAllTests() {
@@ -177,40 +172,24 @@
// Invalid argument, fall back to default value
}
}
- val = arguments.getString("pair_address");
+
+ val = arguments.getString("device_address");
if (val != null) {
- sPairAddress = val;
+ sDeviceAddress = val;
}
- val = arguments.getString("headset_address");
+ val = arguments.getString("device_pair_pin");
if (val != null) {
- sHeadsetAddress = val;
+ byte[] pin = BluetoothDevice.convertPinToBytes(val);
+ if (pin != null) {
+ sDevicePairPin = pin;
+ }
}
- val = arguments.getString("a2dp_address");
- if (val != null) {
- sA2dpAddress = val;
- }
-
- val = arguments.getString("input_address");
- if (val != null) {
- sInputAddress = val;
- }
-
- val = arguments.getString("pan_address");
- if (val != null) {
- sPanAddress = val;
- }
-
- val = arguments.getString("pair_pin");
- if (val != null) {
- sPairPin = BluetoothDevice.convertPinToBytes(val);
- }
-
- val = arguments.getString("pair_passkey");
+ val = arguments.getString("device_pair_passkey");
if (val != null) {
try {
- sPairPasskey = Integer.parseInt(val);
+ sDevicePairPasskey = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
@@ -225,13 +204,9 @@
Log.i(TAG, String.format("connect_input_iterations=%d", sConnectInputIterations));
Log.i(TAG, String.format("connect_pan_iterations=%d", sConnectPanIterations));
Log.i(TAG, String.format("start_stop_sco_iterations=%d", sStartStopScoIterations));
- Log.i(TAG, String.format("pair_address=%s", sPairAddress));
- Log.i(TAG, String.format("a2dp_address=%s", sA2dpAddress));
- Log.i(TAG, String.format("headset_address=%s", sHeadsetAddress));
- Log.i(TAG, String.format("input_address=%s", sInputAddress));
- Log.i(TAG, String.format("pan_address=%s", sPanAddress));
- Log.i(TAG, String.format("pair_pin=%s", new String(sPairPin)));
- Log.i(TAG, String.format("pair_passkey=%d", sPairPasskey));
+ Log.i(TAG, String.format("device_address=%s", sDeviceAddress));
+ Log.i(TAG, String.format("device_pair_pin=%s", new String(sDevicePairPin)));
+ Log.i(TAG, String.format("device_pair_passkey=%d", sDevicePairPasskey));
// Call onCreate last since we want to set the static variables first.
super.onCreate(arguments);
diff --git a/core/tests/coretests/src/android/bluetooth/BluetoothTestUtils.java b/core/tests/coretests/src/android/bluetooth/BluetoothTestUtils.java
index 1741119..f1dd8fe 100644
--- a/core/tests/coretests/src/android/bluetooth/BluetoothTestUtils.java
+++ b/core/tests/coretests/src/android/bluetooth/BluetoothTestUtils.java
@@ -37,44 +37,21 @@
public class BluetoothTestUtils extends Assert {
- /**
- * Timeout for enable/disable in ms.
- */
+ /** Timeout for enable/disable in ms. */
private static final int ENABLE_DISABLE_TIMEOUT = 20000;
-
- /**
- * Timeout for discoverable/undiscoverable in ms.
- */
+ /** Timeout for discoverable/undiscoverable in ms. */
private static final int DISCOVERABLE_UNDISCOVERABLE_TIMEOUT = 5000;
-
- /**
- * Timeout for starting/stopping a scan in ms.
- */
+ /** Timeout for starting/stopping a scan in ms. */
private static final int START_STOP_SCAN_TIMEOUT = 5000;
-
- /**
- * Timeout for pair/unpair in ms.
- */
+ /** Timeout for pair/unpair in ms. */
private static final int PAIR_UNPAIR_TIMEOUT = 20000;
-
- /**
- * Timeout for connecting/disconnecting a profile in ms.
- */
+ /** Timeout for connecting/disconnecting a profile in ms. */
private static final int CONNECT_DISCONNECT_PROFILE_TIMEOUT = 20000;
-
- /**
- * Timeout to connect a profile proxy in ms.
- */
- private static final int CONNECT_PROXY_TIMEOUT = 5000;
-
- /**
- * Timeout to start or stop a SCO channel in ms.
- */
+ /** Timeout to start or stop a SCO channel in ms. */
private static final int START_STOP_SCO_TIMEOUT = 10000;
-
- /**
- * Time between polls in ms.
- */
+ /** Timeout to connect a profile proxy in ms. */
+ private static final int CONNECT_PROXY_TIMEOUT = 5000;
+ /** Time between polls in ms. */
private static final int POLL_TIME = 100;
private abstract class FlagReceiver extends BroadcastReceiver {
@@ -249,6 +226,9 @@
case BluetoothProfile.INPUT_DEVICE:
mConnectionAction = BluetoothInputDevice.ACTION_CONNECTION_STATE_CHANGED;
break;
+ case BluetoothProfile.PAN:
+ mConnectionAction = BluetoothPan.ACTION_CONNECTION_STATE_CHANGED;
+ break;
default:
mConnectionAction = null;
}
@@ -281,47 +261,22 @@
}
}
- private class ConnectPanReceiver extends FlagReceiver {
- private static final int STATE_DISCONNECTED_FLAG = 1;
- private static final int STATE_CONNECTING_FLAG = 1 << 1;
- private static final int STATE_CONNECTED_FLAG = 1 << 2;
- private static final int STATE_DISCONNECTING_FLAG = 1 << 3;
-
- private BluetoothDevice mDevice;
+ private class ConnectPanReceiver extends ConnectProfileReceiver {
private int mRole;
public ConnectPanReceiver(BluetoothDevice device, int role, int expectedFlags) {
- super (expectedFlags);
+ super(device, BluetoothProfile.PAN, expectedFlags);
- mDevice = device;
mRole = role;
}
@Override
public void onReceive(Context context, Intent intent) {
- if (!mDevice.equals(intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE))
- || mRole != intent.getIntExtra(BluetoothPan.EXTRA_LOCAL_ROLE, -1)) {
+ if (mRole != intent.getIntExtra(BluetoothPan.EXTRA_LOCAL_ROLE, -1)) {
return;
}
- if (BluetoothPan.ACTION_CONNECTION_STATE_CHANGED.equals(intent.getAction())) {
- int state = intent.getIntExtra(BluetoothPan.EXTRA_STATE, -1);
- assertNotSame(-1, state);
- switch (state) {
- case BluetoothPan.STATE_DISCONNECTED:
- setFiredFlag(STATE_DISCONNECTED_FLAG);
- break;
- case BluetoothPan.STATE_CONNECTING:
- setFiredFlag(STATE_CONNECTING_FLAG);
- break;
- case BluetoothPan.STATE_CONNECTED:
- setFiredFlag(STATE_CONNECTED_FLAG);
- break;
- case BluetoothPan.STATE_DISCONNECTING:
- setFiredFlag(STATE_DISCONNECTING_FLAG);
- break;
- }
- }
+ super.onReceive(context, intent);
}
}
@@ -353,6 +308,7 @@
private BluetoothProfile.ServiceListener mServiceListener =
new BluetoothProfile.ServiceListener() {
+ @Override
public void onServiceConnected(int profile, BluetoothProfile proxy) {
synchronized (this) {
switch (profile) {
@@ -372,6 +328,7 @@
}
}
+ @Override
public void onServiceDisconnected(int profile) {
synchronized (this) {
switch (profile) {
@@ -399,10 +356,10 @@
private String mOutputFile;
private Context mContext;
- private BluetoothA2dp mA2dp;
- private BluetoothHeadset mHeadset;
- private BluetoothInputDevice mInput;
- private BluetoothPan mPan;
+ private BluetoothA2dp mA2dp = null;
+ private BluetoothHeadset mHeadset = null;
+ private BluetoothInputDevice mInput = null;
+ private BluetoothPan mPan = null;
/**
* Creates a utility instance for testing Bluetooth.
@@ -818,10 +775,15 @@
byte[] pin, boolean shouldPair) {
int mask = PairReceiver.STATE_BONDING_FLAG | PairReceiver.STATE_BONDED_FLAG;
long start = -1;
- String methodName = shouldPair ? "pair()" : "acceptPair()";
+ String methodName;
+ if (shouldPair) {
+ methodName = String.format("pair(device=%s)", device);
+ } else {
+ methodName = String.format("acceptPair(device=%s)", device);
+ }
if (!adapter.isEnabled()) {
- fail(methodName + " bluetooth not enabled");
+ fail(String.format("%s bluetooth not enabled", methodName));
}
PairReceiver receiver = getPairReceiver(device, passkey, pin, mask);
@@ -843,8 +805,7 @@
return;
default:
removeReceiver(receiver);
- fail(String.format("%s invalid state: device=%s, state=%d", methodName, device,
- state));
+ fail(String.format("%s invalid state: state=%d", methodName, state));
}
long s = System.currentTimeMillis();
@@ -854,10 +815,10 @@
assertTrue(adapter.getBondedDevices().contains(device));
long finish = receiver.getCompletedTime();
if (start != -1 && finish != -1) {
- writeOutput(String.format("%s completed in %d ms: device=%s", methodName,
- (finish - start), device));
+ writeOutput(String.format("%s completed in %d ms", methodName,
+ (finish - start)));
} else {
- writeOutput(String.format("%s completed: device=%s", methodName, device));
+ writeOutput(String.format("%s completed", methodName));
}
removeReceiver(receiver);
return;
@@ -867,9 +828,8 @@
int firedFlags = receiver.getFiredFlags();
removeReceiver(receiver);
- fail(String.format("%s timeout: device=%s, state=%d (expected %d), "
- + "flags=0x%x (expected 0x%x)", methodName, device, state,
- BluetoothDevice.BOND_BONDED, firedFlags, mask));
+ fail(String.format("%s timeout: state=%d (expected %d), flags=0x%x (expected 0x%x)",
+ methodName, state, BluetoothDevice.BOND_BONDED, firedFlags, mask));
}
/**
@@ -882,9 +842,10 @@
public void unpair(BluetoothAdapter adapter, BluetoothDevice device) {
int mask = PairReceiver.STATE_NONE_FLAG;
long start = -1;
+ String methodName = String.format("unpair(device=%s)", device);
if (!adapter.isEnabled()) {
- fail("unpair() bluetooth not enabled");
+ fail(String.format("%s bluetooth not enabled", methodName));
}
PairReceiver receiver = getPairReceiver(device, 0, null, mask);
@@ -906,7 +867,7 @@
break;
default:
removeReceiver(receiver);
- fail(String.format("unpair() invalid state: device=%s, state=%d", device, state));
+ fail(String.format("%s invalid state: state=%d", methodName, state));
}
long s = System.currentTimeMillis();
@@ -916,10 +877,10 @@
assertFalse(adapter.getBondedDevices().contains(device));
long finish = receiver.getCompletedTime();
if (start != -1 && finish != -1) {
- writeOutput(String.format("unpair() completed in %d ms: device=%s",
- (finish - start), device));
+ writeOutput(String.format("%s completed in %d ms", methodName,
+ (finish - start)));
} else {
- writeOutput(String.format("unpair() completed: device=%s", device));
+ writeOutput(String.format("%s completed", methodName));
}
removeReceiver(receiver);
return;
@@ -928,9 +889,8 @@
int firedFlags = receiver.getFiredFlags();
removeReceiver(receiver);
- fail(String.format("unpair() timeout: device=%s, state=%d (expected %d), "
- + "flags=0x%x (expected 0x%x)", device, state, BluetoothDevice.BOND_BONDED,
- firedFlags, mask));
+ fail(String.format("%s timeout: state=%d (expected %d), flags=0x%x (expected 0x%x)",
+ methodName, state, BluetoothDevice.BOND_BONDED, firedFlags, mask));
}
/**
@@ -939,29 +899,30 @@
*
* @param adapter The BT adapter.
* @param device The remote device.
- * @param profile The profile to connect. One of {@link BluetoothProfile#A2DP} or
- * {@link BluetoothProfile#HEADSET}.
+ * @param profile The profile to connect. One of {@link BluetoothProfile#A2DP},
+ * {@link BluetoothProfile#HEADSET}, or {@link BluetoothProfile#INPUT_DEVICE}.
+ * @param methodName The method name to printed in the logs. If null, will be
+ * "connectProfile(profile=<profile>, device=<device>)"
*/
- public void connectProfile(BluetoothAdapter adapter, BluetoothDevice device, int profile) {
+ public void connectProfile(BluetoothAdapter adapter, BluetoothDevice device, int profile,
+ String methodName) {
+ if (methodName == null) {
+ methodName = String.format("connectProfile(profile=%d, device=%s)", profile, device);
+ }
int mask = (ConnectProfileReceiver.STATE_CONNECTING_FLAG
| ConnectProfileReceiver.STATE_CONNECTED_FLAG);
long start = -1;
if (!adapter.isEnabled()) {
- fail(String.format("connectProfile() bluetooth not enabled: device=%s, profile=%d",
- device, profile));
+ fail(String.format("%s bluetooth not enabled", methodName));
}
if (!adapter.getBondedDevices().contains(device)) {
- fail(String.format("connectProfile() device not paired: device=%s, profile=%d",
- device, profile));
+ fail(String.format("%s device not paired", methodName));
}
BluetoothProfile proxy = connectProxy(adapter, profile);
- if (proxy == null) {
- fail(String.format("connectProfile() unknown profile: device=%s, profile=%d",
- device, profile));
- }
+ assertNotNull(proxy);
ConnectProfileReceiver receiver = getConnectProfileReceiver(device, profile, mask);
@@ -980,8 +941,7 @@
break;
default:
removeReceiver(receiver);
- fail(String.format("connectProfile() invalid state: device=%s, profile=%d, "
- + "state=%d", device, profile, state));
+ fail(String.format("%s invalid state: state=%d", methodName, state));
}
long s = System.currentTimeMillis();
@@ -991,11 +951,10 @@
&& (receiver.getFiredFlags() & mask) == mask) {
long finish = receiver.getCompletedTime();
if (start != -1 && finish != -1) {
- writeOutput(String.format("connectProfile() completed in %d ms: "
- + "device=%s, profile=%d", (finish - start), device, profile));
+ writeOutput(String.format("%s completed in %d ms", methodName,
+ (finish - start)));
} else {
- writeOutput(String.format("connectProfile() completed: device=%s, "
- + "profile=%d", device, profile));
+ writeOutput(String.format("%s completed", methodName));
}
removeReceiver(receiver);
return;
@@ -1005,9 +964,8 @@
int firedFlags = receiver.getFiredFlags();
removeReceiver(receiver);
- fail(String.format("connectProfile() timeout: device=%s, profile=%s, "
- + "state=%d (expected %d), flags=0x%x (expected 0x%x)", device, profile, state,
- BluetoothProfile.STATE_CONNECTED, firedFlags, mask));
+ fail(String.format("%s timeout: state=%d (expected %d), flags=0x%x (expected 0x%x)",
+ methodName, state, BluetoothProfile.STATE_CONNECTED, firedFlags, mask));
}
/**
@@ -1016,29 +974,30 @@
*
* @param adapter The BT adapter.
* @param device The remote device.
- * @param profile The profile to disconnect. One of {@link BluetoothProfile#A2DP} or
- * {@link BluetoothProfile#HEADSET}.
+ * @param profile The profile to disconnect. One of {@link BluetoothProfile#A2DP},
+ * {@link BluetoothProfile#HEADSET}, or {@link BluetoothProfile#INPUT_DEVICE}.
+ * @param methodName The method name to printed in the logs. If null, will be
+ * "connectProfile(profile=<profile>, device=<device>)"
*/
- public void disconnectProfile(BluetoothAdapter adapter, BluetoothDevice device, int profile) {
+ public void disconnectProfile(BluetoothAdapter adapter, BluetoothDevice device, int profile,
+ String methodName) {
+ if (methodName == null) {
+ methodName = String.format("disconnectProfile(profile=%d, device=%s)", profile, device);
+ }
int mask = (ConnectProfileReceiver.STATE_DISCONNECTING_FLAG
| ConnectProfileReceiver.STATE_DISCONNECTED_FLAG);
long start = -1;
if (!adapter.isEnabled()) {
- fail(String.format("disconnectProfile() bluetooth not enabled: device=%s, profile=%d",
- device, profile));
+ fail(String.format("%s bluetooth not enabled", methodName));
}
if (!adapter.getBondedDevices().contains(device)) {
- fail(String.format("disconnectProfile() device not paired: device=%s, profile=%d",
- device, profile));
+ fail(String.format("%s device not paired", methodName));
}
BluetoothProfile proxy = connectProxy(adapter, profile);
- if (proxy == null) {
- fail(String.format("disconnectProfile() unknown profile: device=%s, profile=%d",
- device, profile));
- }
+ assertNotNull(proxy);
ConnectProfileReceiver receiver = getConnectProfileReceiver(device, profile, mask);
@@ -1057,8 +1016,7 @@
break;
default:
removeReceiver(receiver);
- fail(String.format("disconnectProfile() invalid state: device=%s, profile=%d, "
- + "state=%d", device, profile, state));
+ fail(String.format("%s invalid state: state=%d", methodName, state));
}
long s = System.currentTimeMillis();
@@ -1068,11 +1026,10 @@
&& (receiver.getFiredFlags() & mask) == mask) {
long finish = receiver.getCompletedTime();
if (start != -1 && finish != -1) {
- writeOutput(String.format("disconnectProfile() completed in %d ms: "
- + "device=%s, profile=%d", (finish - start), device, profile));
+ writeOutput(String.format("%s completed in %d ms", methodName,
+ (finish - start)));
} else {
- writeOutput(String.format("disconnectProfile() completed: device=%s, "
- + "profile=%d", device, profile));
+ writeOutput(String.format("%s completed", methodName));
}
removeReceiver(receiver);
return;
@@ -1082,9 +1039,8 @@
int firedFlags = receiver.getFiredFlags();
removeReceiver(receiver);
- fail(String.format("disconnectProfile() timeout: device=%s, profile=%s, "
- + "state=%d (expected %d), flags=0x%x (expected 0x%x)", device, profile, state,
- BluetoothProfile.STATE_DISCONNECTED, firedFlags, mask));
+ fail(String.format("%s timeout: state=%d (expected %d), flags=0x%x (expected 0x%x)",
+ methodName, state, BluetoothProfile.STATE_DISCONNECTED, firedFlags, mask));
}
/**
@@ -1125,25 +1081,25 @@
String methodName;
if (connect) {
- methodName = "connectPan()";
- mask = (ConnectPanReceiver.STATE_CONNECTED_FLAG |
- ConnectPanReceiver.STATE_CONNECTING_FLAG);
+ methodName = String.format("connectPan(device=%s)", device);
+ mask = (ConnectProfileReceiver.STATE_CONNECTED_FLAG |
+ ConnectProfileReceiver.STATE_CONNECTING_FLAG);
role = BluetoothPan.LOCAL_PANU_ROLE;
} else {
- methodName = "incomingPanConnection()";
- mask = ConnectPanReceiver.STATE_CONNECTED_FLAG;
+ methodName = String.format("incomingPanConnection(device=%s)", device);
+ mask = ConnectProfileReceiver.STATE_CONNECTED_FLAG;
role = BluetoothPan.LOCAL_NAP_ROLE;
}
if (!adapter.isEnabled()) {
- fail(String.format("%s bluetooth not enabled: device=%s", methodName, device));
+ fail(String.format("%s bluetooth not enabled", methodName));
}
if (!adapter.getBondedDevices().contains(device)) {
- fail(String.format("%s device not paired: device=%s", methodName, device));
+ fail(String.format("%s device not paired", methodName));
}
- if (mPan == null) mPan = (BluetoothPan) connectProxy(adapter, BluetoothProfile.PAN);
+ mPan = (BluetoothPan) connectProxy(adapter, BluetoothProfile.PAN);
assertNotNull(mPan);
ConnectPanReceiver receiver = getConnectPanReceiver(device, role, mask);
@@ -1165,8 +1121,7 @@
break;
default:
removeReceiver(receiver);
- fail(String.format("%s invalid state: device=%s, state=%d", methodName, device,
- state));
+ fail(String.format("%s invalid state: state=%d", methodName, state));
}
long s = System.currentTimeMillis();
@@ -1176,10 +1131,10 @@
&& (receiver.getFiredFlags() & mask) == mask) {
long finish = receiver.getCompletedTime();
if (start != -1 && finish != -1) {
- writeOutput(String.format("%s completed in %d ms: device=%s", methodName,
- (finish - start), device));
+ writeOutput(String.format("%s completed in %d ms", methodName,
+ (finish - start)));
} else {
- writeOutput(String.format("%s completed: device=%s", methodName, device));
+ writeOutput(String.format("%s completed", methodName));
}
removeReceiver(receiver);
return;
@@ -1189,9 +1144,8 @@
int firedFlags = receiver.getFiredFlags();
removeReceiver(receiver);
- fail(String.format("%s timeout: device=%s, state=%d (expected %d), "
- + "flags=0x%x (expected 0x%s)", methodName, device, state,
- BluetoothPan.STATE_CONNECTED, firedFlags, mask));
+ fail(String.format("%s timeout: state=%d (expected %d), flags=0x%x (expected 0x%s)",
+ methodName, state, BluetoothPan.STATE_CONNECTED, firedFlags, mask));
}
/**
@@ -1232,25 +1186,25 @@
String methodName;
if (disconnect) {
- methodName = "disconnectPan()";
- mask = (ConnectPanReceiver.STATE_DISCONNECTED_FLAG |
- ConnectPanReceiver.STATE_DISCONNECTING_FLAG);
+ methodName = String.format("disconnectPan(device=%s)", device);
+ mask = (ConnectProfileReceiver.STATE_DISCONNECTED_FLAG |
+ ConnectProfileReceiver.STATE_DISCONNECTING_FLAG);
role = BluetoothPan.LOCAL_PANU_ROLE;
} else {
- methodName = "incomingPanDisconnection()";
- mask = ConnectPanReceiver.STATE_DISCONNECTED_FLAG;
+ methodName = String.format("incomingPanDisconnection(device=%s)", device);
+ mask = ConnectProfileReceiver.STATE_DISCONNECTED_FLAG;
role = BluetoothPan.LOCAL_NAP_ROLE;
}
if (!adapter.isEnabled()) {
- fail(String.format("%s bluetooth not enabled: device=%s", methodName, device));
+ fail(String.format("%s bluetooth not enabled", methodName));
}
if (!adapter.getBondedDevices().contains(device)) {
- fail(String.format("%s device not paired: device=%s", methodName, device));
+ fail(String.format("%s device not paired", methodName));
}
- if (mPan == null) mPan = (BluetoothPan) connectProxy(adapter, BluetoothProfile.PAN);
+ mPan = (BluetoothPan) connectProxy(adapter, BluetoothProfile.PAN);
assertNotNull(mPan);
ConnectPanReceiver receiver = getConnectPanReceiver(device, role, mask);
@@ -1271,8 +1225,7 @@
break;
default:
removeReceiver(receiver);
- fail(String.format("%s invalid state: device=%s, state=%d", methodName, device,
- state));
+ fail(String.format("%s invalid state: state=%d", methodName, state));
}
long s = System.currentTimeMillis();
@@ -1282,10 +1235,10 @@
&& (receiver.getFiredFlags() & mask) == mask) {
long finish = receiver.getCompletedTime();
if (start != -1 && finish != -1) {
- writeOutput(String.format("%s completed in %d ms: device=%s", methodName,
- (finish - start), device));
+ writeOutput(String.format("%s completed in %d ms", methodName,
+ (finish - start)));
} else {
- writeOutput(String.format("%s completed: device=%s", methodName, device));
+ writeOutput(String.format("%s completed", methodName));
}
removeReceiver(receiver);
return;
@@ -1295,9 +1248,8 @@
int firedFlags = receiver.getFiredFlags();
removeReceiver(receiver);
- fail(String.format("%s timeout: device=%s, state=%d (expected %d), "
- + "flags=0x%x (expected 0x%s)", methodName, device, state,
- BluetoothInputDevice.STATE_DISCONNECTED, firedFlags, mask));
+ fail(String.format("%s timeout: state=%d (expected %d), flags=0x%x (expected 0x%s)",
+ methodName, state, BluetoothInputDevice.STATE_DISCONNECTED, firedFlags, mask));
}
/**
@@ -1335,29 +1287,26 @@
String methodName;
if (isStart) {
- methodName = "startSco()";
+ methodName = String.format("startSco(device=%s)", device);
mask = StartStopScoReceiver.STATE_CONNECTED_FLAG;
} else {
- methodName = "stopSco()";
+ methodName = String.format("stopSco(device=%s)", device);
mask = StartStopScoReceiver.STATE_DISCONNECTED_FLAG;
}
if (!adapter.isEnabled()) {
- fail(String.format("%s bluetooth not enabled: device=%s, start=%b", methodName, device,
- isStart));
+ fail(String.format("%s bluetooth not enabled", methodName));
}
if (!adapter.getBondedDevices().contains(device)) {
- fail(String.format("%s device not paired: device=%s, start=%b", methodName, device,
- isStart));
+ fail(String.format("%s device not paired", methodName));
}
AudioManager manager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
assertNotNull(manager);
if (!manager.isBluetoothScoAvailableOffCall()) {
- fail(String.format("%s device does not support SCO: device=%s, start=%b", methodName,
- device, isStart));
+ fail(String.format("%s device does not support SCO", methodName));
}
boolean isScoOn = manager.isBluetoothScoOn();
@@ -1376,8 +1325,7 @@
long s = System.currentTimeMillis();
while (System.currentTimeMillis() - s < START_STOP_SCO_TIMEOUT) {
isScoOn = manager.isBluetoothScoOn();
- if ((isStart == isScoOn) &&
- (receiver.getFiredFlags() & mask) == mask) {
+ if (isStart == isScoOn && (receiver.getFiredFlags() & mask) == mask) {
long finish = receiver.getCompletedTime();
if (start != -1 && finish != -1) {
writeOutput(String.format("%s completed in %d ms", methodName,
@@ -1393,7 +1341,7 @@
int firedFlags = receiver.getFiredFlags();
removeReceiver(receiver);
- fail(String.format("%s timeout: start=%b (expected %b), flags=0x%x (expected 0x%x)",
+ fail(String.format("%s timeout: on=%b (expected %b), flags=0x%x (expected 0x%x)",
methodName, isScoOn, isStart, firedFlags, mask));
}
@@ -1478,6 +1426,30 @@
}
private BluetoothProfile connectProxy(BluetoothAdapter adapter, int profile) {
+ switch (profile) {
+ case BluetoothProfile.A2DP:
+ if (mA2dp != null) {
+ return mA2dp;
+ }
+ break;
+ case BluetoothProfile.HEADSET:
+ if (mHeadset != null) {
+ return mHeadset;
+ }
+ break;
+ case BluetoothProfile.INPUT_DEVICE:
+ if (mInput != null) {
+ return mInput;
+ }
+ break;
+ case BluetoothProfile.PAN:
+ if (mPan != null) {
+ return mPan;
+ }
+ break;
+ default:
+ return null;
+ }
adapter.getProfileProxy(mContext, mServiceListener, profile);
long s = System.currentTimeMillis();
switch (profile) {
diff --git a/docs/html/images/drm_arch.png b/docs/html/images/drm_arch.png
new file mode 100755
index 0000000..1696a97
--- /dev/null
+++ b/docs/html/images/drm_arch.png
Binary files differ
diff --git a/docs/html/sdk/oem-usb.jd b/docs/html/sdk/oem-usb.jd
index e64c8d2..882a433 100644
--- a/docs/html/sdk/oem-usb.jd
+++ b/docs/html/sdk/oem-usb.jd
@@ -33,14 +33,17 @@
<th>OEM</th>
<th>Driver URL</th></tr>
<tr><td>Acer</td> <td><a
-href="http://www.acer.com/worldwide/support/mobile.html">http://www.acer.com/worldwide/support/
-mobile.html</a>
+href="http://www.acer.com/worldwide/support/mobile.html">http://www.acer.com/worldwide/support/mobile.html</a>
</td></tr>
-
-<tr><td>Dell</td> <td>
+ <tr>
+ <td>Asus</td>
+ <td><a href="http://support.asus.com/download/">http://support.asus.com/download/</a></td>
+ </tr>
+ <tr><td>
+ Dell
+ </td> <td>
<a
-href="http://support.dell.com/support/downloads/index.aspx?c=us&cs=19&l=en&s=dhs&~ck=anavml">http://
-support.dell.com/support/downloads/index.aspx?c=us&cs=19&l=en&s=dhs&~ck=anavml</a> </td></tr>
+href="http://support.dell.com/support/downloads/index.aspx?c=us&cs=19&l=en&s=dhs&~ck=anavml">http://support.dell.com/support/downloads/index.aspx?c=us&cs=19&l=en&s=dhs&~ck=anavml</a> </td></tr>
<tr><td>Foxconn</td> <td><a
href="http://drivers.cmcs.com.tw/">http://drivers.cmcs.com.tw/</a></td>
@@ -56,17 +59,14 @@
<tr><td>
Garmin-Asus
</td> <td><a
-href="https://www.garminasus.com/en_US/support/pcsync/">https://www.garminasus.com/en_US/support/
-pcsync/</a></td>
+href="https://www.garminasus.com/en_US/support/pcsync/">https://www.garminasus.com/en_US/support/pcsync/</a></td>
</tr><tr><td>HTC</td> <td><a href="http://www.htc.com">http://www.htc.com </a> <br>Click on the
support tab to select your products/device. Different regions will have different links.</td>
</tr>
<tr><td>Huawei</td> <td><a
-href="http://www.huaweidevice.com/worldwide/downloadCenter.do?method=list&flay=software&directoryId=20&treeId=0">http://www.huaweidevice.com/worldwide/downloadCenter.do?method=list&flay=software&
-directoryId=20&treeId=0</a></td>
+href="http://www.huaweidevice.com/worldwide/downloadCenter.do?method=list&flay=software&directoryId=20&treeId=0">http://www.huaweidevice.com/worldwide/downloadCenter.do?method=list&flay=software&directoryId=20&treeId=0</a></td>
</tr><tr><td>KT Tech</td> <td><a
-href="http://www.kttech.co.kr/cscenter/download05.asp">http://www.kttech.co.kr/cscenter/download05.
-asp</a> for EV-S100(Take)</td>
+href="http://www.kttech.co.kr/cscenter/download05.asp">http://www.kttech.co.kr/cscenter/download05.asp</a> for EV-S100(Take)</td>
</tr>
<tr>
<td>
@@ -76,26 +76,19 @@
</td>
</tr>
<tr><td>LGE</td> <td><a
-href="http://www.lg.com/us/mobile-phones/mobile-support/mobile-lg-mobile-phone-support.jsp">http://
-www.lg.com/us/mobile-phones/mobile-support/mobile-lg-mobile-phone-support.jsp</a></td>
+href="http://www.lg.com/us/mobile-phones/mobile-support/mobile-lg-mobile-phone-support.jsp">http://www.lg.com/us/mobile-phones/mobile-support/mobile-lg-mobile-phone-support.jsp</a></td>
</tr><tr><td>Motorola</td> <td><a
-href="http://developer.motorola.com/docstools/USB_Drivers/">http://developer.motorola.com/docstools/
-USB_Drivers/</a></td>
+href="http://developer.motorola.com/docstools/USB_Drivers/">http://developer.motorola.com/docstools/USB_Drivers/</a></td>
</tr><tr><td>Pantech</td> <td><a
-href="http://www.isky.co.kr/cs/software/software.sky?fromUrl=index">http://www.isky.co.kr/cs/
-software/software.sky?fromUrl=index</a></td>
+href="http://www.isky.co.kr/cs/software/software.sky?fromUrl=index">http://www.isky.co.kr/cs/software/software.sky?fromUrl=index</a></td>
</tr><tr><td>Samsung</td> <td><a
-href="http://www.samsung.com/us/support/downloads">http://www.samsung.com/us/support/downloads</a></
-td>
+href="http://www.samsung.com/us/support/downloads">http://www.samsung.com/us/support/downloads</a></td>
</tr><tr><td>Sharp</td> <td><a
href="http://k-tai.sharp.co.jp/support/">http://k-tai.sharp.co.jp/support/</a></td>
</tr><tr><td>SK Telesys</td> <td><a
-href="http://www.sk-w.com/service/wDownload/wDownload.jsp">http://www.sk-w.com/service/wDownload/
-wDownload.jsp</a></td></tr><tr>
+href="http://www.sk-w.com/service/wDownload/wDownload.jsp">http://www.sk-w.com/service/wDownload/wDownload.jsp</a></td></tr><tr>
<td>Sony Ericsson</td> <td><a
-href="http://developer.sonyericsson.com/wportal/devworld/search-downloads/android">http://developer.
-sonyericsson.com/wportal/devworld/search-downloads/android</a></td></tr><tr>
+href="http://developer.sonyericsson.com/wportal/devworld/search-downloads/android">http://developer.sonyericsson.com/wportal/devworld/search-downloads/android</a></td></tr><tr>
<td>ZTE</td> <td><a
-href="http://www.zte.com.cn/cn/products/mobile/services_support/index.jsp">http://www.zte.com.cn/cn/
-products/mobile/services_support/index.jsp</a></td></tr>
+href="http://www.zte.com.cn/cn/products/mobile/services_support/index.jsp">http://www.zte.com.cn/cn/products/mobile/services_support/index.jsp</a></td></tr>
</table>
diff --git a/drm/java/android/drm/DrmConvertedStatus.java b/drm/java/android/drm/DrmConvertedStatus.java
old mode 100644
new mode 100755
index f200552..cecb135
--- a/drm/java/android/drm/DrmConvertedStatus.java
+++ b/drm/java/android/drm/DrmConvertedStatus.java
@@ -17,13 +17,11 @@
package android.drm;
/**
- * This is an entity class which wraps the status of the conversion, the converted
- * data/checksum data and the offset. Offset is going to be used in the case of close
- * session where the agent will inform where the header and body signature should be added
- *
- * As a result of {@link DrmManagerClient#convertData(int, byte [])} and
- * {@link DrmManagerClient#closeConvertSession(int)} an instance of DrmConvertedStatus
- * would be returned.
+ * An entity class that wraps converted data, conversion status, and the
+ * offset for appending the header and body signature to the converted data. An instance of this
+ * class is returned by the {@link DrmManagerClient#convertData convertData()} and
+ * {@link DrmManagerClient#closeConvertSession closeConvertSession()} methods. The offset is provided only when a
+ * conversion session is closed by calling {@link DrmManagerClient#closeConvertSession closeConvertSession()}.
*
*/
public class DrmConvertedStatus {
@@ -32,16 +30,19 @@
public static final int STATUS_INPUTDATA_ERROR = 2;
public static final int STATUS_ERROR = 3;
+ /** Status code for the conversion.*/
public final int statusCode;
+ /** Converted data.*/
public final byte[] convertedData;
+ /** Offset value for the body and header signature.*/
public final int offset;
/**
- * constructor to create DrmConvertedStatus object with given parameters
+ * Creates a <code>DrmConvertedStatus</code> object with the specified parameters.
*
- * @param _statusCode Status of the conversion
- * @param _convertedData Converted data/checksum data
- * @param _offset Offset value
+ * @param _statusCode Conversion status.
+ * @param _convertedData Converted data.
+ * @param _offset Offset value for appending the header and body signature.
*/
public DrmConvertedStatus(int _statusCode, byte[] _convertedData, int _offset) {
statusCode = _statusCode;
diff --git a/drm/java/android/drm/DrmErrorEvent.java b/drm/java/android/drm/DrmErrorEvent.java
old mode 100644
new mode 100755
index 7cc9a87..2cb82e6
--- a/drm/java/android/drm/DrmErrorEvent.java
+++ b/drm/java/android/drm/DrmErrorEvent.java
@@ -19,70 +19,69 @@
import java.util.HashMap;
/**
- * This is an entity class which would be passed to caller in
- * {@link DrmManagerClient.OnErrorListener#onError(DrmManagerClient, DrmErrorEvent)}
+ * An entity class that is passed to the
+ * {@link DrmManagerClient.OnErrorListener#onError onError()} callback.
*
*/
public class DrmErrorEvent extends DrmEvent {
/**
- * TYPE_RIGHTS_NOT_INSTALLED, when something went wrong installing the rights.
+ * Something went wrong installing the rights.
*/
public static final int TYPE_RIGHTS_NOT_INSTALLED = 2001;
/**
- * TYPE_RIGHTS_RENEWAL_NOT_ALLOWED, when the server rejects renewal of rights.
+ * The server rejected the renewal of rights.
*/
public static final int TYPE_RIGHTS_RENEWAL_NOT_ALLOWED = 2002;
/**
- * TYPE_NOT_SUPPORTED, when answer from server can not be handled by the native agent.
+ * Response from the server cannot be handled by the DRM plug-in (agent).
*/
public static final int TYPE_NOT_SUPPORTED = 2003;
/**
- * TYPE_OUT_OF_MEMORY, when memory allocation fail during renewal.
- * Can in the future perhaps be used to trigger garbage collector.
+ * Memory allocation failed during renewal. Can in the future perhaps be used to trigger
+ * garbage collector.
*/
public static final int TYPE_OUT_OF_MEMORY = 2004;
/**
- * TYPE_NO_INTERNET_CONNECTION, when the Internet connection is missing and no attempt
- * can be made to renew rights.
+ * An Internet connection is not available and no attempt can be made to renew rights.
*/
public static final int TYPE_NO_INTERNET_CONNECTION = 2005;
/**
- * TYPE_PROCESS_DRM_INFO_FAILED, when failed to process DrmInfo.
+ * Failed to process {@link DrmInfo}. This error event is sent when a
+ * {@link DrmManagerClient#processDrmInfo processDrmInfo()} call fails.
*/
public static final int TYPE_PROCESS_DRM_INFO_FAILED = 2006;
/**
- * TYPE_REMOVE_ALL_RIGHTS_FAILED, when failed to remove all the rights objects
- * associated with all DRM schemes.
+ * Failed to remove all the rights objects associated with all DRM schemes.
*/
public static final int TYPE_REMOVE_ALL_RIGHTS_FAILED = 2007;
/**
- * TYPE_ACQUIRE_DRM_INFO_FAILED, when failed to acquire DrmInfo.
+ * Failed to acquire {@link DrmInfo}. This error event is sent when an
+ * {@link DrmManagerClient#acquireDrmInfo acquireDrmInfo()} call fails.
*/
public static final int TYPE_ACQUIRE_DRM_INFO_FAILED = 2008;
/**
- * constructor to create DrmErrorEvent object with given parameters
+ * Creates a <code>DrmErrorEvent</code> object with the specified parameters.
*
- * @param uniqueId Unique session identifier
- * @param type Type of the event. It could be one of the types defined above
- * @param message Message description
+ * @param uniqueId Unique session identifier.
+ * @param type Type of the event. Could be any of the event types defined above.
+ * @param message Message description.
*/
public DrmErrorEvent(int uniqueId, int type, String message) {
super(uniqueId, type, message);
}
/**
- * constructor to create DrmErrorEvent object with given parameters
+ * Creates a <code>DrmErrorEvent</code> object with the specified parameters.
*
- * @param uniqueId Unique session identifier
- * @param type Type of the event. It could be one of the types defined above
- * @param message Message description
+ * @param uniqueId Unique session identifier.
+ * @param type Type of the event. Could be any of the event types defined above.
+ * @param message Message description.
* @param attributes Attributes for extensible information. Could be any
- * information provided by the plugin
+ * information provided by the plug-in.
*/
public DrmErrorEvent(int uniqueId, int type, String message,
HashMap<String, Object> attributes) {
super(uniqueId, type, message, attributes);
}
}
-
diff --git a/drm/java/android/drm/DrmEvent.java b/drm/java/android/drm/DrmEvent.java
old mode 100644
new mode 100755
index eba458b..4053eb3
--- a/drm/java/android/drm/DrmEvent.java
+++ b/drm/java/android/drm/DrmEvent.java
@@ -19,22 +19,26 @@
import java.util.HashMap;
/**
- * This is the base class which would be used to notify the caller
- * about any event occurred in DRM framework.
+ * A base class that is used to send asynchronous event information from the DRM framework.
*
*/
public class DrmEvent {
/**
- * Constant field signifies that all the rights information associated with
- * all DRM schemes are removed successfully
+ * All of the rights information associated with all DRM schemes have been successfully removed.
*/
public static final int TYPE_ALL_RIGHTS_REMOVED = 1001;
/**
- * Constant field signifies that given information is processed successfully
+ * The given DRM information has been successfully processed.
*/
public static final int TYPE_DRM_INFO_PROCESSED = 1002;
-
+ /**
+ * The key that is used in the <code>attributes</code> HashMap to pass the return status.
+ */
public static final String DRM_INFO_STATUS_OBJECT = "drm_info_status_object";
+ /**
+ * The key that is used in the <code>attributes</code> HashMap to pass the
+ * {@link DrmInfo} object.
+ */
public static final String DRM_INFO_OBJECT = "drm_info_object";
private final int mUniqueId;
@@ -44,12 +48,12 @@
private HashMap<String, Object> mAttributes = new HashMap<String, Object>();
/**
- * constructor for DrmEvent class
+ * Creates a <code>DrmEvent</code> object with the specified parameters.
*
- * @param uniqueId Unique session identifier
- * @param type Type of information
- * @param message Message description
- * @param attributes Attributes for extensible information
+ * @param uniqueId Unique session identifier.
+ * @param type Type of information.
+ * @param message Message description.
+ * @param attributes Attributes for extensible information.
*/
protected DrmEvent(int uniqueId, int type, String message,
HashMap<String, Object> attributes) {
@@ -66,11 +70,11 @@
}
/**
- * constructor for DrmEvent class
+ * Creates a <code>DrmEvent</code> object with the specified parameters.
*
- * @param uniqueId Unique session identifier
- * @param type Type of information
- * @param message Message description
+ * @param uniqueId Unique session identifier.
+ * @param type Type of information.
+ * @param message Message description.
*/
protected DrmEvent(int uniqueId, int type, String message) {
mUniqueId = uniqueId;
@@ -82,40 +86,39 @@
}
/**
- * Returns the Unique Id associated with this object
+ * Retrieves the unique session identifier associated with this object.
*
- * @return Unique Id
+ * @return The unique session identifier.
*/
public int getUniqueId() {
return mUniqueId;
}
/**
- * Returns the Type of information associated with this object
+ * Retrieves the type of information that is associated with this object.
*
- * @return Type of information
+ * @return The type of information.
*/
public int getType() {
return mType;
}
/**
- * Returns the message description associated with this object
+ * Retrieves the message description associated with this object.
*
- * @return message description
+ * @return The message description.
*/
public String getMessage() {
return mMessage;
}
/**
- * Returns the attribute corresponding to the specified key
+ * Retrieves the attribute associated with the specified key.
*
- * @return one of the attributes or null if no mapping for
- * the key is found
+ * @return One of the attributes or null if no mapping for
+ * the key is found.
*/
public Object getAttribute(String key) {
return mAttributes.get(key);
}
}
-
diff --git a/drm/java/android/drm/DrmInfo.java b/drm/java/android/drm/DrmInfo.java
old mode 100644
new mode 100755
index 7d3fbf1..8812bfe
--- a/drm/java/android/drm/DrmInfo.java
+++ b/drm/java/android/drm/DrmInfo.java
@@ -21,14 +21,13 @@
import java.util.Iterator;
/**
- * This is an entity class in which necessary information required to transact
- * between device and online DRM server is described. DRM Framework achieves
- * server registration, license acquisition and any other server related transaction
- * by passing an instance of this class to {@link DrmManagerClient#processDrmInfo(DrmInfo)}.
- *
- * Caller can retrieve the {@link DrmInfo} instance by using
- * {@link DrmManagerClient#acquireDrmInfo(DrmInfoRequest)}
- * by passing {@link DrmInfoRequest} instance.
+ * An entity class that describes the information required to send transactions
+ * between a device and an online DRM server. The DRM framework achieves
+ * server registration, license acquisition, and any other server-related transactions
+ * by passing an instance of this class to {@link DrmManagerClient#processDrmInfo}.
+ *<p>
+ * The caller can retrieve the {@link DrmInfo} instance by passing a {@link DrmInfoRequest}
+ * instance to {@link DrmManagerClient#acquireDrmInfo}.
*
*/
public class DrmInfo {
@@ -40,11 +39,11 @@
private final HashMap<String, Object> mAttributes = new HashMap<String, Object>();
/**
- * constructor to create DrmInfo object with given parameters
+ * Creates a <code>DrmInfo</code> object with the given parameters.
*
- * @param infoType Type of information
- * @param data Trigger data
- * @param mimeType MIME type
+ * @param infoType The type of information.
+ * @param data The trigger data.
+ * @param mimeType The MIME type.
*/
public DrmInfo(int infoType, byte[] data, String mimeType) {
mInfoType = infoType;
@@ -53,11 +52,11 @@
}
/**
- * constructor to create DrmInfo object with given parameters
+ * Creates a <code>DrmInfo</code> object with the given parameters.
*
- * @param infoType Type of information
- * @param path Trigger data
- * @param mimeType MIME type
+ * @param infoType The type of information.
+ * @param path The trigger data.
+ * @param mimeType The MIME type.
*/
public DrmInfo(int infoType, String path, String mimeType) {
mInfoType = infoType;
@@ -73,67 +72,70 @@
}
/**
- * Adds optional information as <key, value> pair to this object
+ * Adds optional information as key-value pairs to this object. To add a custom object
+ * to the <code>DrmInfo</code> object, you must override the {@link #toString} implementation.
*
- * @param key Key to add
- * @param value Value to add
- * To put custom object into DrmInfo, custom object has to
- * override toString() implementation.
+ * @param key Key to add.
+ * @param value Value to add.
+ *
*/
public void put(String key, Object value) {
mAttributes.put(key, value);
}
/**
- * Retrieves the value of given key, if not found returns null
+ * Retrieves the value of a given key.
*
- * @param key Key whose value to be retrieved
- * @return The value or null
+ * @param key The key whose value is being retrieved.
+ *
+ * @return The value of the key being retrieved. Returns null if the key cannot be found.
*/
public Object get(String key) {
return mAttributes.get(key);
}
/**
- * Returns Iterator object to walk through the keys associated with this instance
+ * Retrieves an iterator object that you can use to iterate over the keys associated with
+ * this <code>DrmInfo</code> object.
*
- * @return Iterator object
+ * @return The iterator object.
*/
public Iterator<String> keyIterator() {
return mAttributes.keySet().iterator();
}
/**
- * Returns Iterator object to walk through the values associated with this instance
+ * Retrieves an iterator object that you can use to iterate over the values associated with
+ * this <code>DrmInfo</code> object.
*
- * @return Iterator object
+ * @return The iterator object.
*/
public Iterator<Object> iterator() {
return mAttributes.values().iterator();
}
/**
- * Returns the trigger data associated with this object
+ * Retrieves the trigger data associated with this object.
*
- * @return Trigger data
+ * @return The trigger data.
*/
public byte[] getData() {
return mData;
}
/**
- * Returns the mimetype associated with this object
+ * Retrieves the MIME type associated with this object.
*
- * @return MIME type
+ * @return The MIME type.
*/
public String getMimeType() {
return mMimeType;
}
/**
- * Returns information type associated with this instance
+ * Retrieves the information type associated with this object.
*
- * @return Information type
+ * @return The information type.
*/
public int getInfoType() {
return mInfoType;
diff --git a/drm/java/android/drm/DrmInfoEvent.java b/drm/java/android/drm/DrmInfoEvent.java
old mode 100644
new mode 100755
index 190199a..67aa0a9
--- a/drm/java/android/drm/DrmInfoEvent.java
+++ b/drm/java/android/drm/DrmInfoEvent.java
@@ -19,58 +19,56 @@
import java.util.HashMap;
/**
- * This is an entity class which would be passed to caller in
- * {@link DrmManagerClient.OnInfoListener#onInfo(DrmManagerClient, DrmInfoEvent)}
+ * An entity class that is passed to the
+ * {@link DrmManagerClient.OnInfoListener#onInfo onInfo()} callback.
*
*/
public class DrmInfoEvent extends DrmEvent {
/**
- * TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT, when registration has been already done
- * by another account ID.
+ * The registration has already been done by another account ID.
*/
public static final int TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT = 1;
/**
- * TYPE_REMOVE_RIGHTS, when the rights needs to be removed completely.
+ * The rights need to be removed completely.
*/
public static final int TYPE_REMOVE_RIGHTS = 2;
/**
- * TYPE_RIGHTS_INSTALLED, when the rights are downloaded and installed ok.
+ * The rights have been successfully downloaded and installed.
*/
public static final int TYPE_RIGHTS_INSTALLED = 3;
/**
- * TYPE_WAIT_FOR_RIGHTS, rights object is on it's way to phone,
- * wait before calling checkRights again.
+ * The rights object is being delivered to the device. You must wait before
+ * calling {@link DrmManagerClient#acquireRights acquireRights()} again.
*/
public static final int TYPE_WAIT_FOR_RIGHTS = 4;
/**
- * TYPE_ACCOUNT_ALREADY_REGISTERED, when registration has been
- * already done for the given account.
+ * The registration has already been done for the given account.
*/
public static final int TYPE_ACCOUNT_ALREADY_REGISTERED = 5;
/**
- * TYPE_RIGHTS_REMOVED, when the rights has been removed.
+ * The rights have been removed.
*/
public static final int TYPE_RIGHTS_REMOVED = 6;
/**
- * constructor to create DrmInfoEvent object with given parameters
+ * Creates a <code>DrmInfoEvent</code> object with the specified parameters.
*
- * @param uniqueId Unique session identifier
- * @param type Type of the event. It could be one of the types defined above
- * @param message Message description
+ * @param uniqueId Unique session identifier.
+ * @param type Type of the event. Could be any of the event types defined above.
+ * @param message Message description.
*/
public DrmInfoEvent(int uniqueId, int type, String message) {
super(uniqueId, type, message);
}
/**
- * constructor to create DrmInfoEvent object with given parameters
+ * Creates a <code>DrmInfoEvent</code> object with the specified parameters.
*
- * @param uniqueId Unique session identifier
- * @param type Type of the event. It could be one of the types defined above
- * @param message Message description
+ * @param uniqueId Unique session identifier.
+ * @param type Type of the event. Could be any of the event types defined above.
+ * @param message Message description.
* @param attributes Attributes for extensible information. Could be any
- * information provided by the plugin
+ * information provided by the plug-in.
*/
public DrmInfoEvent(int uniqueId, int type, String message,
HashMap<String, Object> attributes) {
diff --git a/drm/java/android/drm/DrmInfoRequest.java b/drm/java/android/drm/DrmInfoRequest.java
old mode 100644
new mode 100755
index a5a799c..9f86f5f
--- a/drm/java/android/drm/DrmInfoRequest.java
+++ b/drm/java/android/drm/DrmInfoRequest.java
@@ -20,30 +20,37 @@
import java.util.Iterator;
/**
- * This is an entity class used to pass required parameters to get
- * the necessary information to communicate with online DRM server
- *
- * An instance of this class is passed to {@link DrmManagerClient#acquireDrmInfo(DrmInfoRequest)}
- * to get the instance of {@link DrmInfo}
+ * An entity class that is used to pass information to an online DRM server. An instance of this
+ * class is passed to the {@link DrmManagerClient#acquireDrmInfo acquireDrmInfo()} method to get an
+ * instance of a {@link DrmInfo}.
*
*/
public class DrmInfoRequest {
// Changes in following constants should be in sync with DrmInfoRequest.cpp
/**
- * Constants defines the type of {@link DrmInfoRequest}
+ * Acquires DRM server registration information.
*/
public static final int TYPE_REGISTRATION_INFO = 1;
+ /**
+ * Acquires information for unregistering the DRM server.
+ */
public static final int TYPE_UNREGISTRATION_INFO = 2;
+ /**
+ * Acquires rights information.
+ */
public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3;
+ /**
+ * Acquires the progress of the rights acquisition.
+ */
public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4;
/**
- * Key to pass the unique id for the account or the user
+ * Key that is used to pass the unique session ID for the account or the user.
*/
public static final String ACCOUNT_ID = "account_id";
/**
- * Key to pass the unique id used for subscription
+ * Key that is used to pass the unique session ID for the subscription.
*/
public static final String SUBSCRIPTION_ID = "subscription_id";
@@ -52,10 +59,10 @@
private final HashMap<String, Object> mRequestInformation = new HashMap<String, Object>();
/**
- * constructor to create DrmInfoRequest object with type and mimetype
+ * Creates a <code>DrmInfoRequest</code> object with type and MIME type.
*
- * @param infoType Type of information
- * @param mimeType MIME type
+ * @param infoType Type of information.
+ * @param mimeType MIME type.
*/
public DrmInfoRequest(int infoType, String mimeType) {
mInfoType = infoType;
@@ -63,56 +70,60 @@
}
/**
- * Returns the mimetype associated with this object
+ * Retrieves the MIME type associated with this object.
*
- * @return MIME type
+ * @return The MIME type.
*/
public String getMimeType() {
return mMimeType;
}
/**
- * Returns Information type associated with this instance
+ * Retrieves the information type associated with this object.
*
- * @return Information type
+ * @return The information type.
*/
public int getInfoType() {
return mInfoType;
}
/**
- * Adds optional information as <key, value> pair to this object.
+ * Adds optional information as key-value pairs to this object.
*
- * @param key Key to add
- * @param value Value to add
+ * @param key The key to add.
+ * @param value The value to add.
*/
public void put(String key, Object value) {
mRequestInformation.put(key, value);
}
/**
- * Retrieves the value of given key, if not found returns null
+ * Retrieves the value of a given key.
*
- * @param key Key whose value to be retrieved
- * @return The value or null
+ * @param key The key whose value is being retrieved.
+ *
+ * @return The value of the key that is being retrieved. Returns null if the key cannot be
+ * found.
*/
public Object get(String key) {
return mRequestInformation.get(key);
}
/**
- * Returns Iterator object to walk through the keys associated with this instance
+ * Retrieves an iterator object that you can use to iterate over the keys associated with
+ * this <code>DrmInfoRequest</code> object.
*
- * @return Iterator object
+ * @return The iterator object.
*/
public Iterator<String> keyIterator() {
return mRequestInformation.keySet().iterator();
}
/**
- * Returns Iterator object to walk through the values associated with this instance
+ * Retrieves an iterator object that you can use to iterate over the values associated with
+ * this <code>DrmInfoRequest</code> object.
*
- * @return Iterator object
+ * @return The iterator object.
*/
public Iterator<Object> iterator() {
return mRequestInformation.values().iterator();
diff --git a/drm/java/android/drm/DrmInfoStatus.java b/drm/java/android/drm/DrmInfoStatus.java
old mode 100644
new mode 100755
index b37ea51..b04694b
--- a/drm/java/android/drm/DrmInfoStatus.java
+++ b/drm/java/android/drm/DrmInfoStatus.java
@@ -17,12 +17,12 @@
package android.drm;
/**
- * This is an entity class which wraps the result of communication between device
- * and online DRM server.
- *
- * As a result of {@link DrmManagerClient#processDrmInfo(DrmInfo)} an instance of DrmInfoStatus
- * would be returned. This class holds {@link ProcessedData}, which could be used to instantiate
- * {@link DrmRights#DrmRights(ProcessedData, String)} in license acquisition.
+ * An entity class that wraps the result of communication between a device and an online DRM
+ * server. Specifically, when the {@link DrmManagerClient#processDrmInfo processDrmInfo()} method
+ * is called, an instance of <code>DrmInfoStatus</code> is returned.
+ *<p>
+ * This class contains the {@link ProcessedData} object, which can be used to instantiate a
+ * {@link DrmRights} object during license acquisition.
*
*/
public class DrmInfoStatus {
@@ -30,18 +30,30 @@
public static final int STATUS_OK = 1;
public static final int STATUS_ERROR = 2;
+ /**
+ * The status of the communication.
+ */
public final int statusCode;
+ /**
+ * The type of DRM information processed.
+ */
public final int infoType;
+ /**
+ * The MIME type of the content.
+ */
public final String mimeType;
+ /**
+ * The processed data.
+ */
public final ProcessedData data;
/**
- * constructor to create DrmInfoStatus object with given parameters
+ * Creates a <code>DrmInfoStatus</code> object with the specified parameters.
*
- * @param _statusCode Status of the communication
- * @param _infoType Type of the DRM information processed
- * @param _data The processed data
- * @param _mimeType MIME type
+ * @param _statusCode The status of the communication.
+ * @param _infoType The type of the DRM information processed.
+ * @param _data The processed data.
+ * @param _mimeType The MIME type.
*/
public DrmInfoStatus(int _statusCode, int _infoType, ProcessedData _data, String _mimeType) {
statusCode = _statusCode;
diff --git a/drm/java/android/drm/DrmManagerClient.java b/drm/java/android/drm/DrmManagerClient.java
old mode 100644
new mode 100755
index f7479b5..f3a0343
--- a/drm/java/android/drm/DrmManagerClient.java
+++ b/drm/java/android/drm/DrmManagerClient.java
@@ -35,18 +35,17 @@
import java.util.HashMap;
/**
- * Interface of DRM Framework.
- * Java application will instantiate this class
- * to access DRM agent through DRM Framework.
+ * The main programming interface for the DRM framework. An application must instantiate this class
+ * to access DRM agents through the DRM framework.
*
*/
public class DrmManagerClient {
/**
- * Constant field signifies the success or no error occurred
+ * Indicates that a request was successful or that no error occurred.
*/
public static final int ERROR_NONE = 0;
/**
- * Constant field signifies that error occurred and the reason is not known
+ * Indicates that an error occurred and the reason is not known.
*/
public static final int ERROR_UNKNOWN = -2000;
@@ -58,43 +57,45 @@
}
/**
- * Interface definition of a callback to be invoked to communicate
- * some info and/or warning about DrmManagerClient.
+ * Interface definition for a callback that receives status messages and warnings
+ * during registration and rights acquisition.
*/
public interface OnInfoListener {
/**
- * Called to indicate an info or a warning.
+ * Called when the DRM framework sends status or warning information during registration
+ * and rights acquisition.
*
- * @param client DrmManagerClient instance
- * @param event instance which wraps reason and necessary information
+ * @param client The <code>DrmManagerClient</code> instance.
+ * @param event The {@link DrmInfoEvent} instance that wraps the status information or
+ * warnings.
*/
public void onInfo(DrmManagerClient client, DrmInfoEvent event);
}
/**
- * Interface definition of a callback to be invoked to communicate
- * the result of time consuming APIs asynchronously
+ * Interface definition for a callback that receives information
+ * about DRM processing events.
*/
public interface OnEventListener {
/**
- * Called to indicate the result of asynchronous APIs.
+ * Called when the DRM framework sends information about a DRM processing request.
*
- * @param client DrmManagerClient instance
- * @param event instance which wraps type and message
+ * @param client The <code>DrmManagerClient</code> instance.
+ * @param event The {@link DrmEvent} instance that wraps the information being
+ * conveyed, such as the information type and message.
*/
public void onEvent(DrmManagerClient client, DrmEvent event);
}
/**
- * Interface definition of a callback to be invoked to communicate
- * the error occurred
+ * Interface definition for a callback that receives information about DRM framework errors.
*/
public interface OnErrorListener {
/**
- * Called to indicate the error occurred.
+ * Called when the DRM framework sends error information.
*
- * @param client DrmManagerClient instance
- * @param event instance which wraps error type and message
+ * @param client The <code>DrmManagerClient</code> instance.
+ * @param event The {@link DrmErrorEvent} instance that wraps the error type and message.
*/
public void onError(DrmManagerClient client, DrmErrorEvent event);
}
@@ -231,9 +232,9 @@
}
/**
- * To instantiate DrmManagerClient
+ * Creates a <code>DrmManagerClient</code>.
*
- * @param context context of the caller
+ * @param context Context of the caller.
*/
public DrmManagerClient(Context context) {
mContext = context;
@@ -257,10 +258,10 @@
}
/**
- * Register a callback to be invoked when the caller required to receive
- * supplementary information.
+ * Registers an {@link DrmManagerClient.OnInfoListener} callback, which is invoked when the
+ * DRM framework sends status or warning information during registration or rights acquisition.
*
- * @param infoListener
+ * @param infoListener Interface definition for the callback.
*/
public synchronized void setOnInfoListener(OnInfoListener infoListener) {
if (null != infoListener) {
@@ -269,10 +270,10 @@
}
/**
- * Register a callback to be invoked when the caller required to receive
- * the result of asynchronous APIs.
+ * Registers an {@link DrmManagerClient.OnEventListener} callback, which is invoked when the
+ * DRM framework sends information about DRM processing.
*
- * @param eventListener
+ * @param eventListener Interface definition for the callback.
*/
public synchronized void setOnEventListener(OnEventListener eventListener) {
if (null != eventListener) {
@@ -281,10 +282,10 @@
}
/**
- * Register a callback to be invoked when the caller required to receive
- * error result of asynchronous APIs.
+ * Registers an {@link DrmManagerClient.OnErrorListener} callback, which is invoked when
+ * the DRM framework sends error information.
*
- * @param errorListener
+ * @param errorListener Interface definition for the callback.
*/
public synchronized void setOnErrorListener(OnErrorListener errorListener) {
if (null != errorListener) {
@@ -293,9 +294,10 @@
}
/**
- * Retrieves informations about all the plug-ins registered with DrmFramework.
+ * Retrieves information about all the DRM plug-ins (agents) that are registered with
+ * the DRM framework.
*
- * @return Array of DrmEngine plug-in strings
+ * @return A <code>String</code> array of DRM plug-in descriptions.
*/
public String[] getAvailableDrmEngines() {
DrmSupportInfo[] supportInfos = _getAllSupportInfo(mUniqueId);
@@ -310,12 +312,13 @@
}
/**
- * Get constraints information evaluated from DRM content
+ * Retrieves constraint information for rights-protected content.
*
- * @param path Content path from where DRM constraints would be retrieved.
- * @param action Actions defined in {@link DrmStore.Action}
- * @return ContentValues instance in which constraints key-value pairs are embedded
- * or null in case of failure
+ * @param path Path to the content from which you are retrieving DRM constraints.
+ * @param action Action defined in {@link DrmStore.Action}.
+ *
+ * @return A {@link android.content.ContentValues} instance that contains
+ * key-value pairs representing the constraints. Null in case of failure.
*/
public ContentValues getConstraints(String path, int action) {
if (null == path || path.equals("") || !DrmStore.Action.isValid(action)) {
@@ -325,11 +328,12 @@
}
/**
- * Get metadata information from DRM content
+ * Retrieves metadata information for rights-protected content.
*
- * @param path Content path from where DRM metadata would be retrieved.
- * @return ContentValues instance in which metadata key-value pairs are embedded
- * or null in case of failure
+ * @param path Path to the content from which you are retrieving metadata information.
+ *
+ * @return A {@link android.content.ContentValues} instance that contains
+ * key-value pairs representing the metadata. Null in case of failure.
*/
public ContentValues getMetadata(String path) {
if (null == path || path.equals("")) {
@@ -339,12 +343,13 @@
}
/**
- * Get constraints information evaluated from DRM content
+ * Retrieves constraint information for rights-protected content.
*
- * @param uri Content URI from where DRM constraints would be retrieved.
- * @param action Actions defined in {@link DrmStore.Action}
- * @return ContentValues instance in which constraints key-value pairs are embedded
- * or null in case of failure
+ * @param uri URI for the content from which you are retrieving DRM constraints.
+ * @param action Action defined in {@link DrmStore.Action}.
+ *
+ * @return A {@link android.content.ContentValues} instance that contains
+ * key-value pairs representing the constraints. Null in case of failure.
*/
public ContentValues getConstraints(Uri uri, int action) {
if (null == uri || Uri.EMPTY == uri) {
@@ -354,11 +359,12 @@
}
/**
- * Get metadata information from DRM content
+ * Retrieves metadata information for rights-protected content.
*
- * @param uri Content URI from where DRM metadata would be retrieved.
- * @return ContentValues instance in which metadata key-value pairs are embedded
- * or null in case of failure
+ * @param uri URI for the content from which you are retrieving metadata information.
+ *
+ * @return A {@link android.content.ContentValues} instance that contains
+ * key-value pairs representing the constraints. Null in case of failure.
*/
public ContentValues getMetadata(Uri uri) {
if (null == uri || Uri.EMPTY == uri) {
@@ -368,18 +374,19 @@
}
/**
- * Save DRM rights to specified rights path
- * and make association with content path.
+ * Saves rights to a specified path and associates that path with the content path.
+ *
+ * <p class="note"><strong>Note:</strong> For OMA or WM-DRM, <code>rightsPath</code> and
+ * <code>contentPath</code> can be null.</p>
*
- * <p class="note">In case of OMA or WM-DRM, rightsPath and contentPath could be null.</p>
+ * @param drmRights The {@link DrmRights} to be saved.
+ * @param rightsPath File path where rights will be saved.
+ * @param contentPath File path where content is saved.
*
- * @param drmRights DrmRights to be saved
- * @param rightsPath File path where rights to be saved
- * @param contentPath File path where content was saved
- * @return
- * ERROR_NONE for success
- * ERROR_UNKNOWN for failure
- * @throws IOException if failed to save rights information in the given path
+ * @return ERROR_NONE for success; ERROR_UNKNOWN for failure.
+ *
+ * @throws IOException If the call failed to save rights information at the given
+ * <code>rightsPath</code>.
*/
public int saveRights(
DrmRights drmRights, String rightsPath, String contentPath) throws IOException {
@@ -393,9 +400,10 @@
}
/**
- * Install new DRM Engine Plug-in at the runtime
+ * Installs a new DRM plug-in (agent) at runtime.
*
- * @param engineFilePath Path of the plug-in file to be installed
+ * @param engineFilePath File path to the plug-in file to be installed.
+ *
* {@hide}
*/
public void installDrmEngine(String engineFilePath) {
@@ -407,13 +415,12 @@
}
/**
- * Check whether the given mimetype or path can be handled.
+ * Checks whether the given MIME type or path can be handled.
*
- * @param path Path of the content to be handled
- * @param mimeType Mimetype of the object to be handled
- * @return
- * true - if the given mimeType or path can be handled
- * false - cannot be handled.
+ * @param path Path of the content to be handled.
+ * @param mimeType MIME type of the object to be handled.
+ *
+ * @return True if the given MIME type or path can be handled; false if they cannot be handled.
*/
public boolean canHandle(String path, String mimeType) {
if ((null == path || path.equals("")) && (null == mimeType || mimeType.equals(""))) {
@@ -423,13 +430,12 @@
}
/**
- * Check whether the given mimetype or uri can be handled.
+ * Checks whether the given MIME type or URI can be handled.
*
- * @param uri Content URI of the data to be handled.
- * @param mimeType Mimetype of the object to be handled
- * @return
- * true - if the given mimeType or path can be handled
- * false - cannot be handled.
+ * @param uri URI for the content to be handled.
+ * @param mimeType MIME type of the object to be handled
+ *
+ * @return True if the given MIME type or URI can be handled; false if they cannot be handled.
*/
public boolean canHandle(Uri uri, String mimeType) {
if ((null == uri || Uri.EMPTY == uri) && (null == mimeType || mimeType.equals(""))) {
@@ -439,12 +445,10 @@
}
/**
- * Executes given drm information based on its type
+ * Processes the given DRM information based on the information type.
*
- * @param drmInfo Information needs to be processed
- * @return
- * ERROR_NONE for success
- * ERROR_UNKNOWN for failure
+ * @param drmInfo The {@link DrmInfo} to be processed.
+ * @return ERROR_NONE for success; ERROR_UNKNOWN for failure.
*/
public int processDrmInfo(DrmInfo drmInfo) {
if (null == drmInfo || !drmInfo.isValid()) {
@@ -459,10 +463,12 @@
}
/**
- * Retrieves necessary information for register, unregister or rights acquisition.
+ * Retrieves information for registering, unregistering, or acquiring rights.
*
- * @param drmInfoRequest Request information to retrieve drmInfo
- * @return DrmInfo Instance as a result of processing given input
+ * @param drmInfoRequest The {@link DrmInfoRequest} that specifies the type of DRM
+ * information being retrieved.
+ *
+ * @return A {@link DrmInfo} instance.
*/
public DrmInfo acquireDrmInfo(DrmInfoRequest drmInfoRequest) {
if (null == drmInfoRequest || !drmInfoRequest.isValid()) {
@@ -472,17 +478,18 @@
}
/**
- * Executes given DrmInfoRequest and returns the rights information asynchronously.
- * This is a utility API which consists of {@link #acquireDrmInfo(DrmInfoRequest)}
- * and {@link #processDrmInfo(DrmInfo)}.
- * It can be used if selected DRM agent can work with this combined sequences.
- * In case of some DRM schemes, such as OMA DRM, application needs to invoke
- * {@link #acquireDrmInfo(DrmInfoRequest)} and {@link #processDrmInfo(DrmInfo)}, separately.
+ * Processes a given {@link DrmInfoRequest} and returns the rights information asynchronously.
+ *<p>
+ * This is a utility method that consists of an
+ * {@link #acquireDrmInfo(DrmInfoRequest) acquireDrmInfo()} and a
+ * {@link #processDrmInfo(DrmInfo) processDrmInfo()} method call. This utility method can be
+ * used only if the selected DRM plug-in (agent) supports this sequence of calls. Some DRM
+ * agents, such as OMA, do not support this utility method, in which case an application must
+ * invoke {@link #acquireDrmInfo(DrmInfoRequest) acquireDrmInfo()} and
+ * {@link #processDrmInfo(DrmInfo) processDrmInfo()} separately.
*
- * @param drmInfoRequest Request information to retrieve drmInfo
- * @return
- * ERROR_NONE for success
- * ERROR_UNKNOWN for failure
+ * @param drmInfoRequest The {@link DrmInfoRequest} used to acquire the rights.
+ * @return ERROR_NONE for success; ERROR_UNKNOWN for failure.
*/
public int acquireRights(DrmInfoRequest drmInfoRequest) {
DrmInfo drmInfo = acquireDrmInfo(drmInfoRequest);
@@ -493,14 +500,14 @@
}
/**
- * Retrieves the type of the protected object (content, rights, etc..)
- * using specified path or mimetype. At least one parameter should be non null
- * to retrieve DRM object type
+ * Retrieves the type of rights-protected object (for example, content object, rights
+ * object, and so on) using the specified path or MIME type. At least one parameter must
+ * be specified to retrieve the DRM object type.
*
- * @param path Path of the content or null.
- * @param mimeType Mimetype of the content or null.
- * @return Type of the DRM content.
- * @see DrmStore.DrmObjectType
+ * @param path Path to the content or null.
+ * @param mimeType MIME type of the content or null.
+ *
+ * @return An <code>int</code> that corresponds to a {@link DrmStore.DrmObjectType}.
*/
public int getDrmObjectType(String path, String mimeType) {
if ((null == path || path.equals("")) && (null == mimeType || mimeType.equals(""))) {
@@ -510,14 +517,14 @@
}
/**
- * Retrieves the type of the protected object (content, rights, etc..)
- * using specified uri or mimetype. At least one parameter should be non null
- * to retrieve DRM object type
+ * Retrieves the type of rights-protected object (for example, content object, rights
+ * object, and so on) using the specified URI or MIME type. At least one parameter must
+ * be specified to retrieve the DRM object type.
*
- * @param uri The content URI of the data
- * @param mimeType Mimetype of the content or null.
- * @return Type of the DRM content.
- * @see DrmStore.DrmObjectType
+ * @param uri URI for the content or null.
+ * @param mimeType MIME type of the content or null.
+ *
+ * @return An <code>int</code> that corresponds to a {@link DrmStore.DrmObjectType}.
*/
public int getDrmObjectType(Uri uri, String mimeType) {
if ((null == uri || Uri.EMPTY == uri) && (null == mimeType || mimeType.equals(""))) {
@@ -534,10 +541,11 @@
}
/**
- * Retrieves the mime type embedded inside the original content
+ * Retrieves the MIME type embedded in the original content.
*
- * @param path Path of the protected content
- * @return Mimetype of the original content, such as "video/mpeg"
+ * @param path Path to the rights-protected content.
+ *
+ * @return The MIME type of the original content, such as <code>video/mpeg</code>.
*/
public String getOriginalMimeType(String path) {
if (null == path || path.equals("")) {
@@ -547,10 +555,11 @@
}
/**
- * Retrieves the mime type embedded inside the original content
+ * Retrieves the MIME type embedded in the original content.
*
- * @param uri The content URI of the data
- * @return Mimetype of the original content, such as "video/mpeg"
+ * @param uri URI of the rights-protected content.
+ *
+ * @return MIME type of the original content, such as <code>video/mpeg</code>.
*/
public String getOriginalMimeType(Uri uri) {
if (null == uri || Uri.EMPTY == uri) {
@@ -560,22 +569,22 @@
}
/**
- * Check whether the given content has valid rights or not
+ * Checks whether the given content has valid rights.
*
- * @param path Path of the protected content
- * @return Status of the rights for the protected content
- * @see DrmStore.RightsStatus
+ * @param path Path to the rights-protected content.
+ *
+ * @return An <code>int</code> representing the {@link DrmStore.RightsStatus} of the content.
*/
public int checkRightsStatus(String path) {
return checkRightsStatus(path, DrmStore.Action.DEFAULT);
}
/**
- * Check whether the given content has valid rights or not
+ * Check whether the given content has valid rights.
*
- * @param uri The content URI of the data
- * @return Status of the rights for the protected content
- * @see DrmStore.RightsStatus
+ * @param uri URI of the rights-protected content.
+ *
+ * @return An <code>int</code> representing the {@link DrmStore.RightsStatus} of the content.
*/
public int checkRightsStatus(Uri uri) {
if (null == uri || Uri.EMPTY == uri) {
@@ -585,12 +594,13 @@
}
/**
- * Check whether the given content has valid rights or not for specified action.
+ * Checks whether the given rights-protected content has valid rights for the specified
+ * {@link DrmStore.Action}.
*
- * @param path Path of the protected content
- * @param action Action to perform
- * @return Status of the rights for the protected content
- * @see DrmStore.RightsStatus
+ * @param path Path to the rights-protected content.
+ * @param action The {@link DrmStore.Action} to perform.
+ *
+ * @return An <code>int</code> representing the {@link DrmStore.RightsStatus} of the content.
*/
public int checkRightsStatus(String path, int action) {
if (null == path || path.equals("") || !DrmStore.Action.isValid(action)) {
@@ -600,12 +610,13 @@
}
/**
- * Check whether the given content has valid rights or not for specified action.
+ * Checks whether the given rights-protected content has valid rights for the specified
+ * {@link DrmStore.Action}.
*
- * @param uri The content URI of the data
- * @param action Action to perform
- * @return Status of the rights for the protected content
- * @see DrmStore.RightsStatus
+ * @param uri URI for the rights-protected content.
+ * @param action The {@link DrmStore.Action} to perform.
+ *
+ * @return An <code>int</code> representing the {@link DrmStore.RightsStatus} of the content.
*/
public int checkRightsStatus(Uri uri, int action) {
if (null == uri || Uri.EMPTY == uri) {
@@ -615,12 +626,11 @@
}
/**
- * Removes the rights associated with the given protected content
+ * Removes the rights associated with the given rights-protected content.
*
- * @param path Path of the protected content
- * @return
- * ERROR_NONE for success
- * ERROR_UNKNOWN for failure
+ * @param path Path to the rights-protected content.
+ *
+ * @return ERROR_NONE for success; ERROR_UNKNOWN for failure.
*/
public int removeRights(String path) {
if (null == path || path.equals("")) {
@@ -630,12 +640,11 @@
}
/**
- * Removes the rights associated with the given protected content
+ * Removes the rights associated with the given rights-protected content.
*
- * @param uri The content URI of the data
- * @return
- * ERROR_NONE for success
- * ERROR_UNKNOWN for failure
+ * @param uri URI for the rights-protected content.
+ *
+ * @return ERROR_NONE for success; ERROR_UNKNOWN for failure.
*/
public int removeRights(Uri uri) {
if (null == uri || Uri.EMPTY == uri) {
@@ -645,12 +654,10 @@
}
/**
- * Removes all the rights information of every plug-in associated with
- * DRM framework. Will be used in master reset
+ * Removes all the rights information of every DRM plug-in (agent) associated with
+ * the DRM framework. Will be used during a master reset.
*
- * @return
- * ERROR_NONE for success
- * ERROR_UNKNOWN for failure
+ * @return ERROR_NONE for success; ERROR_UNKNOWN for failure.
*/
public int removeAllRights() {
int result = ERROR_UNKNOWN;
@@ -662,13 +669,14 @@
}
/**
- * This API is for Forward Lock based DRM scheme.
- * Each time the application tries to download a new DRM file
- * which needs to be converted, then the application has to
- * begin with calling this API.
+ * Initiates a new conversion session. An application must initiate a conversion session
+ * with this method each time it downloads a rights-protected file that needs to be converted.
+ *<p>
+ * This method applies only to forward-locking (copy protection) DRM schemes.
*
- * @param mimeType Description/MIME type of the input data packet
- * @return convert ID which will be used for maintaining convert session.
+ * @param mimeType MIME type of the input data packet.
+ *
+ * @return A convert ID that is used used to maintain the conversion session.
*/
public int openConvertSession(String mimeType) {
if (null == mimeType || mimeType.equals("")) {
@@ -678,16 +686,17 @@
}
/**
- * Accepts and converts the input data which is part of DRM file.
- * The resultant converted data and the status is returned in the DrmConvertedInfo
- * object. This method will be called each time there are new block
- * of data received by the application.
+ * Converts the input data (content) that is part of a rights-protected file. The converted
+ * data and status is returned in a {@link DrmConvertedStatus} object. This method should be
+ * called each time there is a new block of data received by the application.
*
- * @param convertId Handle for the convert session
- * @param inputData Input Data which need to be converted
- * @return Return object contains the status of the data conversion,
- * the output converted data and offset. In this case the
- * application will ignore the offset information.
+ * @param convertId Handle for the conversion session.
+ * @param inputData Input data that needs to be converted.
+ *
+ * @return A {@link DrmConvertedStatus} object that contains the status of the data conversion,
+ * the converted data, and offset for the header and body signature. An application can
+ * ignore the offset because it is only relevant to the
+ * {@link #closeConvertSession closeConvertSession()} method.
*/
public DrmConvertedStatus convertData(int convertId, byte[] inputData) {
if (null == inputData || 0 >= inputData.length) {
@@ -697,16 +706,15 @@
}
/**
- * Informs the Drm Agent when there is no more data which need to be converted
- * or when an error occurs. Upon successful conversion of the complete data,
- * the agent will inform that where the header and body signature
- * should be added. This signature appending is needed to integrity
- * protect the converted file.
+ * Informs the DRM plug-in (agent) that there is no more data to convert or that an error
+ * has occurred. Upon successful conversion of the data, the DRM agent will provide an offset
+ * value indicating where the header and body signature should be added. Appending the
+ * signature is necessary to protect the integrity of the converted file.
*
- * @param convertId Handle for the convert session
- * @return Return object contains the status of the data conversion,
- * the header and body signature data. It also informs
- * the application on which offset these signature data should be appended.
+ * @param convertId Handle for the conversion session.
+ *
+ * @return A {@link DrmConvertedStatus} object that contains the status of the data conversion,
+ * the converted data, and the offset for the header and body signature.
*/
public DrmConvertedStatus closeConvertSession(int convertId) {
return _closeConvertSession(mUniqueId, convertId);
diff --git a/drm/java/android/drm/DrmRights.java b/drm/java/android/drm/DrmRights.java
old mode 100644
new mode 100755
index 103af07..5907956
--- a/drm/java/android/drm/DrmRights.java
+++ b/drm/java/android/drm/DrmRights.java
@@ -20,14 +20,16 @@
import java.io.IOException;
/**
- * This is an entity class which wraps the license information which was
- * retrieved from the online DRM server.
- *
- * Caller can instantiate {@link DrmRights} by
- * invoking {@link DrmRights#DrmRights(ProcessedData, String)}
- * constructor by using the result of {@link DrmManagerClient#processDrmInfo(DrmInfo)} interface.
- * Caller can also instantiate {@link DrmRights} using the file path
- * which contains rights information.
+ * An entity class that wraps the license information retrieved from the online DRM server.
+ *<p>
+ * A caller can instantiate a {@link DrmRights} object by first invoking the
+ * {@link DrmManagerClient#processDrmInfo(DrmInfo)} method and then using the resulting
+ * {@link ProcessedData} object to invoke the {@link DrmRights#DrmRights(ProcessedData, String)}
+ * constructor.
+ *<p>
+ * A caller can also instantiate a {@link DrmRights} object by using the
+ * {@link DrmRights#DrmRights(String, String)} constructor, which takes a path to a file
+ * containing rights information instead of a <code>ProcessedData</code>.
*
*/
public class DrmRights {
@@ -37,10 +39,10 @@
private String mSubscriptionId = "";
/**
- * constructor to create DrmRights object with given parameters
+ * Creates a <code>DrmRights</code> object with the given parameters.
*
- * @param rightsFilePath Path of the file containing rights data
- * @param mimeType MIME type
+ * @param rightsFilePath Path to the file containing rights information.
+ * @param mimeType MIME type.
*/
public DrmRights(String rightsFilePath, String mimeType) {
File file = new File(rightsFilePath);
@@ -48,11 +50,11 @@
}
/**
- * constructor to create DrmRights object with given parameters
+ * Creates a <code>DrmRights</code> object with the given parameters.
*
- * @param rightsFilePath Path of the file containing rights data
- * @param mimeType MIME type
- * @param accountId Account Id of the user
+ * @param rightsFilePath Path to the file containing rights information.
+ * @param mimeType MIME type.
+ * @param accountId Account ID of the user.
*/
public DrmRights(String rightsFilePath, String mimeType, String accountId) {
this(rightsFilePath, mimeType);
@@ -63,12 +65,12 @@
}
/**
- * constructor to create DrmRights object with given parameters
+ * Creates a <code>DrmRights</code> object with the given parameters.
*
- * @param rightsFilePath Path of the file containing rights data
- * @param mimeType MIME type
- * @param accountId Account Id of the user
- * @param subscriptionId Subscription Id of the user
+ * @param rightsFilePath Path to the file containing rights information.
+ * @param mimeType MIME type.
+ * @param accountId Account ID of the user.
+ * @param subscriptionId Subscription ID of the user.
*/
public DrmRights(
String rightsFilePath, String mimeType, String accountId, String subscriptionId) {
@@ -84,10 +86,10 @@
}
/**
- * constructor to create DrmRights object with given parameters
+ * Creates a <code>DrmRights</code> object with the given parameters.
*
- * @param rightsFile File containing rights data
- * @param mimeType MIME type
+ * @param rightsFile File containing rights information.
+ * @param mimeType MIME type.
*/
public DrmRights(File rightsFile, String mimeType) {
instantiate(rightsFile, mimeType);
@@ -104,16 +106,20 @@
}
/**
- * constructor to create DrmRights object with given parameters
- * The user can pass String or binary data<p>
- * Usage:<p>
- * i) String(e.g. data is instance of String):<br>
- * - new DrmRights(data.getBytes(), mimeType)<p>
- * ii) Binary data<br>
- * - new DrmRights(binaryData[], mimeType)<br>
+ * Creates a <code>DrmRights</code> object with the given parameters.
+ *<p>
+ * The application can pass the processed data as a <code>String</code> or as binary data.
+ *<p>
+ * The following code snippet shows how to pass the processed data as a <code>String</code>:
+ *<p>
+ * new DrmRights(data.getBytes(), mimeType)
+ *<p>
+ * The following code snippet shows how to pass the processed data as binary data:
+ *<p>
+ * new DrmRights(binaryData[], mimeType)
*
- * @param data Processed data
- * @param mimeType MIME type
+ * @param data A {@link ProcessedData} object.
+ * @param mimeType The MIME type.
*/
public DrmRights(ProcessedData data, String mimeType) {
mData = data.getData();
@@ -132,47 +138,45 @@
}
/**
- * Returns the rights data associated with this object
+ * Retrieves the rights data associated with this <code>DrmRights</code> object.
*
- * @return Rights data
+ * @return A <code>byte</code> array representing the rights data.
*/
public byte[] getData() {
return mData;
}
/**
- * Returns the mimetype associated with this object
+ * Retrieves the MIME type associated with this <code>DrmRights</code> object.
*
- * @return MIME type
+ * @return The MIME type.
*/
public String getMimeType() {
return mMimeType;
}
/**
- * Returns the account-id associated with this object
+ * Retrieves the account ID associated with this <code>DrmRights</code> object.
*
- * @return Account Id
+ * @return The account ID.
*/
public String getAccountId() {
return mAccountId;
}
/**
- * Returns the subscription-id associated with this object
+ * Retrieves the subscription ID associated with this <code>DrmRights</code> object.
*
- * @return Subscription Id
+ * @return The subscription ID.
*/
public String getSubscriptionId() {
return mSubscriptionId;
}
/**
- * Returns whether this instance is valid or not
+ * Determines whether this instance is valid or not.
*
- * @return
- * true if valid
- * false if invalid
+ * @return True if valid; false if invalid.
*/
/*package*/ boolean isValid() {
return (null != mMimeType && !mMimeType.equals("")
diff --git a/drm/java/android/drm/DrmStore.java b/drm/java/android/drm/DrmStore.java
old mode 100644
new mode 100755
index 44df90c..ae311de
--- a/drm/java/android/drm/DrmStore.java
+++ b/drm/java/android/drm/DrmStore.java
@@ -17,91 +17,97 @@
package android.drm;
/**
- * This class defines all the constants used by DRM framework
+ * Defines constants that are used by the DRM framework.
*
*/
public class DrmStore {
/**
- * Columns representing drm constraints
+ * Interface definition for the columns that represent DRM constraints.
*/
public interface ConstraintsColumns {
/**
- * The max repeat count
- * <P>Type: INTEGER</P>
+ * The maximum repeat count.
+ * <p>
+ * Type: INTEGER
*/
public static final String MAX_REPEAT_COUNT = "max_repeat_count";
/**
- * The remaining repeat count
- * <P>Type: INTEGER</P>
+ * The remaining repeat count.
+ * <p>
+ * Type: INTEGER
*/
public static final String REMAINING_REPEAT_COUNT = "remaining_repeat_count";
/**
- * The time before which the protected file can not be played/viewed
- * <P>Type: TEXT</P>
+ * The time before which the rights-protected file cannot be played/viewed.
+ * <p>
+ * Type: TEXT
*/
public static final String LICENSE_START_TIME = "license_start_time";
/**
- * The time after which the protected file can not be played/viewed
- * <P>Type: TEXT</P>
+ * The time after which the rights-protected file cannot be played/viewed.
+ * <p>
+ * Type: TEXT
*/
public static final String LICENSE_EXPIRY_TIME = "license_expiry_time";
/**
- * The available time for license
- * <P>Type: TEXT</P>
+ * The available time left before the license expires.
+ * <p>
+ * Type: TEXT
*/
public static final String LICENSE_AVAILABLE_TIME = "license_available_time";
/**
- * The data stream for extended metadata
- * <P>Type: TEXT</P>
+ * The data stream for extended metadata.
+ * <p>
+ * Type: TEXT
*/
public static final String EXTENDED_METADATA = "extended_metadata";
}
/**
- * Defines constants related to DRM types
+ * Defines DRM object types.
*/
public static class DrmObjectType {
/**
- * Field specifies the unknown type
+ * An unknown object type.
*/
public static final int UNKNOWN = 0x00;
/**
- * Field specifies the protected content type
+ * A rights-protected file object type.
*/
public static final int CONTENT = 0x01;
/**
- * Field specifies the rights information
+ * A rights information object type.
*/
public static final int RIGHTS_OBJECT = 0x02;
/**
- * Field specifies the trigger information
+ * A trigger information object type.
*/
public static final int TRIGGER_OBJECT = 0x03;
}
/**
- * Defines constants related to playback
+ * Defines playback states for content.
*/
public static class Playback {
/**
- * Constant field signifies playback start
+ * Playback started.
*/
public static final int START = 0x00;
/**
- * Constant field signifies playback stop
+ * Playback stopped.
*/
public static final int STOP = 0x01;
/**
- * Constant field signifies playback paused
+ * Playback paused.
*/
public static final int PAUSE = 0x02;
/**
- * Constant field signifies playback resumed
+ * Playback resumed.
*/
public static final int RESUME = 0x03;
@@ -120,39 +126,39 @@
}
/**
- * Defines actions that can be performed on protected content
+ * Defines actions that can be performed on rights-protected content.
*/
public static class Action {
/**
- * Constant field signifies that the default action
+ * The default action.
*/
public static final int DEFAULT = 0x00;
/**
- * Constant field signifies that the content can be played
+ * The rights-protected content can be played.
*/
public static final int PLAY = 0x01;
/**
- * Constant field signifies that the content can be set as ring tone
+ * The rights-protected content can be set as a ringtone.
*/
public static final int RINGTONE = 0x02;
/**
- * Constant field signifies that the content can be transfered
+ * The rights-protected content can be transferred.
*/
public static final int TRANSFER = 0x03;
/**
- * Constant field signifies that the content can be set as output
+ * The rights-protected content can be set as output.
*/
public static final int OUTPUT = 0x04;
/**
- * Constant field signifies that preview is allowed
+ * The rights-protected content can be previewed.
*/
public static final int PREVIEW = 0x05;
/**
- * Constant field signifies that the content can be executed
+ * The rights-protected content can be executed.
*/
public static final int EXECUTE = 0x06;
/**
- * Constant field signifies that the content can displayed
+ * The rights-protected content can be displayed.
*/
public static final int DISPLAY = 0x07;
@@ -175,23 +181,23 @@
}
/**
- * Defines constants related to status of the rights
+ * Defines status notifications for digital rights.
*/
public static class RightsStatus {
/**
- * Constant field signifies that the rights are valid
+ * The digital rights are valid.
*/
public static final int RIGHTS_VALID = 0x00;
/**
- * Constant field signifies that the rights are invalid
+ * The digital rights are invalid.
*/
public static final int RIGHTS_INVALID = 0x01;
/**
- * Constant field signifies that the rights are expired for the content
+ * The digital rights have expired.
*/
public static final int RIGHTS_EXPIRED = 0x02;
/**
- * Constant field signifies that the rights are not acquired for the content
+ * The digital rights have not been acquired for the rights-protected content.
*/
public static final int RIGHTS_NOT_ACQUIRED = 0x03;
}
diff --git a/drm/java/android/drm/DrmSupportInfo.java b/drm/java/android/drm/DrmSupportInfo.java
old mode 100644
new mode 100755
index 0886af8..720c545
--- a/drm/java/android/drm/DrmSupportInfo.java
+++ b/drm/java/android/drm/DrmSupportInfo.java
@@ -20,11 +20,11 @@
import java.util.Iterator;
/**
- * This is an entity class which wraps the capability of each plug-in,
- * such as mimetype's and file suffixes it could handle.
- *
- * Plug-in developer could return the capability of the plugin by passing
- * {@link DrmSupportInfo} instance.
+ * An entity class that wraps the capability of each DRM plug-in (agent),
+ * such as the MIME type and file suffix the DRM plug-in can handle.
+ *<p>
+ * Plug-in developers can expose the capability of their plug-in by passing an instance of this
+ * class to an application.
*
*/
public class DrmSupportInfo {
@@ -33,47 +33,47 @@
private String mDescription = "";
/**
- * Add the mime-type to the support info such that respective plug-in is
- * capable of handling the given mime-type.
+ * Adds the specified MIME type to the list of MIME types this DRM plug-in supports.
*
- * @param mimeType MIME type
+ * @param mimeType MIME type that can be handles by this DRM plug-in.
*/
public void addMimeType(String mimeType) {
mMimeTypeList.add(mimeType);
}
/**
- * Add the file suffix to the support info such that respective plug-in is
- * capable of handling the given file suffix.
+ * Adds the specified file suffix to the list of file suffixes this DRM plug-in supports.
*
- * @param fileSuffix File suffix which can be handled
+ * @param fileSuffix File suffix that can be handled by this DRM plug-in.
*/
public void addFileSuffix(String fileSuffix) {
mFileSuffixList.add(fileSuffix);
}
/**
- * Returns the iterator to walk to through mime types of this object
+ * Retrieves an iterator object that you can use to iterate over the MIME types that
+ * this DRM plug-in supports.
*
- * @return Iterator object
+ * @return The iterator object
*/
public Iterator<String> getMimeTypeIterator() {
return mMimeTypeList.iterator();
}
/**
- * Returns the iterator to walk to through file suffixes of this object
+ * Retrieves an iterator object that you can use to iterate over the file suffixes that
+ * this DRM plug-in supports.
*
- * @return Iterator object
+ * @return The iterator object.
*/
public Iterator<String> getFileSuffixIterator() {
return mFileSuffixList.iterator();
}
/**
- * Set the unique description about the plugin
+ * Sets a description for the DRM plug-in (agent).
*
- * @param description Unique description
+ * @param description Unique description of plug-in.
*/
public void setDescription(String description) {
if (null != description) {
@@ -82,30 +82,28 @@
}
/**
- * Returns the unique description associated with the plugin
+ * Retrieves the DRM plug-in (agent) description.
*
- * @return Unique description
+ * @return The plug-in description.
*/
public String getDescriprition() {
return mDescription;
}
/**
- * Overridden hash code implementation
+ * Overridden hash code implementation.
*
- * @return Hash code value
+ * @return The hash code value.
*/
public int hashCode() {
return mFileSuffixList.hashCode() + mMimeTypeList.hashCode() + mDescription.hashCode();
}
/**
- * Overridden equals implementation
+ * Overridden <code>equals</code> implementation.
*
- * @param object The object to be compared
- * @return
- * true if equal
- * false if not equal
+ * @param object The object to be compared.
+ * @return True if equal; false if not equal.
*/
public boolean equals(Object object) {
boolean result = false;
@@ -119,12 +117,10 @@
}
/**
- * Returns whether given mime-type is supported or not
+ * Determines whether a given MIME type is supported.
*
- * @param mimeType MIME type
- * @return
- * true if mime type is supported
- * false if mime type is not supported
+ * @param mimeType MIME type.
+ * @return True if Mime type is supported; false if MIME type is not supported.
*/
/* package */ boolean isSupportedMimeType(String mimeType) {
if (null != mimeType && !mimeType.equals("")) {
@@ -139,12 +135,10 @@
}
/**
- * Returns whether given file suffix is supported or not
+ * Determines whether a given file suffix is supported.
*
- * @param fileSuffix File suffix
- * @return
- * true - if file suffix is supported
- * false - if file suffix is not supported
+ * @param fileSuffix File suffix.
+ * @return True if file suffix is supported; false if file suffix is not supported.
*/
/* package */ boolean isSupportedFileSuffix(String fileSuffix) {
return mFileSuffixList.contains(fileSuffix);
diff --git a/drm/java/android/drm/DrmUtils.java b/drm/java/android/drm/DrmUtils.java
old mode 100644
new mode 100755
index 8903485..dc5f1fa
--- a/drm/java/android/drm/DrmUtils.java
+++ b/drm/java/android/drm/DrmUtils.java
@@ -28,9 +28,11 @@
import java.util.Iterator;
/**
- * The utility class used in the DRM Framework. This inclueds APIs for file operations
- * and ExtendedMetadataParser for parsing extended metadata BLOB in DRM constraints.
- *
+ * A utility class that provides operations for parsing extended metadata embedded in
+ * DRM constraint information. If a DRM scheme has specific constraints beyond the standard
+ * constraints, the constraints will show up in the
+ * {@link DrmStore.ConstraintsColumns#EXTENDED_METADATA} key. You can use
+ * {@link DrmUtils.ExtendedMetadataParser} to iterate over those values.
*/
public class DrmUtils {
/* Should be used when we need to read from local file */
@@ -99,13 +101,10 @@
}
/**
- * Get an instance of ExtendedMetadataParser to be used for parsing
- * extended metadata BLOB in DRM constraints. <br>
+ * Gets an instance of {@link DrmUtils.ExtendedMetadataParser}, which can be used to parse
+ * extended metadata embedded in DRM constraint information.
*
- * extendedMetadata BLOB is retrieved by specifing
- * key DrmStore.ConstraintsColumns.EXTENDED_METADATA.
- *
- * @param extendedMetadata BLOB in which key-value pairs of extended metadata are embedded.
+ * @param extendedMetadata Object in which key-value pairs of extended metadata are embedded.
*
*/
public static ExtendedMetadataParser getExtendedMetadataParser(byte[] extendedMetadata) {
@@ -113,9 +112,10 @@
}
/**
- * Utility parser to parse the extended meta-data embedded inside DRM constraints<br><br>
- *
- * Usage example<br>
+ * Utility that parses extended metadata embedded in DRM constraint information.
+ *<p>
+ * Usage example:
+ *<p>
* byte[] extendedMetadata<br>
* =
* constraints.getAsByteArray(DrmStore.ConstraintsColumns.EXTENDED_METADATA);<br>
diff --git a/drm/java/android/drm/ProcessedData.java b/drm/java/android/drm/ProcessedData.java
old mode 100644
new mode 100755
index 579264f..06e03e7
--- a/drm/java/android/drm/ProcessedData.java
+++ b/drm/java/android/drm/ProcessedData.java
@@ -17,11 +17,11 @@
package android.drm;
/**
- * This is an entity class which wraps the result of transaction between
- * device and online DRM server by using {@link DrmManagerClient#processDrmInfo(DrmInfo)}
+ * An entity class that wraps the result of a
+ * {@link DrmManagerClient#processDrmInfo(DrmInfo) processDrmInfo()}
+ * transaction between a device and a DRM server.
*
- * In license acquisition scenario this class would hold the binary data
- * of rights information.
+ * In a license acquisition scenario this class holds the rights information in binary form.
*
*/
public class ProcessedData {
@@ -30,10 +30,10 @@
private String mSubscriptionId = "";
/**
- * constructor to create ProcessedData object with given parameters
+ * Creates a <code>ProcessedData</code> object with the given parameters.
*
- * @param data Rights data
- * @param accountId Account Id of the user
+ * @param data Rights data.
+ * @param accountId Account ID of the user.
*/
/* package */ ProcessedData(byte[] data, String accountId) {
mData = data;
@@ -41,11 +41,11 @@
}
/**
- * constructor to create ProcessedData object with given parameters
+ * Creates a <code>ProcessedData</code> object with the given parameters.
*
- * @param data Rights data
- * @param accountId Account Id of the user
- * @param subscriptionId Subscription Id of the user
+ * @param data Rights data.
+ * @param accountId Account ID of the user.
+ * @param subscriptionId Subscription ID of the user.
*/
/* package */ ProcessedData(byte[] data, String accountId, String subscriptionId) {
mData = data;
@@ -54,27 +54,27 @@
}
/**
- * Returns the processed data as a result.
+ * Retrieves the processed data.
*
- * @return Rights data associated
+ * @return The rights data.
*/
public byte[] getData() {
return mData;
}
/**
- * Returns the account-id associated with this object
+ * Retrieves the account ID associated with this object.
*
- * @return Account Id associated
+ * @return The account ID of the user.
*/
public String getAccountId() {
return mAccountId;
}
/**
- * Returns the subscription-id associated with this object
+ * Returns the subscription ID associated with this object.
*
- * @return Subscription Id associated
+ * @return The subscription ID of the user.
*/
public String getSubscriptionId() {
return mSubscriptionId;
diff --git a/drm/java/android/drm/package.html b/drm/java/android/drm/package.html
new file mode 100755
index 0000000..161d6e0
--- /dev/null
+++ b/drm/java/android/drm/package.html
@@ -0,0 +1,85 @@
+<HTML>
+<BODY>
+<p>Provides classes for managing DRM content and determining the capabilities of DRM plugins
+(agents). Common uses of the DRM API include:</p>
+<ul>
+ <li>Determining which DRM plug-ins (agents) are installed on a device.</li>
+ <li>Retrieving information about specific plug-ins, such as the MIME types and file suffixes
+ they support.</li>
+ <li>Registering a user or a device with an online DRM service.</li>
+ <li>Retrieving license constraints for rights-protected content.</li>
+ <li>Checking whether a user has the proper rights to play or use rights-protected
+ content.</li>
+ <li>Associating rights-protected content with its license so you can use the
+ {@link android.media.MediaPlayer} API to play the content.</li>
+</ul>
+
+<h2>DRM Overview</h2>
+
+<p>The Android platform provides an extensible DRM framework that lets applications manage
+rights-protected content according to the license constraints that are associated with the
+content. The DRM framework supports many DRM schemes; which DRM schemes a device supports
+is up to the device manufacturer.</p>
+
+<p>The Android DRM framework is implemented in two architectural layers (see figure below):</p>
+<ul>
+ <li>A DRM framework API, which is exposed to applications through the Android
+application framework and runs through the Dalvik VM for standard applications.</li>
+ <li>A native code DRM manager, which implements the DRM framework and exposes an
+interface for DRM plug-ins (agents) to handle rights management and decryption for various
+DRM schemes.</li>
+</ul>
+
+<img src="../../../images/drm_arch.png" alt="DRM architecture diagram" border="0"/>
+
+<p>For application developers, the DRM framework offers an abstract, unified API that
+simplifies the management of rights-protected content. The API hides the complexity of DRM
+operations and allows a consistent operation mode for both rights-protected and unprotected content
+across a variety of DRM schemes. For device manufacturers, content owners, and Internet digital
+media providers the DRM framework’s plugin architecture provides a means of adding support for a
+specific DRM scheme to the Android system.</p>
+
+<h2>Using the DRM API</h2>
+
+<p>In a typical DRM session, an Android application uses the DRM framework API to
+instantiate a {@link android.drm.DrmManagerClient}. The application calls various methods
+on the DRM client to query rights and perform other DRM-related tasks. Each
+{@link android.drm.DrmManagerClient} instance has its own unique ID, so the DRM manager is able to
+differentiate callers.</p>
+
+<p>Although each DRM plug-in may require a different sequence
+of API calls, the general call sequence for an application is as follows:</p>
+
+<ul>
+ <li>Register the device with an online DRM service.
+ <p>You can do this by first using the {@link android.drm.DrmManagerClient#acquireDrmInfo
+acquireDrmInfo()} method to acquire the registration information, and then using the {@link
+android.drm.DrmManagerClient#processDrmInfo processDrmInfo()} method to process the
+registration information.</p>
+ </li>
+ <li>Acquire the license that's associated with the rights-protected content.
+ <p>You can do this by first using the {@link android.drm.DrmManagerClient#acquireDrmInfo
+acquireDrmInfo()} method to acquire the license information, and then using the {@link
+android.drm.DrmManagerClient#processDrmInfo processDrmInfo()} method to process the
+license information. You can also use the {@link
+android.drm.DrmManagerClient#acquireRights acquireRights()} method.</p>
+ </li>
+ <li>Extract constraint information from the license.
+ <p>You can use the {@link android.drm.DrmManagerClient#getConstraints getConstraints()}
+ method to do this.</p>
+ </li>
+ <li>Associate the rights-protected content with its license.
+ <p>You can use the {@link android.drm.DrmManagerClient#saveRights saveRights()} method
+ to do this.</p>
+ </li>
+</ul>
+
+<p>After you make an association between the rights-protected content and its license,
+the DRM manager automatically handles rights management for that content. Specifically, the
+DRM manager will handle all further licensing checks when you attempt to play the content using
+the {@link android.media.MediaPlayer} API.</p>
+
+<p>To learn how to use the DRM API with a specific DRM plug-in, see the documentation provided
+by the plug-in developer.</p>
+</BODY>
+</HTML>
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPropertiesTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPropertiesTest.java
index 958bbb0..59783e5 100755
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPropertiesTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPropertiesTest.java
@@ -30,6 +30,7 @@
import android.test.suitebuilder.annotation.LargeTest;
import com.android.mediaframeworktest.MediaFrameworkTest;
import com.android.mediaframeworktest.VideoEditorHelper;
+import com.android.mediaframeworktest.MediaProfileReader;
public class MediaPropertiesTest extends
ActivityInstrumentationTestCase<MediaFrameworkTest> {
@@ -465,11 +466,17 @@
final String videoItemFilename = INPUT_FILE_PATH +
"WMV_V7_640x480_15fps_512Kbps_wma_V9_44khz_48Kbps_s_1_30.wmv";
boolean flagForException = false;
- try {
- new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
- MediaItem.RENDERING_MODE_BLACK_BORDER);
- } catch (IllegalArgumentException e) {
+ if (MediaProfileReader.getWMVEnable() == false) {
flagForException = true;
+ } else {
+ try {
+ new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
+ MediaItem.RENDERING_MODE_BLACK_BORDER);
+ } catch (IllegalArgumentException e) {
+ flagForException = true;
+ } catch (IOException e) {
+ flagForException = true;
+ }
}
assertTrue("Media Properties for a WMV File -- Unsupported file type",
flagForException);
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 14a6b96..fcb4c23 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -1415,10 +1415,13 @@
if (TextUtils.isEmpty(interfaceName)) return;
for (InetAddress gateway : p.getGateways()) {
- if (!NetworkUtils.addDefaultRoute(interfaceName, gateway) && DBG) {
- NetworkInfo networkInfo = nt.getNetworkInfo();
- log("addDefaultRoute for " + networkInfo.getTypeName() +
- " (" + interfaceName + "), GatewayAddr=" + gateway.getHostAddress());
+ if (NetworkUtils.addHostRoute(interfaceName, gateway, null) &&
+ NetworkUtils.addDefaultRoute(interfaceName, gateway)) {
+ if (DBG) {
+ NetworkInfo networkInfo = nt.getNetworkInfo();
+ log("addDefaultRoute for " + networkInfo.getTypeName() +
+ " (" + interfaceName + "), GatewayAddr=" + gateway.getHostAddress());
+ }
}
}
}
@@ -1430,10 +1433,12 @@
String interfaceName = p.getInterfaceName();
if (interfaceName != null) {
- if ((NetworkUtils.removeDefaultRoute(interfaceName) >= 0) && DBG) {
- NetworkInfo networkInfo = nt.getNetworkInfo();
- log("removeDefaultRoute for " + networkInfo.getTypeName() + " (" +
- interfaceName + ")");
+ if (NetworkUtils.removeDefaultRoute(interfaceName) >= 0) {
+ if (DBG) {
+ NetworkInfo networkInfo = nt.getNetworkInfo();
+ log("removeDefaultRoute for " + networkInfo.getTypeName() + " (" +
+ interfaceName + ")");
+ }
}
}
}