我想爲Android設備創建一個phonegap插件,可悲的是我的Java很糟糕。phonegap android插件使用本機庫
我有一個簡單的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 /阿帕奇/科爾多瓦/插件/ Medida; .SFM_Init( [B] I
現在 - 我正在從完整的JAVA安卓項目中獲取libfinger.so文件,並試圖將其包裝到一個phonegap插件中(爲什麼?因爲我可以編寫phonegap,但沒有java)。
的文件都被放置在正確的位置 的libfinger.so文件是庫/文件夾
所以我的問題是 - 我需要附加或做的就是JAVA做什麼呢插件與libfinger.so一起工作 - 所以我可以打電話給所有的clases等。
感謝您的期待 - 花費幾天試圖找出,但沒有太多的信息調用我知道插件的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);
}
}
Thankyou爲此 - 它指出我的方向正確 - 因此我設法至少調用了庫中的進程文件。 我以爲我可以只使用庫文件和調用過程(我的Java是可怕的),但經過一些沉重的閱讀,我已經包括從另一個本地項目使用這個庫文件加載更多的文件 - 我知道有一些希望向前進。 – user3468134 2014-11-03 15:05:04
不客氣!很高興幫助你:) – Miquel 2014-11-04 19:43:39