我想为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