Я пытаюсь создать плагин phonegap для устройства Android, к сожалению, моя Java ужасна.
У меня есть простой проект helloworld, над которым я работаю, чтобы попытаться добиться этого. Я создал плагин, который отлично загружается и работает (просто пример строки возврата)
Затем я попытался добавить код своей родной библиотеки.
public class Medida extends CordovaPlugin
{
static {
System.loadLibrary("finger");
}
public native static int SFM_Init(byte[] dev);
Сообщение об ошибке, с которым я постоянно сталкиваюсь: 10-28 15:23:03.207: W/dalvikvm(11618): Не найдена реализация для собственного Lorg/apache/cordova/plugin/Medida;.SFM_Init ([B)I
Теперь я беру файл libfinger.so из полного проекта JAVA для Android и пытаюсь обернуть его в плагин phonegap (почему? Потому что я могу кодировать phonegap, но не java).
Все файлы были помещены в правильные места, файл libfinger.so находится в папке libs/.
Итак, мой вопрос: что еще мне нужно добавить или сделать, чтобы плагин JAVA работал с libfinger.so, чтобы я мог вызывать все классы и т. Д.
Спасибо за поиск - потратил дни, пытаясь выяснить, но информации о вызове loadlibrary для плагинов, которые я понимаю, не так много.
Джон
Main java class
package org.apache.cordova.plugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class Medida extends CordovaPlugin{
static {
System.loadLibrary("finger");
}
public native static int SFM_Init(byte[] dev);
static final String LOG_TAG = "Medida.Java: ";
int fd = 0;
String retval = null;
int[] nQuality = {0};
int[] nBufferSize = {0};
private final String retSuccess = "OK";
public static final int REFRESH = 1;
public static final int ERROR = 0;
private Thread thread = null;
private int peripheral_fd = 1;
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("dave")) {
String message = args.getString(0);
this.dave("Medida CALLING DAVE " + message, callbackContext);
return true;
}
else if (action.equals("scanfinger_getID")){
this.scanfinger_getID( args, callbackContext);
return true;
}
return false;
}
private void dave(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
callbackContext.success(" --- Medida FROM DAVE: " + message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
private void scanfinger_getID(JSONArray args, CallbackContext callbackContext) throws JSONException {
String message = args.getString(0);
JSONObject object = new JSONObject(message);
String id = object.getString("id");
String dev = "/dev/ttySAC3";
byte[] devName = dev.getBytes();
fd = SFM_Init(devName);
callbackContext.success("Got to scanfinger_getID: " + id);
}
}