1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.mtp;
18 
19 /**
20  * This class encapsulates information about an object on an MTP device.
21  * This corresponds to the ObjectInfo Dataset described in
22  * section 5.3.1 of the MTP specification.
23  */
24 public final class MtpObjectInfo {
25     private int mHandle;
26     private int mStorageId;
27     private int mFormat;
28     private int mProtectionStatus;
29     private int mCompressedSize;
30     private int mThumbFormat;
31     private int mThumbCompressedSize;
32     private int mThumbPixWidth;
33     private int mThumbPixHeight;
34     private int mImagePixWidth;
35     private int mImagePixHeight;
36     private int mImagePixDepth;
37     private int mParent;
38     private int mAssociationType;
39     private int mAssociationDesc;
40     private int mSequenceNumber;
41     private String mName;
42     private long mDateCreated;
43     private long mDateModified;
44     private String mKeywords;
45 
46     // only instantiated via JNI
MtpObjectInfo()47     private MtpObjectInfo() {
48     }
49 
50     /**
51      * Returns the object handle for the MTP object
52      *
53      * @return the object handle
54      */
getObjectHandle()55     public final int getObjectHandle() {
56         return mHandle;
57     }
58 
59     /**
60      * Returns the storage ID for the MTP object's storage unit
61      *
62      * @return the storage ID
63      */
getStorageId()64     public final int getStorageId() {
65         return mStorageId;
66     }
67 
68     /**
69      * Returns the format code for the MTP object
70      *
71      * @return the format code
72      */
getFormat()73     public final int getFormat() {
74         return mFormat;
75     }
76 
77     /**
78      * Returns the protection status for the MTP object
79      * Possible values are:
80      *
81      * <ul>
82      * <li> {@link android.mtp.MtpConstants#PROTECTION_STATUS_NONE}
83      * <li> {@link android.mtp.MtpConstants#PROTECTION_STATUS_READ_ONLY}
84      * <li> {@link android.mtp.MtpConstants#PROTECTION_STATUS_NON_TRANSFERABLE_DATA}
85      * </ul>
86      *
87      * @return the protection status
88      */
getProtectionStatus()89     public final int getProtectionStatus() {
90         return mProtectionStatus;
91     }
92 
93     /**
94      * Returns the size of the MTP object
95      *
96      * @return the object size
97      */
getCompressedSize()98     public final int getCompressedSize() {
99         return mCompressedSize;
100     }
101 
102     /**
103      * Returns the format code for the MTP object's thumbnail
104      * Will be zero for objects with no thumbnail
105      *
106      * @return the thumbnail format code
107      */
getThumbFormat()108     public final int getThumbFormat() {
109         return mThumbFormat;
110     }
111 
112     /**
113      * Returns the size of the MTP object's thumbnail
114      * Will be zero for objects with no thumbnail
115      *
116      * @return the thumbnail size
117      */
getThumbCompressedSize()118     public final int getThumbCompressedSize() {
119         return mThumbCompressedSize;
120     }
121 
122     /**
123      * Returns the width of the MTP object's thumbnail in pixels
124      * Will be zero for objects with no thumbnail
125      *
126      * @return the thumbnail width
127      */
getThumbPixWidth()128     public final int getThumbPixWidth() {
129         return mThumbPixWidth;
130     }
131 
132     /**
133      * Returns the height of the MTP object's thumbnail in pixels
134      * Will be zero for objects with no thumbnail
135      *
136      * @return the thumbnail height
137      */
getThumbPixHeight()138     public final int getThumbPixHeight() {
139         return mThumbPixHeight;
140     }
141 
142     /**
143      * Returns the width of the MTP object in pixels
144      * Will be zero for non-image objects
145      *
146      * @return the image width
147      */
getImagePixWidth()148     public final int getImagePixWidth() {
149         return mImagePixWidth;
150     }
151 
152     /**
153      * Returns the height of the MTP object in pixels
154      * Will be zero for non-image objects
155      *
156      * @return the image height
157      */
getImagePixHeight()158     public final int getImagePixHeight() {
159         return mImagePixHeight;
160     }
161 
162     /**
163      * Returns the depth of the MTP object in bits per pixel
164      * Will be zero for non-image objects
165      *
166      * @return the image depth
167      */
getImagePixDepth()168     public final int getImagePixDepth() {
169         return mImagePixDepth;
170     }
171 
172     /**
173      * Returns the object handle for the object's parent
174      * Will be zero for the root directory of a storage unit
175      *
176      * @return the object's parent
177      */
getParent()178     public final int getParent() {
179         return mParent;
180     }
181 
182     /**
183      * Returns the association type for the MTP object
184      * Will be zero objects that are not of format
185      * {@link android.mtp.MtpConstants#FORMAT_ASSOCIATION}
186      * For directories the association type is typically
187      * {@link android.mtp.MtpConstants#ASSOCIATION_TYPE_GENERIC_FOLDER}
188      *
189      * @return the object's association type
190      */
getAssociationType()191     public final int getAssociationType() {
192         return mAssociationType;
193     }
194 
195     /**
196      * Returns the association description for the MTP object
197      * Will be zero objects that are not of format
198      * {@link android.mtp.MtpConstants#FORMAT_ASSOCIATION}
199      *
200      * @return the object's association description
201      */
getAssociationDesc()202     public final int getAssociationDesc() {
203         return mAssociationDesc;
204     }
205 
206    /**
207      * Returns the sequence number for the MTP object
208      * This field is typically not used for MTP devices,
209      * but is sometimes used to define a sequence of photos
210      * on PTP cameras.
211      *
212      * @return the object's sequence number
213      */
getSequenceNumber()214     public final int getSequenceNumber() {
215         return mSequenceNumber;
216     }
217 
218    /**
219      * Returns the name of the MTP object
220      *
221      * @return the object's name
222      */
getName()223     public final String getName() {
224         return mName;
225     }
226 
227    /**
228      * Returns the creation date of the MTP object
229      * The value is represented as milliseconds since January 1, 1970
230      *
231      * @return the object's creation date
232      */
getDateCreated()233     public final long getDateCreated() {
234         return mDateCreated;
235     }
236 
237    /**
238      * Returns the modification date of the MTP object
239      * The value is represented as milliseconds since January 1, 1970
240      *
241      * @return the object's modification date
242      */
getDateModified()243     public final long getDateModified() {
244         return mDateModified;
245     }
246 
247    /**
248      * Returns a comma separated list of keywords for the MTP object
249      *
250      * @return the object's keyword list
251      */
getKeywords()252     public final String getKeywords() {
253         return mKeywords;
254     }
255 }
256