Merge "Support scanDirectories with JNI callback function"
This commit is contained in:
@@ -421,6 +421,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 {
|
private Cursor createObjectQuery(int storageID, int format, int parent) throws RemoteException {
|
||||||
String where;
|
String where;
|
||||||
String[] whereArgs;
|
String[] whereArgs;
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ using namespace android;
|
|||||||
|
|
||||||
static jmethodID method_beginSendObject;
|
static jmethodID method_beginSendObject;
|
||||||
static jmethodID method_endSendObject;
|
static jmethodID method_endSendObject;
|
||||||
|
static jmethodID method_doScanDirectory;
|
||||||
static jmethodID method_getObjectList;
|
static jmethodID method_getObjectList;
|
||||||
static jmethodID method_getNumObjects;
|
static jmethodID method_getNumObjects;
|
||||||
static jmethodID method_getSupportedPlaybackFormats;
|
static jmethodID method_getSupportedPlaybackFormats;
|
||||||
@@ -119,6 +120,8 @@ public:
|
|||||||
MtpObjectFormat format,
|
MtpObjectFormat format,
|
||||||
bool succeeded);
|
bool succeeded);
|
||||||
|
|
||||||
|
virtual void doScanDirectory(const char* path);
|
||||||
|
|
||||||
virtual MtpObjectHandleList* getObjectList(MtpStorageID storageID,
|
virtual MtpObjectHandleList* getObjectList(MtpStorageID storageID,
|
||||||
MtpObjectFormat format,
|
MtpObjectFormat format,
|
||||||
MtpObjectHandle parent);
|
MtpObjectHandle parent);
|
||||||
@@ -265,6 +268,16 @@ void MyMtpDatabase::endSendObject(const char* path, MtpObjectHandle handle,
|
|||||||
checkAndClearExceptionFromCallback(env, __FUNCTION__);
|
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,
|
MtpObjectHandleList* MyMtpDatabase::getObjectList(MtpStorageID storageID,
|
||||||
MtpObjectFormat format,
|
MtpObjectFormat format,
|
||||||
MtpObjectHandle parent) {
|
MtpObjectHandle parent) {
|
||||||
@@ -1308,6 +1321,11 @@ int register_android_mtp_MtpDatabase(JNIEnv *env)
|
|||||||
ALOGE("Can't find endSendObject");
|
ALOGE("Can't find endSendObject");
|
||||||
return -1;
|
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");
|
method_getObjectList = env->GetMethodID(clazz, "getObjectList", "(III)[I");
|
||||||
if (method_getObjectList == NULL) {
|
if (method_getObjectList == NULL) {
|
||||||
ALOGE("Can't find getObjectList");
|
ALOGE("Can't find getObjectList");
|
||||||
|
|||||||
Reference in New Issue
Block a user