diff options
| author | 2017-12-06 03:22:30 +0000 | |
|---|---|---|
| committer | 2017-12-06 03:22:30 +0000 | |
| commit | 34be883ebddfa03de31581e6e9942c47d53cc395 (patch) | |
| tree | 01dd2d6426e5502a737727ac05724960482fc018 | |
| parent | ca4e402e9b0ad79923bfd3d65d55a387f232e4ff (diff) | |
| parent | 5747c2b81ce417a9b2e1d8244f12366cf869282b (diff) | |
Merge "Support scanDirectories with JNI callback function"
am: 5747c2b81c
Change-Id: I8996fb568c4024ccf76a5643049de8cee6f811c6
| -rwxr-xr-x | media/java/android/mtp/MtpDatabase.java | 6 | ||||
| -rw-r--r-- | media/jni/android_mtp_MtpDatabase.cpp | 18 |
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"); |