diff options
| -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"); |