summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author kyle_tso <kyle_tso@htc.com> 2017-12-06 03:22:30 +0000
committer android-build-merger <android-build-merger@google.com> 2017-12-06 03:22:30 +0000
commit34be883ebddfa03de31581e6e9942c47d53cc395 (patch)
tree01dd2d6426e5502a737727ac05724960482fc018
parentca4e402e9b0ad79923bfd3d65d55a387f232e4ff (diff)
parent5747c2b81ce417a9b2e1d8244f12366cf869282b (diff)
Merge "Support scanDirectories with JNI callback function"
am: 5747c2b81c Change-Id: I8996fb568c4024ccf76a5643049de8cee6f811c6
-rwxr-xr-xmedia/java/android/mtp/MtpDatabase.java6
-rw-r--r--media/jni/android_mtp_MtpDatabase.cpp18
2 files changed, 24 insertions, 0 deletions
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java
index aaf18e7f935a..ba29d2daaa0e 100755
--- a/media/java/android/mtp/MtpDatabase.java
+++ b/media/java/android/mtp/MtpDatabase.java
@@ -423,6 +423,12 @@ public class MtpDatabase implements AutoCloseable {
}
}
+ private void doScanDirectory(String path) {
+ String[] scanPath;
+ scanPath = new String[] { path };
+ mMediaScanner.scanDirectories(scanPath);
+ }
+
private Cursor createObjectQuery(int storageID, int format, int parent) throws RemoteException {
String where;
String[] whereArgs;
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index 0da628917713..9ee99a4f8d0a 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -55,6 +55,7 @@ using namespace android;
static jmethodID method_beginSendObject;
static jmethodID method_endSendObject;
+static jmethodID method_doScanDirectory;
static jmethodID method_getObjectList;
static jmethodID method_getNumObjects;
static jmethodID method_getSupportedPlaybackFormats;
@@ -119,6 +120,8 @@ public:
MtpObjectFormat format,
bool succeeded);
+ virtual void doScanDirectory(const char* path);
+
virtual MtpObjectHandleList* getObjectList(MtpStorageID storageID,
MtpObjectFormat format,
MtpObjectHandle parent);
@@ -265,6 +268,16 @@ void MyMtpDatabase::endSendObject(const char* path, MtpObjectHandle handle,
checkAndClearExceptionFromCallback(env, __FUNCTION__);
}
+void MyMtpDatabase::doScanDirectory(const char* path) {
+ JNIEnv* env = AndroidRuntime::getJNIEnv();
+ jstring pathStr = env->NewStringUTF(path);
+ env->CallVoidMethod(mDatabase, method_doScanDirectory, pathStr);
+
+ if (pathStr)
+ env->DeleteLocalRef(pathStr);
+ checkAndClearExceptionFromCallback(env, __FUNCTION__);
+}
+
MtpObjectHandleList* MyMtpDatabase::getObjectList(MtpStorageID storageID,
MtpObjectFormat format,
MtpObjectHandle parent) {
@@ -1310,6 +1323,11 @@ int register_android_mtp_MtpDatabase(JNIEnv *env)
ALOGE("Can't find endSendObject");
return -1;
}
+ method_doScanDirectory = env->GetMethodID(clazz, "doScanDirectory", "(Ljava/lang/String;)V");
+ if (method_doScanDirectory == NULL) {
+ ALOGE("Can't find doScanDirectory");
+ return -1;
+ }
method_getObjectList = env->GetMethodID(clazz, "getObjectList", "(III)[I");
if (method_getObjectList == NULL) {
ALOGE("Can't find getObjectList");