diff options
author | Mike Lockwood <lockwood@google.com> | 2015-01-26 19:10:44 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-01-26 19:10:44 +0000 |
commit | 2d1e078ac45a646ee55bb9aca022dafd143ff95b (patch) | |
tree | 66625646e1e4b09c1277b53eeee5ecbc821de076 /media | |
parent | 3d8f41913c43b3c82b20aef1572fc5a0f7126589 (diff) | |
parent | 5ac22aa60f773917981f42e64fbc28615871fd3e (diff) | |
download | frameworks_base-2d1e078ac45a646ee55bb9aca022dafd143ff95b.zip frameworks_base-2d1e078ac45a646ee55bb9aca022dafd143ff95b.tar.gz frameworks_base-2d1e078ac45a646ee55bb9aca022dafd143ff95b.tar.bz2 |
am 5ac22aa6: am 2b144a16: Merge "MTP: Fix partial implementation of 5 new audio specific properties" into lmp-mr1-dev
* commit '5ac22aa60f773917981f42e64fbc28615871fd3e':
MTP: Fix partial implementation of 5 new audio specific properties
Diffstat (limited to 'media')
-rwxr-xr-x | media/java/android/mtp/MtpDatabase.java | 68 | ||||
-rw-r--r-- | media/java/android/mtp/MtpPropertyGroup.java | 22 | ||||
-rw-r--r-- | media/jni/android_mtp_MtpDatabase.cpp | 5 |
3 files changed, 56 insertions, 39 deletions
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java index 13cdc69..5d9355a 100755 --- a/media/java/android/mtp/MtpDatabase.java +++ b/media/java/android/mtp/MtpDatabase.java @@ -88,6 +88,10 @@ public class MtpDatabase { Files.FileColumns._ID, // 0 Files.FileColumns.DATA, // 1 }; + private static final String[] FORMAT_PROJECTION = new String[] { + Files.FileColumns._ID, // 0 + Files.FileColumns.FORMAT, // 1 + }; private static final String[] PATH_FORMAT_PROJECTION = new String[] { Files.FileColumns._ID, // 0 Files.FileColumns.DATA, // 1 @@ -597,6 +601,7 @@ public class MtpDatabase { MtpConstants.PROPERTY_PARENT_OBJECT, MtpConstants.PROPERTY_PERSISTENT_UID, MtpConstants.PROPERTY_NAME, + MtpConstants.PROPERTY_DISPLAY_NAME, MtpConstants.PROPERTY_DATE_ADDED, }; @@ -669,43 +674,6 @@ public class MtpDatabase { MtpConstants.PROPERTY_DESCRIPTION, }; - static final int[] ALL_PROPERTIES = { - // NOTE must match FILE_PROPERTIES above - MtpConstants.PROPERTY_STORAGE_ID, - MtpConstants.PROPERTY_OBJECT_FORMAT, - MtpConstants.PROPERTY_PROTECTION_STATUS, - MtpConstants.PROPERTY_OBJECT_SIZE, - MtpConstants.PROPERTY_OBJECT_FILE_NAME, - MtpConstants.PROPERTY_DATE_MODIFIED, - MtpConstants.PROPERTY_PARENT_OBJECT, - MtpConstants.PROPERTY_PERSISTENT_UID, - MtpConstants.PROPERTY_NAME, - MtpConstants.PROPERTY_DISPLAY_NAME, - MtpConstants.PROPERTY_DATE_ADDED, - - // image specific properties - MtpConstants.PROPERTY_DESCRIPTION, - - // audio specific properties - MtpConstants.PROPERTY_ARTIST, - MtpConstants.PROPERTY_ALBUM_NAME, - MtpConstants.PROPERTY_ALBUM_ARTIST, - MtpConstants.PROPERTY_TRACK, - MtpConstants.PROPERTY_ORIGINAL_RELEASE_DATE, - MtpConstants.PROPERTY_DURATION, - MtpConstants.PROPERTY_GENRE, - MtpConstants.PROPERTY_COMPOSER, - - // video specific properties - MtpConstants.PROPERTY_ARTIST, - MtpConstants.PROPERTY_ALBUM_NAME, - MtpConstants.PROPERTY_DURATION, - MtpConstants.PROPERTY_DESCRIPTION, - - // image specific properties - MtpConstants.PROPERTY_DESCRIPTION, - }; - private int[] getSupportedObjectProperties(int format) { switch (format) { case MtpConstants.FORMAT_MP3: @@ -723,8 +691,6 @@ public class MtpDatabase { case MtpConstants.FORMAT_PNG: case MtpConstants.FORMAT_BMP: return IMAGE_PROPERTIES; - case 0: - return ALL_PROPERTIES; default: return FILE_PROPERTIES; } @@ -749,6 +715,10 @@ public class MtpDatabase { MtpPropertyGroup propertyGroup; if (property == 0xFFFFFFFFL) { + if (format == 0 && handle > 0) { + // return properties based on the object's format + format = getObjectFormat((int)handle); + } propertyGroup = mPropertyGroupsByFormat.get(format); if (propertyGroup == null) { int[] propertyList = getSupportedObjectProperties(format); @@ -988,6 +958,26 @@ public class MtpDatabase { } } + private int getObjectFormat(int handle) { + Cursor c = null; + try { + c = mMediaProvider.query(mPackageName, mObjectsUri, FORMAT_PROJECTION, + ID_WHERE, new String[] { Integer.toString(handle) }, null, null); + if (c != null && c.moveToNext()) { + return c.getInt(1); + } else { + return -1; + } + } catch (RemoteException e) { + Log.e(TAG, "RemoteException in getObjectFilePath", e); + return -1; + } finally { + if (c != null) { + c.close(); + } + } + } + private int deleteFile(int handle) { mDatabaseModified = true; String path = null; diff --git a/media/java/android/mtp/MtpPropertyGroup.java b/media/java/android/mtp/MtpPropertyGroup.java index 781988d..c80adfa 100644 --- a/media/java/android/mtp/MtpPropertyGroup.java +++ b/media/java/android/mtp/MtpPropertyGroup.java @@ -172,6 +172,17 @@ class MtpPropertyGroup { column = Images.ImageColumns.DESCRIPTION; type = MtpConstants.TYPE_STR; break; + case MtpConstants.PROPERTY_AUDIO_WAVE_CODEC: + case MtpConstants.PROPERTY_AUDIO_BITRATE: + case MtpConstants.PROPERTY_SAMPLE_RATE: + // these are special cased + type = MtpConstants.TYPE_UINT32; + break; + case MtpConstants.PROPERTY_BITRATE_TYPE: + case MtpConstants.PROPERTY_NUMBER_OF_CHANNELS: + // these are special cased + type = MtpConstants.TYPE_UINT16; + break; default: type = MtpConstants.TYPE_UNDEFINED; Log.e(TAG, "unsupported property " + code); @@ -420,6 +431,17 @@ class MtpPropertyGroup { result.setResult(MtpConstants.RESPONSE_INVALID_OBJECT_HANDLE); } break; + case MtpConstants.PROPERTY_AUDIO_WAVE_CODEC: + case MtpConstants.PROPERTY_AUDIO_BITRATE: + case MtpConstants.PROPERTY_SAMPLE_RATE: + // we don't have these in our database, so return 0 + result.append(handle, propertyCode, MtpConstants.TYPE_UINT32, 0); + break; + case MtpConstants.PROPERTY_BITRATE_TYPE: + case MtpConstants.PROPERTY_NUMBER_OF_CHANNELS: + // we don't have these in our database, so return 0 + result.append(handle, propertyCode, MtpConstants.TYPE_UINT16, 0); + break; default: if (property.type == MtpConstants.TYPE_STR) { result.append(handle, propertyCode, c.getString(column)); diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp index 803ab05..713f28c 100644 --- a/media/jni/android_mtp_MtpDatabase.cpp +++ b/media/jni/android_mtp_MtpDatabase.cpp @@ -934,6 +934,11 @@ static const PropertyTableEntry kObjectPropertyTable[] = { { MTP_PROPERTY_COMPOSER, MTP_TYPE_STR }, { MTP_PROPERTY_DURATION, MTP_TYPE_UINT32 }, { MTP_PROPERTY_DESCRIPTION, MTP_TYPE_STR }, + { MTP_PROPERTY_AUDIO_WAVE_CODEC, MTP_TYPE_UINT32 }, + { MTP_PROPERTY_BITRATE_TYPE, MTP_TYPE_UINT16 }, + { MTP_PROPERTY_AUDIO_BITRATE, MTP_TYPE_UINT32 }, + { MTP_PROPERTY_NUMBER_OF_CHANNELS,MTP_TYPE_UINT16 }, + { MTP_PROPERTY_SAMPLE_RATE, MTP_TYPE_UINT32 }, }; static const PropertyTableEntry kDevicePropertyTable[] = { |