summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2010-12-07 17:10:02 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-12-07 17:10:02 -0800
commitecce2f6d82650a18889fb2a5ff6b45f318e50bdf (patch)
tree53f27de4d4eadf6f96ea90d98693c107b25d6f48 /media
parent6e52b4565697f68d23a91bbb069d99f2ed25824a (diff)
parentea93fa16b166ff477e9cf6bd3ac67c8fb259fb57 (diff)
downloadframeworks_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.java19
-rw-r--r--media/jni/android_media_MtpDatabase.cpp25
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;
}