diff options
author | Mike Lockwood <lockwood@android.com> | 2010-12-07 17:10:02 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-12-07 17:10:02 -0800 |
commit | ecce2f6d82650a18889fb2a5ff6b45f318e50bdf (patch) | |
tree | 53f27de4d4eadf6f96ea90d98693c107b25d6f48 /media | |
parent | 6e52b4565697f68d23a91bbb069d99f2ed25824a (diff) | |
parent | ea93fa16b166ff477e9cf6bd3ac67c8fb259fb57 (diff) | |
download | frameworks_base-ecce2f6d82650a18889fb2a5ff6b45f318e50bdf.zip frameworks_base-ecce2f6d82650a18889fb2a5ff6b45f318e50bdf.tar.gz frameworks_base-ecce2f6d82650a18889fb2a5ff6b45f318e50bdf.tar.bz2 |
Merge "MTP: Implement MTP_DEVICE_PROPERTY_IMAGE_SIZE device property."
Diffstat (limited to 'media')
-rw-r--r-- | media/java/android/media/MtpDatabase.java | 19 | ||||
-rw-r--r-- | media/jni/android_media_MtpDatabase.cpp | 25 |
2 files changed, 32 insertions, 12 deletions
diff --git a/media/java/android/media/MtpDatabase.java b/media/java/android/media/MtpDatabase.java index 139a6ea..6056a0f 100644 --- a/media/java/android/media/MtpDatabase.java +++ b/media/java/android/media/MtpDatabase.java @@ -31,6 +31,8 @@ import android.provider.MediaStore.Files; import android.provider.MediaStore.Images; import android.provider.MediaStore.MediaColumns; import android.util.Log; +import android.view.Display; +import android.view.WindowManager; import java.io.File; import java.util.HashMap; @@ -460,6 +462,7 @@ public class MtpDatabase { return new int[] { MtpConstants.DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER, MtpConstants.DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME, + MtpConstants.DEVICE_PROPERTY_IMAGE_SIZE, }; } @@ -592,9 +595,21 @@ public class MtpDatabase { c.close(); } } - } - return MtpConstants.RESPONSE_DEVICE_PROP_NOT_SUPPORTED; + case MtpConstants.DEVICE_PROPERTY_IMAGE_SIZE: + // use screen size as max image size + Display display = ((WindowManager)mContext.getSystemService( + Context.WINDOW_SERVICE)).getDefaultDisplay(); + int width = display.getWidth(); + int height = display.getHeight(); + String imageSize = Integer.toString(width) + "x" + Integer.toString(height); + imageSize.getChars(0, imageSize.length(), outStringValue, 0); + outStringValue[imageSize.length()] = 0; + return MtpConstants.RESPONSE_OK; + + default: + return MtpConstants.RESPONSE_DEVICE_PROP_NOT_SUPPORTED; + } } private int setDeviceProperty(int property, long intValue, String stringValue) { diff --git a/media/jni/android_media_MtpDatabase.cpp b/media/jni/android_media_MtpDatabase.cpp index 1909e6a..fc7d86e 100644 --- a/media/jni/android_media_MtpDatabase.cpp +++ b/media/jni/android_media_MtpDatabase.cpp @@ -860,8 +860,9 @@ static const PropertyTableEntry kObjectPropertyTable[] = { }; static const PropertyTableEntry kDevicePropertyTable[] = { - { MTP_DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER, MTP_TYPE_STR }, - { MTP_DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME, MTP_TYPE_STR }, + { MTP_DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER, MTP_TYPE_STR }, + { MTP_DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME, MTP_TYPE_STR }, + { MTP_DEVICE_PROPERTY_IMAGE_SIZE, MTP_TYPE_STR }, }; bool MyMtpDatabase::getObjectPropertyInfo(MtpObjectProperty property, int& type) { @@ -973,31 +974,35 @@ MtpProperty* MyMtpDatabase::getObjectPropertyDesc(MtpObjectProperty property, } MtpProperty* MyMtpDatabase::getDevicePropertyDesc(MtpDeviceProperty property) { + JNIEnv* env = AndroidRuntime::getJNIEnv(); MtpProperty* result = NULL; + bool writable = false; + switch (property) { case MTP_DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER: case MTP_DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME: - { - // writeable string properties - result = new MtpProperty(property, MTP_TYPE_STR, true); + writable = true; + // fall through + case MTP_DEVICE_PROPERTY_IMAGE_SIZE: + result = new MtpProperty(property, MTP_TYPE_STR, writable); - // set current value - JNIEnv* env = AndroidRuntime::getJNIEnv(); + // get current value jint ret = env->CallIntMethod(mDatabase, method_getDeviceProperty, (jint)property, mLongBuffer, mStringBuffer); if (ret == MTP_RESPONSE_OK) { jchar* str = env->GetCharArrayElements(mStringBuffer, 0); result->setCurrentValue(str); + // for read-only properties it is safe to assume current value is default value + if (!writable) + result->setDefaultValue(str); env->ReleaseCharArrayElements(mStringBuffer, str, 0); } else { LOGE("unable to read device property, response: %04X", ret); } - - checkAndClearExceptionFromCallback(env, __FUNCTION__); break; - } } + checkAndClearExceptionFromCallback(env, __FUNCTION__); return result; } |