Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit baa1210d authored by kyle_tso's avatar kyle_tso Committed by android-build-merger
Browse files

Merge "Support scanDirectories with JNI callback function" am: 5747c2b8

am: 34be883e

Change-Id: I57a54d520cd953c7b99e6815e7894421166368d4
parents 4fc59dcd 34be883e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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;
+18 −0
Original line number Diff line number Diff line
@@ -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) {
@@ -1311,6 +1324,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");