Merge "Do not show the dropdown unless there is something to show."
diff --git a/api/current.xml b/api/current.xml
index a8d1d06..1cdf0e9 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -112187,6 +112187,1517 @@
</method>
</interface>
</package>
+<package name="android.mtp"
+>
+<class name="MtpClient"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="MtpClient"
+ type="android.mtp.MtpClient"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+</constructor>
+<method name="addListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.mtp.MtpClient.Listener">
+</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="deleteObject"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="deviceName" type="java.lang.String">
+</parameter>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="getDevice"
+ return="android.mtp.MtpDevice"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="deviceName" type="java.lang.String">
+</parameter>
+</method>
+<method name="getDevice"
+ return="android.mtp.MtpDevice"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="id" type="int">
+</parameter>
+</method>
+<method name="getDeviceList"
+ return="java.util.List<android.mtp.MtpDevice>"
+ 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="deviceName" type="java.lang.String">
+</parameter>
+<parameter name="objectHandle" type="int">
+</parameter>
+<parameter name="objectSize" 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="deviceName" type="java.lang.String">
+</parameter>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="getObjectList"
+ return="java.util.List<android.mtp.MtpObjectInfo>"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="deviceName" type="java.lang.String">
+</parameter>
+<parameter name="storageId" type="int">
+</parameter>
+<parameter name="objectHandle" type="int">
+</parameter>
+</method>
+<method name="getStorageList"
+ return="java.util.List<android.mtp.MtpStorageInfo>"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="deviceName" type="java.lang.String">
+</parameter>
+</method>
+<method name="getThumbnail"
+ return="byte[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="deviceName" type="java.lang.String">
+</parameter>
+<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="deviceName" type="java.lang.String">
+</parameter>
+<parameter name="objectHandle" type="int">
+</parameter>
+<parameter name="destPath" type="java.lang.String">
+</parameter>
+</method>
+<method name="isCamera"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="device" type="android.hardware.UsbDevice">
+</parameter>
+</method>
+<method name="removeListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.mtp.MtpClient.Listener">
+</parameter>
+</method>
+</class>
+<interface name="MtpClient.Listener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="deviceAdded"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="device" type="android.mtp.MtpDevice">
+</parameter>
+</method>
+<method name="deviceRemoved"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="device" type="android.mtp.MtpDevice">
+</parameter>
+</method>
+</interface>
+<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.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="manager" type="android.hardware.UsbManager">
+</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"
@@ -264081,7 +265592,7 @@
deprecated="not deprecated"
visibility="public"
>
-<parameter name="arg0" type="T">
+<parameter name="t" type="T">
</parameter>
</method>
</interface>
diff --git a/media/java/android/mtp/MtpClient.java b/media/java/android/mtp/MtpClient.java
index 19ee92a..568ac94 100644
--- a/media/java/android/mtp/MtpClient.java
+++ b/media/java/android/mtp/MtpClient.java
@@ -32,10 +32,9 @@
import java.util.List;
/**
- * This class helps an application manage a list of connected MTP devices.
+ * This class helps an application manage a list of connected MTP or PTP devices.
* It listens for MTP devices being attached and removed from the USB host bus
* and notifies the application when the MTP device list changes.
- * {@hide}
*/
public class MtpClient {
@@ -76,12 +75,34 @@
}
};
+ /**
+ * An interface for being notified when MTP or PTP devices are attached
+ * or removed. In the current implementation, only PTP devices are supported.
+ */
public interface Listener {
+ /**
+ * Called when a new device has been added
+ *
+ * @param device the new device that was added
+ */
public void deviceAdded(MtpDevice device);
+
+ /**
+ * Called when a new device has been removed
+ *
+ * @param device the device that was removed
+ */
public void deviceRemoved(MtpDevice device);
}
- static public boolean isCamera(UsbDevice device) {
+ /**
+ * Tests to see if a {@link android.hardware.UsbDevice}
+ * supports the PTP protocol (typically used by digital cameras)
+ *
+ * @param device the device to test
+ * @return true if the device is a PTP device.
+ */
+ static public boolean isCamera(UsbDevice device) {
int count = device.getInterfaceCount();
for (int i = 0; i < count; i++) {
UsbInterface intf = device.getInterface(i);
@@ -94,16 +115,11 @@
return false;
}
- private MtpDevice openDevice(UsbDevice usbDevice) {
- if (isCamera(usbDevice)) {
- MtpDevice mtpDevice = new MtpDevice(usbDevice);
- if (mtpDevice.open(mUsbManager)) {
- return mtpDevice;
- }
- }
- return null;
- }
-
+ /**
+ * MtpClient constructor
+ *
+ * @param context the {@link android.content.Context} to use for the MtpClient
+ */
public MtpClient(Context context) {
mContext = context;
mUsbManager = (UsbManager)context.getSystemService(Context.USB_SERVICE);
@@ -124,6 +140,26 @@
}
}
+ /**
+ * Opens the {@link android.hardware.UsbDevice} for an MTP or PTP
+ * device and return an {@link android.mtp.MtpDevice} for it.
+ *
+ * @param device the device to open
+ * @return an MtpDevice for the device.
+ */
+ private MtpDevice openDevice(UsbDevice usbDevice) {
+ if (isCamera(usbDevice)) {
+ MtpDevice mtpDevice = new MtpDevice(usbDevice);
+ if (mtpDevice.open(mUsbManager)) {
+ return mtpDevice;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Closes all resources related to the MtpClient object
+ */
public void close() {
mContext.unregisterReceiver(mUsbReceiver);
}
@@ -137,6 +173,12 @@
}
}
+ /**
+ * Registers a {@link android.mtp.MtpClient.Listener} interface to receive
+ * notifications when MTP or PTP devices are added or removed.
+ *
+ * @param listener the listener to register
+ */
public void addListener(Listener listener) {
synchronized (mDeviceList) {
if (!mListeners.contains(listener)) {
@@ -145,18 +187,37 @@
}
}
+ /**
+ * Unregisters a {@link android.mtp.MtpClient.Listener} interface.
+ *
+ * @param listener the listener to unregister
+ */
public void removeListener(Listener listener) {
synchronized (mDeviceList) {
mListeners.remove(listener);
}
}
+ /**
+ * Retrieves an {@link android.mtp.MtpDevice} object for the USB device
+ * with the given name.
+ *
+ * @param deviceName the name of the USB device
+ * @return the MtpDevice, or null if it does not exist
+ */
public MtpDevice getDevice(String deviceName) {
synchronized (mDeviceList) {
return getDeviceLocked(deviceName);
}
}
+ /**
+ * Retrieves an {@link android.mtp.MtpDevice} object for the USB device
+ * with the given ID.
+ *
+ * @param id the ID of the USB device
+ * @return the MtpDevice, or null if it does not exist
+ */
public MtpDevice getDevice(int id) {
synchronized (mDeviceList) {
return getDeviceLocked(UsbDevice.getDeviceName(id));
@@ -172,12 +233,24 @@
return null;
}
+ /**
+ * Retrieves a list of all currently connected {@link android.mtp.MtpDevice}.
+ *
+ * @return the list of MtpDevices
+ */
public List<MtpDevice> getDeviceList() {
synchronized (mDeviceList) {
return new ArrayList<MtpDevice>(mDeviceList);
}
}
+ /**
+ * Retrieves a list of all {@link android.mtp.MtpStorageInfo}
+ * for the MTP or PTP device with the given USB device name
+ *
+ * @param deviceName the name of the USB device
+ * @return the list of MtpStorageInfo
+ */
public List<MtpStorageInfo> getStorageList(String deviceName) {
MtpDevice device = getDevice(deviceName);
if (device == null) {
@@ -201,6 +274,15 @@
return storageList;
}
+ /**
+ * Retrieves the {@link android.mtp.MtpObjectInfo} for an object on
+ * the MTP or PTP device with the given USB device name with the given
+ * object handle
+ *
+ * @param deviceName the name of the USB device
+ * @param objectHandle handle of the object to query
+ * @return the MtpObjectInfo
+ */
public MtpObjectInfo getObjectInfo(String deviceName, int objectHandle) {
MtpDevice device = getDevice(deviceName);
if (device == null) {
@@ -209,6 +291,13 @@
return device.getObjectInfo(objectHandle);
}
+ /**
+ * Deletes an object on the MTP or PTP device with the given USB device name.
+ *
+ * @param deviceName the name of the USB device
+ * @param objectHandle handle of the object to delete
+ * @return true if the deletion succeeds
+ */
public boolean deleteObject(String deviceName, int objectHandle) {
MtpDevice device = getDevice(deviceName);
if (device == null) {
@@ -217,6 +306,19 @@
return device.deleteObject(objectHandle);
}
+ /**
+ * Retrieves a list of {@link android.mtp.MtpObjectInfo} for all objects
+ * on the MTP or PTP device with the given USB device name and given storage ID
+ * and/or object handle.
+ * If the object handle is zero, then all objects in the root of the storage unit
+ * will be returned. Otherwise, all immediate children of the object will be returned.
+ * If the storage ID is also zero, then all objects on all storage units will be returned.
+ *
+ * @param deviceName the name of the USB device
+ * @param storageId the ID of the storage unit to query, or zero for all
+ * @param objectHandle the handle of the parent object to query, or zero for the storage root
+ * @return the list of MtpObjectInfo
+ */
public List<MtpObjectInfo> getObjectList(String deviceName, int storageId, int objectHandle) {
MtpDevice device = getDevice(deviceName);
if (device == null) {
@@ -244,6 +346,15 @@
return objectList;
}
+ /**
+ * Returns the data for an object as a byte array.
+ *
+ * @param deviceName the name of the USB device containing the object
+ * @param objectHandle handle of the object to read
+ * @param objectSize the size of the object (this should match
+ * {@link android.mtp.MtpObjectInfo#getCompressedSize}
+ * @return the object's data, or null if reading fails
+ */
public byte[] getObject(String deviceName, int objectHandle, int objectSize) {
MtpDevice device = getDevice(deviceName);
if (device == null) {
@@ -252,6 +363,13 @@
return device.getObject(objectHandle, objectSize);
}
+ /**
+ * Returns the thumbnail data for an object as a byte array.
+ *
+ * @param deviceName the name of the USB device containing the object
+ * @param objectHandle handle of the object to read
+ * @return the object's thumbnail, or null if reading fails
+ */
public byte[] getThumbnail(String deviceName, int objectHandle) {
MtpDevice device = getDevice(deviceName);
if (device == null) {
@@ -260,6 +378,16 @@
return device.getThumbnail(objectHandle);
}
+ /**
+ * Copies the data for an object to a file in external storage.
+ *
+ * @param deviceName the name of the USB device containing the object
+ * @param objectHandle handle of the object to read
+ * @param destPath path to destination for the file transfer.
+ * This path should be in the external storage as defined by
+ * {@link android.os.Environment#getExternalStorageDirectory}
+ * @return true if the file transfer succeeds
+ */
public boolean importFile(String deviceName, int objectHandle, String destPath) {
MtpDevice device = getDevice(deviceName);
if (device == null) {
diff --git a/media/java/android/mtp/MtpConstants.java b/media/java/android/mtp/MtpConstants.java
index 8fa47ee..ad67bb9 100644
--- a/media/java/android/mtp/MtpConstants.java
+++ b/media/java/android/mtp/MtpConstants.java
@@ -17,151 +17,265 @@
package android.mtp;
/**
- * {@hide}
+ * A class containing constants in the MTP and PTP specifications.
*/
public final class MtpConstants {
-// MTP Data Types
+ // MTP Data Types
+ /** @hide */
public static final int TYPE_UNDEFINED = 0x0000;
+ /** @hide */
public static final int TYPE_INT8 = 0x0001;
+ /** @hide */
public static final int TYPE_UINT8 = 0x0002;
+ /** @hide */
public static final int TYPE_INT16 = 0x0003;
+ /** @hide */
public static final int TYPE_UINT16 = 0x0004;
+ /** @hide */
public static final int TYPE_INT32 = 0x0005;
+ /** @hide */
public static final int TYPE_UINT32 = 0x0006;
+ /** @hide */
public static final int TYPE_INT64 = 0x0007;
+ /** @hide */
public static final int TYPE_UINT64 = 0x0008;
+ /** @hide */
public static final int TYPE_INT128 = 0x0009;
+ /** @hide */
public static final int TYPE_UINT128 = 0x000A;
+ /** @hide */
public static final int TYPE_AINT8 = 0x4001;
+ /** @hide */
public static final int TYPE_AUINT8 = 0x4002;
+ /** @hide */
public static final int TYPE_AINT16 = 0x4003;
+ /** @hide */
public static final int TYPE_AUINT16 = 0x4004;
+ /** @hide */
public static final int TYPE_AINT32 = 0x4005;
+ /** @hide */
public static final int TYPE_AUINT32 = 0x4006;
+ /** @hide */
public static final int TYPE_AINT64 = 0x4007;
+ /** @hide */
public static final int TYPE_AUINT64 = 0x4008;
+ /** @hide */
public static final int TYPE_AINT128 = 0x4009;
+ /** @hide */
public static final int TYPE_AUINT128 = 0x400A;
+ /** @hide */
public static final int TYPE_STR = 0xFFFF;
-// MTP Response Codes
+ // MTP Response Codes
+ /** @hide */
public static final int RESPONSE_UNDEFINED = 0x2000;
+ /** @hide */
public static final int RESPONSE_OK = 0x2001;
+ /** @hide */
public static final int RESPONSE_GENERAL_ERROR = 0x2002;
+ /** @hide */
public static final int RESPONSE_SESSION_NOT_OPEN = 0x2003;
+ /** @hide */
public static final int RESPONSE_INVALID_TRANSACTION_ID = 0x2004;
+ /** @hide */
public static final int RESPONSE_OPERATION_NOT_SUPPORTED = 0x2005;
+ /** @hide */
public static final int RESPONSE_PARAMETER_NOT_SUPPORTED = 0x2006;
+ /** @hide */
public static final int RESPONSE_INCOMPLETE_TRANSFER = 0x2007;
+ /** @hide */
public static final int RESPONSE_INVALID_STORAGE_ID = 0x2008;
+ /** @hide */
public static final int RESPONSE_INVALID_OBJECT_HANDLE = 0x2009;
+ /** @hide */
public static final int RESPONSE_DEVICE_PROP_NOT_SUPPORTED = 0x200A;
+ /** @hide */
public static final int RESPONSE_INVALID_OBJECT_FORMAT_CODE = 0x200B;
+ /** @hide */
public static final int RESPONSE_STORAGE_FULL = 0x200C;
+ /** @hide */
public static final int RESPONSE_OBJECT_WRITE_PROTECTED = 0x200D;
+ /** @hide */
public static final int RESPONSE_STORE_READ_ONLY = 0x200E;
+ /** @hide */
public static final int RESPONSE_ACCESS_DENIED = 0x200F;
+ /** @hide */
public static final int RESPONSE_NO_THUMBNAIL_PRESENT = 0x2010;
+ /** @hide */
public static final int RESPONSE_SELF_TEST_FAILED = 0x2011;
+ /** @hide */
public static final int RESPONSE_PARTIAL_DELETION = 0x2012;
+ /** @hide */
public static final int RESPONSE_STORE_NOT_AVAILABLE = 0x2013;
+ /** @hide */
public static final int RESPONSE_SPECIFICATION_BY_FORMAT_UNSUPPORTED = 0x2014;
+ /** @hide */
public static final int RESPONSE_NO_VALID_OBJECT_INFO = 0x2015;
+ /** @hide */
public static final int RESPONSE_INVALID_CODE_FORMAT = 0x2016;
+ /** @hide */
public static final int RESPONSE_UNKNOWN_VENDOR_CODE = 0x2017;
+ /** @hide */
public static final int RESPONSE_CAPTURE_ALREADY_TERMINATED = 0x2018;
+ /** @hide */
public static final int RESPONSE_DEVICE_BUSY = 0x2019;
+ /** @hide */
public static final int RESPONSE_INVALID_PARENT_OBJECT = 0x201A;
+ /** @hide */
public static final int RESPONSE_INVALID_DEVICE_PROP_FORMAT = 0x201B;
+ /** @hide */
public static final int RESPONSE_INVALID_DEVICE_PROP_VALUE = 0x201C;
+ /** @hide */
public static final int RESPONSE_INVALID_PARAMETER = 0x201D;
+ /** @hide */
public static final int RESPONSE_SESSION_ALREADY_OPEN = 0x201E;
+ /** @hide */
public static final int RESPONSE_TRANSACTION_CANCELLED = 0x201F;
+ /** @hide */
public static final int RESPONSE_SPECIFICATION_OF_DESTINATION_UNSUPPORTED = 0x2020;
+ /** @hide */
public static final int RESPONSE_INVALID_OBJECT_PROP_CODE = 0xA801;
+ /** @hide */
public static final int RESPONSE_INVALID_OBJECT_PROP_FORMAT = 0xA802;
+ /** @hide */
public static final int RESPONSE_INVALID_OBJECT_PROP_VALUE = 0xA803;
+ /** @hide */
public static final int RESPONSE_INVALID_OBJECT_REFERENCE = 0xA804;
+ /** @hide */
public static final int RESPONSE_GROUP_NOT_SUPPORTED = 0xA805;
+ /** @hide */
public static final int RESPONSE_INVALID_DATASET = 0xA806;
+ /** @hide */
public static final int RESPONSE_SPECIFICATION_BY_GROUP_UNSUPPORTED = 0xA807;
+ /** @hide */
public static final int RESPONSE_SPECIFICATION_BY_DEPTH_UNSUPPORTED = 0xA808;
+ /** @hide */
public static final int RESPONSE_OBJECT_TOO_LARGE = 0xA809;
+ /** @hide */
public static final int RESPONSE_OBJECT_PROP_NOT_SUPPORTED = 0xA80A;
// MTP format codes
+ /** Undefined format code */
public static final int FORMAT_UNDEFINED = 0x3000;
+ /** Format code for associations (folders and directories) */
public static final int FORMAT_ASSOCIATION = 0x3001;
+ /** Format code for script files */
public static final int FORMAT_SCRIPT = 0x3002;
+ /** Format code for executable files */
public static final int FORMAT_EXECUTABLE = 0x3003;
+ /** Format code for text files */
public static final int FORMAT_TEXT = 0x3004;
+ /** Format code for HTML files */
public static final int FORMAT_HTML = 0x3005;
+ /** Format code for DPOF files */
public static final int FORMAT_DPOF = 0x3006;
+ /** Format code for AIFF audio files */
public static final int FORMAT_AIFF = 0x3007;
+ /** Format code for WAV audio files */
public static final int FORMAT_WAV = 0x3008;
+ /** Format code for MP3 audio files */
public static final int FORMAT_MP3 = 0x3009;
+ /** Format code for AVI video files */
public static final int FORMAT_AVI = 0x300A;
+ /** Format code for MPEG video files */
public static final int FORMAT_MPEG = 0x300B;
+ /** Format code for ASF files */
public static final int FORMAT_ASF = 0x300C;
- public static final int FORMAT_DEFINED = 0x3800;
+ /** Format code for JPEG image files */
public static final int FORMAT_EXIF_JPEG = 0x3801;
+ /** Format code for TIFF EP image files */
public static final int FORMAT_TIFF_EP = 0x3802;
- public static final int FORMAT_FLASHPIX = 0x3803;
+ /** Format code for BMP image files */
public static final int FORMAT_BMP = 0x3804;
- public static final int FORMAT_CIFF = 0x3805;
+ /** Format code for GIF image files */
public static final int FORMAT_GIF = 0x3807;
+ /** Format code for JFIF image files */
public static final int FORMAT_JFIF = 0x3808;
- public static final int FORMAT_CD = 0x3809;
+ /** Format code for PICT image files */
public static final int FORMAT_PICT = 0x380A;
+ /** Format code for PNG image files */
public static final int FORMAT_PNG = 0x380B;
+ /** Format code for TIFF image files */
public static final int FORMAT_TIFF = 0x380D;
- public static final int FORMAT_TIFF_IT = 0x380E;
+ /** Format code for JP2 files */
public static final int FORMAT_JP2 = 0x380F;
+ /** Format code for JPX files */
public static final int FORMAT_JPX = 0x3810;
+ /** Format code for firmware files */
public static final int FORMAT_UNDEFINED_FIRMWARE = 0xB802;
+ /** Format code for Windows image files */
public static final int FORMAT_WINDOWS_IMAGE_FORMAT = 0xB881;
+ /** Format code for undefined audio files files */
public static final int FORMAT_UNDEFINED_AUDIO = 0xB900;
+ /** Format code for WMA audio files */
public static final int FORMAT_WMA = 0xB901;
+ /** Format code for OGG audio files */
public static final int FORMAT_OGG = 0xB902;
+ /** Format code for AAC audio files */
public static final int FORMAT_AAC = 0xB903;
+ /** Format code for Audible audio files */
public static final int FORMAT_AUDIBLE = 0xB904;
+ /** Format code for FLAC audio files */
public static final int FORMAT_FLAC = 0xB906;
+ /** Format code for undefined video files */
public static final int FORMAT_UNDEFINED_VIDEO = 0xB980;
+ /** Format code for WMV video files */
public static final int FORMAT_WMV = 0xB981;
+ /** Format code for MP4 files */
public static final int FORMAT_MP4_CONTAINER = 0xB982;
+ /** Format code for MP2 files */
public static final int FORMAT_MP2 = 0xB983;
+ /** Format code for 3GP files */
public static final int FORMAT_3GP_CONTAINER = 0xB984;
+ /** Format code for undefined collections */
public static final int FORMAT_UNDEFINED_COLLECTION = 0xBA00;
+ /** Format code for multimedia albums */
public static final int FORMAT_ABSTRACT_MULTIMEDIA_ALBUM = 0xBA01;
+ /** Format code for image albums */
public static final int FORMAT_ABSTRACT_IMAGE_ALBUM = 0xBA02;
+ /** Format code for audio albums */
public static final int FORMAT_ABSTRACT_AUDIO_ALBUM = 0xBA03;
+ /** Format code for video albums */
public static final int FORMAT_ABSTRACT_VIDEO_ALBUM = 0xBA04;
+ /** Format code for abstract AV playlists */
public static final int FORMAT_ABSTRACT_AV_PLAYLIST = 0xBA05;
- public static final int FORMAT_ABSTRACT_CONTACT_GROUP = 0xBA06;
- public static final int FORMAT_ABSTRACT_MESSAGE_FOLDER = 0xBA07;
- public static final int FORMAT_ABSTRACT_CHAPTERED_PRODUCTION = 0xBA08;
+ /** Format code for abstract audio playlists */
public static final int FORMAT_ABSTRACT_AUDIO_PLAYLIST = 0xBA09;
+ /** Format code for abstract video playlists */
public static final int FORMAT_ABSTRACT_VIDEO_PLAYLIST = 0xBA0A;
+ /** Format code for abstract mediacasts */
public static final int FORMAT_ABSTRACT_MEDIACAST = 0xBA0B;
+ /** Format code for WPL playlist files */
public static final int FORMAT_WPL_PLAYLIST = 0xBA10;
+ /** Format code for M3u playlist files */
public static final int FORMAT_M3U_PLAYLIST = 0xBA11;
+ /** Format code for MPL playlist files */
public static final int FORMAT_MPL_PLAYLIST = 0xBA12;
+ /** Format code for ASX playlist files */
public static final int FORMAT_ASX_PLAYLIST = 0xBA13;
+ /** Format code for PLS playlist files */
public static final int FORMAT_PLS_PLAYLIST = 0xBA14;
+ /** Format code for undefined document files */
public static final int FORMAT_UNDEFINED_DOCUMENT = 0xBA80;
+ /** Format code for abstract documents */
public static final int FORMAT_ABSTRACT_DOCUMENT = 0xBA81;
+ /** Format code for XML documents */
public static final int FORMAT_XML_DOCUMENT = 0xBA82;
+ /** Format code for MS Word documents */
public static final int FORMAT_MS_WORD_DOCUMENT = 0xBA83;
- public static final int FORMAT_MHT_COMPILED_HTML_DOCUMENT = 0xBA84;
+ /** Format code for MS Excel spreadsheets */
public static final int FORMAT_MS_EXCEL_SPREADSHEET = 0xBA85;
+ /** Format code for MS PowerPoint presentatiosn */
public static final int FORMAT_MS_POWERPOINT_PRESENTATION = 0xBA86;
- public static final int FORMAT_UNDEFINED_MESSAGE = 0xBB00;
- public static final int FORMAT_ABSTRACT_MESSSAGE = 0xBB01;
- public static final int FORMAT_UNDEFINED_CONTACT = 0xBB80;
- public static final int FORMAT_ABSTRACT_CONTACT = 0xBB81;
- public static final int FORMAT_VCARD_2 = 0xBB82;
+ /**
+ * Returns true if the object is abstract (that is, it has no representation
+ * in the underlying file system.
+ *
+ * @param format the format of the object
+ * @return true if the object is abstract
+ */
public static boolean isAbstractObject(int format) {
switch (format) {
case FORMAT_ABSTRACT_MULTIMEDIA_ALBUM:
@@ -169,15 +283,10 @@
case FORMAT_ABSTRACT_AUDIO_ALBUM:
case FORMAT_ABSTRACT_VIDEO_ALBUM:
case FORMAT_ABSTRACT_AV_PLAYLIST:
- case FORMAT_ABSTRACT_CONTACT_GROUP:
- case FORMAT_ABSTRACT_MESSAGE_FOLDER:
- case FORMAT_ABSTRACT_CHAPTERED_PRODUCTION:
case FORMAT_ABSTRACT_AUDIO_PLAYLIST:
case FORMAT_ABSTRACT_VIDEO_PLAYLIST:
case FORMAT_ABSTRACT_MEDIACAST:
case FORMAT_ABSTRACT_DOCUMENT:
- case FORMAT_ABSTRACT_MESSSAGE:
- case FORMAT_ABSTRACT_CONTACT:
return true;
default:
return false;
@@ -185,223 +294,259 @@
}
// MTP object properties
+ /** @hide */
public static final int PROPERTY_STORAGE_ID = 0xDC01;
+ /** @hide */
public static final int PROPERTY_OBJECT_FORMAT = 0xDC02;
+ /** @hide */
public static final int PROPERTY_PROTECTION_STATUS = 0xDC03;
+ /** @hide */
public static final int PROPERTY_OBJECT_SIZE = 0xDC04;
+ /** @hide */
public static final int PROPERTY_ASSOCIATION_TYPE = 0xDC05;
+ /** @hide */
public static final int PROPERTY_ASSOCIATION_DESC = 0xDC06;
+ /** @hide */
public static final int PROPERTY_OBJECT_FILE_NAME = 0xDC07;
+ /** @hide */
public static final int PROPERTY_DATE_CREATED = 0xDC08;
+ /** @hide */
public static final int PROPERTY_DATE_MODIFIED = 0xDC09;
+ /** @hide */
public static final int PROPERTY_KEYWORDS = 0xDC0A;
+ /** @hide */
public static final int PROPERTY_PARENT_OBJECT = 0xDC0B;
+ /** @hide */
public static final int PROPERTY_ALLOWED_FOLDER_CONTENTS = 0xDC0C;
+ /** @hide */
public static final int PROPERTY_HIDDEN = 0xDC0D;
+ /** @hide */
public static final int PROPERTY_SYSTEM_OBJECT = 0xDC0E;
+ /** @hide */
public static final int PROPERTY_PERSISTENT_UID = 0xDC41;
+ /** @hide */
public static final int PROPERTY_SYNC_ID = 0xDC42;
+ /** @hide */
public static final int PROPERTY_PROPERTY_BAG = 0xDC43;
+ /** @hide */
public static final int PROPERTY_NAME = 0xDC44;
+ /** @hide */
public static final int PROPERTY_CREATED_BY = 0xDC45;
+ /** @hide */
public static final int PROPERTY_ARTIST = 0xDC46;
+ /** @hide */
public static final int PROPERTY_DATE_AUTHORED = 0xDC47;
+ /** @hide */
public static final int PROPERTY_DESCRIPTION = 0xDC48;
+ /** @hide */
public static final int PROPERTY_URL_REFERENCE = 0xDC49;
+ /** @hide */
public static final int PROPERTY_LANGUAGE_LOCALE = 0xDC4A;
+ /** @hide */
public static final int PROPERTY_COPYRIGHT_INFORMATION = 0xDC4B;
+ /** @hide */
public static final int PROPERTY_SOURCE = 0xDC4C;
+ /** @hide */
public static final int PROPERTY_ORIGIN_LOCATION = 0xDC4D;
+ /** @hide */
public static final int PROPERTY_DATE_ADDED = 0xDC4E;
+ /** @hide */
public static final int PROPERTY_NON_CONSUMABLE = 0xDC4F;
+ /** @hide */
public static final int PROPERTY_CORRUPT_UNPLAYABLE = 0xDC50;
+ /** @hide */
public static final int PROPERTY_PRODUCER_SERIAL_NUMBER = 0xDC51;
+ /** @hide */
public static final int PROPERTY_REPRESENTATIVE_SAMPLE_FORMAT = 0xDC81;
+ /** @hide */
public static final int PROPERTY_REPRESENTATIVE_SAMPLE_SIZE = 0xDC82;
+ /** @hide */
public static final int PROPERTY_REPRESENTATIVE_SAMPLE_HEIGHT = 0xDC83;
+ /** @hide */
public static final int PROPERTY_REPRESENTATIVE_SAMPLE_WIDTH = 0xDC84;
+ /** @hide */
public static final int PROPERTY_REPRESENTATIVE_SAMPLE_DURATION = 0xDC85;
+ /** @hide */
public static final int PROPERTY_REPRESENTATIVE_SAMPLE_DATA = 0xDC86;
+ /** @hide */
public static final int PROPERTY_WIDTH = 0xDC87;
+ /** @hide */
public static final int PROPERTY_HEIGHT = 0xDC88;
+ /** @hide */
public static final int PROPERTY_DURATION = 0xDC89;
+ /** @hide */
public static final int PROPERTY_RATING = 0xDC8A;
+ /** @hide */
public static final int PROPERTY_TRACK = 0xDC8B;
+ /** @hide */
public static final int PROPERTY_GENRE = 0xDC8C;
+ /** @hide */
public static final int PROPERTY_CREDITS = 0xDC8D;
+ /** @hide */
public static final int PROPERTY_LYRICS = 0xDC8E;
+ /** @hide */
public static final int PROPERTY_SUBSCRIPTION_CONTENT_ID = 0xDC8F;
+ /** @hide */
public static final int PROPERTY_PRODUCED_BY = 0xDC90;
+ /** @hide */
public static final int PROPERTY_USE_COUNT = 0xDC91;
+ /** @hide */
public static final int PROPERTY_SKIP_COUNT = 0xDC92;
+ /** @hide */
public static final int PROPERTY_LAST_ACCESSED = 0xDC93;
+ /** @hide */
public static final int PROPERTY_PARENTAL_RATING = 0xDC94;
+ /** @hide */
public static final int PROPERTY_META_GENRE = 0xDC95;
+ /** @hide */
public static final int PROPERTY_COMPOSER = 0xDC96;
+ /** @hide */
public static final int PROPERTY_EFFECTIVE_RATING = 0xDC97;
+ /** @hide */
public static final int PROPERTY_SUBTITLE = 0xDC98;
+ /** @hide */
public static final int PROPERTY_ORIGINAL_RELEASE_DATE = 0xDC99;
+ /** @hide */
public static final int PROPERTY_ALBUM_NAME = 0xDC9A;
+ /** @hide */
public static final int PROPERTY_ALBUM_ARTIST = 0xDC9B;
+ /** @hide */
public static final int PROPERTY_MOOD = 0xDC9C;
+ /** @hide */
public static final int PROPERTY_DRM_STATUS = 0xDC9D;
+ /** @hide */
public static final int PROPERTY_SUB_DESCRIPTION = 0xDC9E;
+ /** @hide */
public static final int PROPERTY_IS_CROPPED = 0xDCD1;
+ /** @hide */
public static final int PROPERTY_IS_COLOUR_CORRECTED = 0xDCD2;
+ /** @hide */
public static final int PROPERTY_IMAGE_BIT_DEPTH = 0xDCD3;
+ /** @hide */
public static final int PROPERTY_F_NUMBER = 0xDCD4;
+ /** @hide */
public static final int PROPERTY_EXPOSURE_TIME = 0xDCD5;
+ /** @hide */
public static final int PROPERTY_EXPOSURE_INDEX = 0xDCD6;
+ /** @hide */
public static final int PROPERTY_TOTAL_BITRATE = 0xDE91;
+ /** @hide */
public static final int PROPERTY_BITRATE_TYPE = 0xDE92;
+ /** @hide */
public static final int PROPERTY_SAMPLE_RATE = 0xDE93;
+ /** @hide */
public static final int PROPERTY_NUMBER_OF_CHANNELS = 0xDE94;
+ /** @hide */
public static final int PROPERTY_AUDIO_BIT_DEPTH = 0xDE95;
+ /** @hide */
public static final int PROPERTY_SCAN_TYPE = 0xDE97;
+ /** @hide */
public static final int PROPERTY_AUDIO_WAVE_CODEC = 0xDE99;
+ /** @hide */
public static final int PROPERTY_AUDIO_BITRATE = 0xDE9A;
+ /** @hide */
public static final int PROPERTY_VIDEO_FOURCC_CODEC = 0xDE9B;
+ /** @hide */
public static final int PROPERTY_VIDEO_BITRATE = 0xDE9C;
+ /** @hide */
public static final int PROPERTY_FRAMES_PER_THOUSAND_SECONDS = 0xDE9D;
+ /** @hide */
public static final int PROPERTY_KEYFRAME_DISTANCE = 0xDE9E;
+ /** @hide */
public static final int PROPERTY_BUFFER_SIZE = 0xDE9F;
+ /** @hide */
public static final int PROPERTY_ENCODING_QUALITY = 0xDEA0;
+ /** @hide */
public static final int PROPERTY_ENCODING_PROFILE = 0xDEA1;
+ /** @hide */
public static final int PROPERTY_DISPLAY_NAME = 0xDCE0;
- public static final int PROPERTY_BODY_TEXT = 0xDCE1;
- public static final int PROPERTY_SUBJECT = 0xDCE2;
- public static final int PROPERTY_PRIORITY = 0xDCE3;
- public static final int PROPERTY_GIVEN_NAME = 0xDD00;
- public static final int PROPERTY_MIDDLE_NAMES = 0xDD01;
- public static final int PROPERTY_FAMILY_NAME = 0xDD02;
- public static final int PROPERTY_PREFIX = 0xDD03;
- public static final int PROPERTY_SUFFIX = 0xDD04;
- public static final int PROPERTY_PHONETIC_GIVEN_NAME = 0xDD05;
- public static final int PROPERTY_PHONETIC_FAMILY_NAME = 0xDD06;
- public static final int PROPERTY_EMAIL_PRIMARY = 0xDD07;
- public static final int PROPERTY_EMAIL_PERSONAL_1 = 0xDD08;
- public static final int PROPERTY_EMAIL_PERSONAL_2 = 0xDD09;
- public static final int PROPERTY_EMAIL_BUSINESS_1 = 0xDD0A;
- public static final int PROPERTY_EMAIL_BUSINESS_2 = 0xDD0B;
- public static final int PROPERTY_EMAIL_OTHERS = 0xDD0C;
- public static final int PROPERTY_PHONE_NUMBER_PRIMARY = 0xDD0D;
- public static final int PROPERTY_PHONE_NUMBER_PERSONAL = 0xDD0E;
- public static final int PROPERTY_PHONE_NUMBER_PERSONAL_2 = 0xDD0F;
- public static final int PROPERTY_PHONE_NUMBER_BUSINESS = 0xDD10;
- public static final int PROPERTY_PHONE_NUMBER_BUSINESS_2 = 0xDD11;
- public static final int PROPERTY_PHONE_NUMBER_MOBILE= 0xDD12;
- public static final int PROPERTY_PHONE_NUMBER_MOBILE_2 = 0xDD13;
- public static final int PROPERTY_FAX_NUMBER_PRIMARY = 0xDD14;
- public static final int PROPERTY_FAX_NUMBER_PERSONAL= 0xDD15;
- public static final int PROPERTY_FAX_NUMBER_BUSINESS= 0xDD16;
- public static final int PROPERTY_PAGER_NUMBER = 0xDD17;
- public static final int PROPERTY_PHONE_NUMBER_OTHERS= 0xDD18;
- public static final int PROPERTY_PRIMARY_WEB_ADDRESS= 0xDD19;
- public static final int PROPERTY_PERSONAL_WEB_ADDRESS = 0xDD1A;
- public static final int PROPERTY_BUSINESS_WEB_ADDRESS = 0xDD1B;
- public static final int PROPERTY_INSTANT_MESSANGER_ADDRESS = 0xDD1C;
- public static final int PROPERTY_INSTANT_MESSANGER_ADDRESS_2 = 0xDD1D;
- public static final int PROPERTY_INSTANT_MESSANGER_ADDRESS_3 = 0xDD1E;
- public static final int PROPERTY_POSTAL_ADDRESS_PERSONAL_FULL = 0xDD1F;
- public static final int PROPERTY_POSTAL_ADDRESS_PERSONAL_LINE_1 = 0xDD20;
- public static final int PROPERTY_POSTAL_ADDRESS_PERSONAL_LINE_2 = 0xDD21;
- public static final int PROPERTY_POSTAL_ADDRESS_PERSONAL_CITY = 0xDD22;
- public static final int PROPERTY_POSTAL_ADDRESS_PERSONAL_REGION = 0xDD23;
- public static final int PROPERTY_POSTAL_ADDRESS_PERSONAL_POSTAL_CODE = 0xDD24;
- public static final int PROPERTY_POSTAL_ADDRESS_PERSONAL_COUNTRY = 0xDD25;
- public static final int PROPERTY_POSTAL_ADDRESS_BUSINESS_FULL = 0xDD26;
- public static final int PROPERTY_POSTAL_ADDRESS_BUSINESS_LINE_1 = 0xDD27;
- public static final int PROPERTY_POSTAL_ADDRESS_BUSINESS_LINE_2 = 0xDD28;
- public static final int PROPERTY_POSTAL_ADDRESS_BUSINESS_CITY = 0xDD29;
- public static final int PROPERTY_POSTAL_ADDRESS_BUSINESS_REGION = 0xDD2A;
- public static final int PROPERTY_POSTAL_ADDRESS_BUSINESS_POSTAL_CODE = 0xDD2B;
- public static final int PROPERTY_POSTAL_ADDRESS_BUSINESS_COUNTRY = 0xDD2C;
- public static final int PROPERTY_POSTAL_ADDRESS_OTHER_FULL = 0xDD2D;
- public static final int PROPERTY_POSTAL_ADDRESS_OTHER_LINE_1 = 0xDD2E;
- public static final int PROPERTY_POSTAL_ADDRESS_OTHER_LINE_2 = 0xDD2F;
- public static final int PROPERTY_POSTAL_ADDRESS_OTHER_CITY = 0xDD30;
- public static final int PROPERTY_POSTAL_ADDRESS_OTHER_REGION = 0xDD31;
- public static final int PROPERTY_POSTAL_ADDRESS_OTHER_POSTAL_CODE = 0xDD32;
- public static final int PROPERTY_POSTAL_ADDRESS_OTHER_COUNTRY = 0xDD33;
- public static final int PROPERTY_ORGANIZATION_NAME = 0xDD34;
- public static final int PROPERTY_PHONETIC_ORGANIZATION_NAME = 0xDD35;
- public static final int PROPERTY_ROLE = 0xDD36;
- public static final int PROPERTY_BIRTHDATE = 0xDD37;
- public static final int PROPERTY_MESSAGE_TO = 0xDD40;
- public static final int PROPERTY_MESSAGE_CC = 0xDD41;
- public static final int PROPERTY_MESSAGE_BCC = 0xDD42;
- public static final int PROPERTY_MESSAGE_READ = 0xDD43;
- public static final int PROPERTY_MESSAGE_RECEIVED_TIME = 0xDD44;
- public static final int PROPERTY_MESSAGE_SENDER = 0xDD45;
- public static final int PROPERTY_ACTIVITY_BEGIN_TIME = 0xDD50;
- public static final int PROPERTY_ACTIVITY_END_TIME = 0xDD51;
- public static final int PROPERTY_ACTIVITY_LOCATION = 0xDD52;
- public static final int PROPERTY_ACTIVITY_REQUIRED_ATTENDEES = 0xDD54;
- public static final int PROPERTY_ACTIVITY_OPTIONAL_ATTENDEES = 0xDD55;
- public static final int PROPERTY_ACTIVITY_RESOURCES = 0xDD56;
- public static final int PROPERTY_ACTIVITY_ACCEPTED = 0xDD57;
- public static final int PROPERTY_ACTIVITY_TENTATIVE = 0xDD58;
- public static final int PROPERTY_ACTIVITY_DECLINED = 0xDD59;
- public static final int PROPERTY_ACTIVITY_REMAINDER_TIME = 0xDD5A;
- public static final int PROPERTY_ACTIVITY_OWNER = 0xDD5B;
- public static final int PROPERTY_ACTIVITY_STATUS = 0xDD5C;
- public static final int PROPERTY_OWNER = 0xDD5D;
- public static final int PROPERTY_EDITOR = 0xDD5E;
- public static final int PROPERTY_WEBMASTER = 0xDD5F;
- public static final int PROPERTY_URL_SOURCE = 0xDD60;
- public static final int PROPERTY_URL_DESTINATION = 0xDD61;
- public static final int PROPERTY_TIME_BOOKMARK = 0xDD62;
- public static final int PROPERTY_OBJECT_BOOKMARK = 0xDD63;
- public static final int PROPERTY_BYTE_BOOKMARK = 0xDD64;
- public static final int PROPERTY_LAST_BUILD_DATE = 0xDD70;
- public static final int PROPERTY_TIME_TO_LIVE = 0xDD71;
- public static final int PROPERTY_MEDIA_GUID = 0xDD72;
// MTP device properties
+ /** @hide */
public static final int DEVICE_PROPERTY_UNDEFINED = 0x5000;
+ /** @hide */
public static final int DEVICE_PROPERTY_BATTERY_LEVEL = 0x5001;
+ /** @hide */
public static final int DEVICE_PROPERTY_FUNCTIONAL_MODE = 0x5002;
+ /** @hide */
public static final int DEVICE_PROPERTY_IMAGE_SIZE = 0x5003;
+ /** @hide */
public static final int DEVICE_PROPERTY_COMPRESSION_SETTING = 0x5004;
+ /** @hide */
public static final int DEVICE_PROPERTY_WHITE_BALANCE = 0x5005;
+ /** @hide */
public static final int DEVICE_PROPERTY_RGB_GAIN = 0x5006;
+ /** @hide */
public static final int DEVICE_PROPERTY_F_NUMBER = 0x5007;
+ /** @hide */
public static final int DEVICE_PROPERTY_FOCAL_LENGTH = 0x5008;
+ /** @hide */
public static final int DEVICE_PROPERTY_FOCUS_DISTANCE = 0x5009;
+ /** @hide */
public static final int DEVICE_PROPERTY_FOCUS_MODE = 0x500A;
+ /** @hide */
public static final int DEVICE_PROPERTY_EXPOSURE_METERING_MODE = 0x500B;
+ /** @hide */
public static final int DEVICE_PROPERTY_FLASH_MODE = 0x500C;
+ /** @hide */
public static final int DEVICE_PROPERTY_EXPOSURE_TIME = 0x500D;
+ /** @hide */
public static final int DEVICE_PROPERTY_EXPOSURE_PROGRAM_MODE = 0x500E;
+ /** @hide */
public static final int DEVICE_PROPERTY_EXPOSURE_INDEX = 0x500F;
+ /** @hide */
public static final int DEVICE_PROPERTY_EXPOSURE_BIAS_COMPENSATION = 0x5010;
+ /** @hide */
public static final int DEVICE_PROPERTY_DATETIME = 0x5011;
+ /** @hide */
public static final int DEVICE_PROPERTY_CAPTURE_DELAY = 0x5012;
+ /** @hide */
public static final int DEVICE_PROPERTY_STILL_CAPTURE_MODE = 0x5013;
+ /** @hide */
public static final int DEVICE_PROPERTY_CONTRAST = 0x5014;
+ /** @hide */
public static final int DEVICE_PROPERTY_SHARPNESS = 0x5015;
+ /** @hide */
public static final int DEVICE_PROPERTY_DIGITAL_ZOOM = 0x5016;
+ /** @hide */
public static final int DEVICE_PROPERTY_EFFECT_MODE = 0x5017;
+ /** @hide */
public static final int DEVICE_PROPERTY_BURST_NUMBER= 0x5018;
+ /** @hide */
public static final int DEVICE_PROPERTY_BURST_INTERVAL = 0x5019;
+ /** @hide */
public static final int DEVICE_PROPERTY_TIMELAPSE_NUMBER = 0x501A;
+ /** @hide */
public static final int DEVICE_PROPERTY_TIMELAPSE_INTERVAL = 0x501B;
+ /** @hide */
public static final int DEVICE_PROPERTY_FOCUS_METERING_MODE = 0x501C;
+ /** @hide */
public static final int DEVICE_PROPERTY_UPLOAD_URL = 0x501D;
+ /** @hide */
public static final int DEVICE_PROPERTY_ARTIST = 0x501E;
+ /** @hide */
public static final int DEVICE_PROPERTY_COPYRIGHT_INFO = 0x501F;
+ /** @hide */
public static final int DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER = 0xD401;
+ /** @hide */
public static final int DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME = 0xD402;
+ /** @hide */
public static final int DEVICE_PROPERTY_VOLUME = 0xD403;
+ /** @hide */
public static final int DEVICE_PROPERTY_SUPPORTED_FORMATS_ORDERED = 0xD404;
+ /** @hide */
public static final int DEVICE_PROPERTY_DEVICE_ICON = 0xD405;
+ /** @hide */
public static final int DEVICE_PROPERTY_PLAYBACK_RATE = 0xD410;
+ /** @hide */
public static final int DEVICE_PROPERTY_PLAYBACK_OBJECT = 0xD411;
+ /** @hide */
public static final int DEVICE_PROPERTY_PLAYBACK_CONTAINER_INDEX = 0xD412;
+ /** @hide */
public static final int DEVICE_PROPERTY_SESSION_INITIATOR_VERSION_INFO = 0xD406;
+ /** @hide */
public static final int DEVICE_PROPERTY_PERCEIVED_DEVICE_TYPE = 0xD407;
-
/**
* Object is not protected. It may be modified and deleted, and its properties
* may be modified.
@@ -424,5 +569,8 @@
*/
public static final int PROTECTION_STATUS_NON_TRANSFERABLE_DATA = 0x8003;
+ /**
+ * Association type for objects representing file system directories.
+ */
public static final int ASSOCIATION_TYPE_GENERIC_FOLDER = 0x0001;
}
diff --git a/media/java/android/mtp/MtpDevice.java b/media/java/android/mtp/MtpDevice.java
index 2d726c2..78b2253 100644
--- a/media/java/android/mtp/MtpDevice.java
+++ b/media/java/android/mtp/MtpDevice.java
@@ -22,9 +22,7 @@
import android.util.Log;
/**
- * This class represents an MTP device connected on the USB host bus.
- *
- * {@hide}
+ * This class represents an MTP or PTP device connected on the USB host bus.
*/
public final class MtpDevice {
@@ -36,10 +34,21 @@
System.loadLibrary("media_jni");
}
+ /**
+ * MtpClient constructor
+ *
+ * @param device the {@link android.hardware.UsbDevice} for the MTP or PTP device
+ */
public MtpDevice(UsbDevice device) {
mDevice = device;
}
+ /**
+ * Opens the MTP or PTP device and return an {@link android.mtp.MtpDevice} for it.
+ *
+ * @param manager reference to {@link android.hardware.UsbManager}
+ * @return true if the device was successfully opened.
+ */
public boolean open(UsbManager manager) {
if (manager.openDevice(mDevice)) {
return native_open(mDevice.getDeviceName(), mDevice.getFileDescriptor());
@@ -48,14 +57,15 @@
}
}
+ /**
+ * Closes all resources related to the MtpDevice object
+ */
public void close() {
- Log.d(TAG, "close");
native_close();
}
@Override
protected void finalize() throws Throwable {
- Log.d(TAG, "finalize");
try {
native_close();
} finally {
@@ -63,10 +73,20 @@
}
}
+ /**
+ * Returns the name of the USB device
+ *
+ * @return the device name
+ */
public String getDeviceName() {
return mDevice.getDeviceName();
}
+ /**
+ * Returns the ID of the USB device
+ *
+ * @return the device ID
+ */
public int getDeviceId() {
return mDevice.getDeviceId();
}
@@ -76,48 +96,118 @@
return mDevice.getDeviceName();
}
+ /**
+ * Returns the {@link android.mtp.MtpDeviceInfo} for this device
+ *
+ * @return the device info
+ */
public MtpDeviceInfo getDeviceInfo() {
return native_get_device_info();
}
+ /**
+ * Returns the list of IDs for all storage units on this device
+ *
+ * @return the storage IDs
+ */
public int[] getStorageIds() {
return native_get_storage_ids();
}
+ /**
+ * Returns the list of object handles for all objects on the given storage unit,
+ * with the given format and parent.
+ *
+ * @param storageId the storage unit to query
+ * @param format the format of the object to return, or zero for all formats
+ * @param objectHandle the parent object to query, or zero for the storage root
+ * @return the object handles
+ */
public int[] getObjectHandles(int storageId, int format, int objectHandle) {
return native_get_object_handles(storageId, format, objectHandle);
}
+ /**
+ * Returns the data for an object as a byte array.
+ *
+ * @param objectHandle handle of the object to read
+ * @param objectSize the size of the object (this should match
+ * {@link android.mtp.MtpObjectInfo#getCompressedSize}
+ * @return the object's data, or null if reading fails
+ */
public byte[] getObject(int objectHandle, int objectSize) {
return native_get_object(objectHandle, objectSize);
}
+ /**
+ * Returns the thumbnail data for an object as a byte array.
+ *
+ * @param objectHandle handle of the object to read
+ * @return the object's thumbnail, or null if reading fails
+ */
public byte[] getThumbnail(int objectHandle) {
return native_get_thumbnail(objectHandle);
}
+ /**
+ * Retrieves the {@link android.mtp.MtpStorageInfo} for a storage unit.
+ *
+ * @param storageId the ID of the storage unit
+ * @return the MtpStorageInfo
+ */
public MtpStorageInfo getStorageInfo(int storageId) {
return native_get_storage_info(storageId);
}
+ /**
+ * Retrieves the {@link android.mtp.MtpObjectInfo} for an object.
+ *
+ * @param objectHandle the handle of the object
+ * @return the MtpObjectInfo
+ */
public MtpObjectInfo getObjectInfo(int objectHandle) {
return native_get_object_info(objectHandle);
}
+ /**
+ * Deletes an object on the device.
+ *
+ * @param objectHandle handle of the object to delete
+ * @return true if the deletion succeeds
+ */
public boolean deleteObject(int objectHandle) {
return native_delete_object(objectHandle);
}
+ /**
+ * Retrieves the object handle for the parent of an object on the device.
+ *
+ * @param objectHandle handle of the object to query
+ * @return the parent's handle, or zero if it is in the root of the storage
+ */
public long getParent(int objectHandle) {
return native_get_parent(objectHandle);
}
+ /**
+ * Retrieves the ID of the storage unit containing the given object on the device.
+ *
+ * @param objectHandle handle of the object to query
+ * @return the object's storage unit ID
+ */
public long getStorageID(int objectHandle) {
return native_get_storage_id(objectHandle);
}
- // Reads a file from device to host to the specified destination.
- // Returns true if the transfer succeeds.
+ /**
+ * Copies the data for an object to a file in external storage.
+ *
+ * @param objectHandle handle of the object to read
+ * @param destPath path to destination for the file transfer.
+ * This path should be in the external storage as defined by
+ * {@link android.os.Environment#getExternalStorageDirectory}
+ * @return true if the file transfer succeeds
+ */
public boolean importFile(int objectHandle, String destPath) {
return native_import_file(objectHandle, destPath);
}
diff --git a/media/java/android/mtp/MtpDeviceInfo.java b/media/java/android/mtp/MtpDeviceInfo.java
index d918c20..ef9436d 100644
--- a/media/java/android/mtp/MtpDeviceInfo.java
+++ b/media/java/android/mtp/MtpDeviceInfo.java
@@ -20,8 +20,6 @@
* This class encapsulates information about an MTP device.
* This corresponds to the DeviceInfo Dataset described in
* section 5.1.1 of the MTP specification.
- *
- * {@hide}
*/
public class MtpDeviceInfo {
diff --git a/media/java/android/mtp/MtpObjectInfo.java b/media/java/android/mtp/MtpObjectInfo.java
index 309d524..5bbfe9a 100644
--- a/media/java/android/mtp/MtpObjectInfo.java
+++ b/media/java/android/mtp/MtpObjectInfo.java
@@ -20,8 +20,6 @@
* This class encapsulates information about an object on an MTP device.
* This corresponds to the ObjectInfo Dataset described in
* section 5.3.1 of the MTP specification.
- *
- * {@hide}
*/
public final class MtpObjectInfo {
private int mHandle;
diff --git a/media/java/android/mtp/MtpStorageInfo.java b/media/java/android/mtp/MtpStorageInfo.java
index 811455a..09736a8 100644
--- a/media/java/android/mtp/MtpStorageInfo.java
+++ b/media/java/android/mtp/MtpStorageInfo.java
@@ -20,8 +20,6 @@
* This class encapsulates information about a storage unit on an MTP device.
* This corresponds to the StorageInfo Dataset described in
* section 5.2.2 of the MTP specification.
- *
- * {@hide}
*/
public final class MtpStorageInfo {