0
我想要做的是使用NDK創建一個JPoint(int [])
。所以,我創建了JPoint
類:如何使用Android NDK創建Java對象(int [])
JPoint.java
public class JPoint {
int x;
int y;
public JPoint(int[] xy)
{
x = xy[0];
y = xy[1];
}
public JPoint(int x, int y)
{
this.x = x;
this.y = y;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
}
在JNI我創造了這個方法
JNI/sqlitenative.cpp
JNIEXPORT jobject JNICALL
Java_com_example_jnisqliteexperiment_MainActivity_getPersons(
JNIEnv *env,
jobject callingObject)
{
jmethodID constructor;
int x;
int y;
x = 10;
y = 20;
int xy[2] = {4, 5};
jclass cls = env->FindClass("com/example/jnisqliteexperiment/JPoint");
//creating new Jpoint(int[])
constructor = env->GetMethodID(cls, "<init>", "([I)V");
jobject obj = env->NewObject(cls, constructor, xy);
//creating new Jpoint(int, int)
// constructor = env->GetMethodID(cls, "<init>", "(II)V");
// jobject obj = env->NewObject(cls, constructor, x ,y);
return obj;
}
內MainActivity
protected void onCreate(Bundle savedInstanceState)
{
// ..
JPoint point = getPersons();
textView.setText(String.valueOf(point.getX()));
// ..
}
public native JPoint getPersons();
它完美,當我把作爲參數(II)V的代替([I)V在GetMethodID
。所以我可以輕鬆創建一個Point(int, int)
。但是當我嘗試創建JPoint(int[])
時。我在我的日誌中取消虛擬機,應用程序啓動時沒有顯示任何內容,奇怪的是,我的設備開始振動。
我在做什麼錯在這裏?
爲什麼我的設備開始振動沒有深刻的原因?