Merge "Support scanDirectories with JNI callback function"

am: 5747c2b81c

Change-Id: I8996fb568c4024ccf76a5643049de8cee6f811c6
This commit is contained in:
kyle_tso
2017-12-06 03:22:30 +00:00
committed by android-build-merger
2 changed files with 24 additions and 0 deletions

View File

@@ -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;

View File

@@ -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");