WEB开发网
开发学院手机开发Android 开发 Android NDK入门、提高和实战 阅读

Android NDK入门、提高和实战

 2010-08-21 06:22:00 来源:WEB开发网   
核心提示:1.6到2.01提供了openGL ES 1.x的API,2.1提供了openGL ES 2.0的API,Android NDK入门、提高和实战(2),2.2提供了graphics的处理接口,使用方法同log,第一个参数JNIEnv* env和第二个参数jobject thiz都是必须的,后面的才是Java中传递进来的

1.6到2.01提供了openGL ES 1.x的API,2.1提供了openGL ES 2.0的API,2.2提供了graphics的处理接口。使用方法同log。

实例:

给出两个点的坐标,求它们的距离。

首先,创建一个Point对象,

Java代码

public class Point {

float x;

float y;

}

public class Point {

float x;

float y;

}

然后在c文件中定义一个函数

C代码

jfloat Java_chroya_demo_ndk_Main_distance(JNIEnv* env, jobject thiz, jobject a,jobject b){}

jfloat Java_chroya_demo_ndk_Main_distance(JNIEnv* env, jobject thiz, jobject a,jobject b){}

返回值是float,在jni中定义的是jfloat。

函数名规则: Java开头,接着是包名的每一段,然后是类名,最后是Java中调用的方法名,中间都用下划线隔开。第一个参数JNIEnv* env和第二个参数jobject thiz都是必须的,后面的才是Java中传递进来的参数。这里是两个Point对象。

首先确定要做的步骤:

1.找到这个Point类

2.找到类中的域x和y的域id

3.根据ID取出x和y的值

4.计算结果并返回

那么代码如下:

Java代码

#include

#include

#include

jfloat Java_chroya_demo_ndk_Main_distance(JNIEnv* env, jobject thiz, jobject a,jobject b)

{

//步骤1

jclass point_class = (*env)->FindClass(env, "chroya/demo/ndk/Point");

if(point_class == NULL) {

//printf("class not found");

__android_log_write(ANDROID_LOG_INFO, "MyNdkDemo", "class Point not found");

return 0;

} else {

__android_log_write(ANDROID_LOG_INFO, "MyNdkDemo", "found class Point");

}

//步骤2

jfieldID field_x = (*env)->GetFieldID(env, point_class, "x", "F");

jfieldID field_y = (*env)->GetFieldID(env, point_class, "y", "F");

上一页  1 2 3 4  下一页

Tags:Android NDK 入门

编辑录入:coldstar [复制链接] [打 印]
赞助商链接