您的位置:首页 > 移动开发 > Android开发

基于 Android NDK 的学习之旅-----Java 调用C

2011-08-31 16:23 567 查看
吧:
有些许多组件功能可能是C引擎已经很成熟了,所以直接在java去实现。
的速度一般是java中实现。例如我以前在Android的值,去实现了。
3直接开始吧。

1
Java
C c)方法调用C d)、设计实现

1大家别见笑(嘎嘎),
Android 要让 C MainActivity.java

package com.duicky;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

/**
* Java 调用 C 例子
*
* @author luxiaofeng <454162034@qq.com>
*
*/
public class MainActivity extends Activity {
//也就是你mk配置文件中的  LOCAL_MODULE    := NDK_03
private static final String libSoName = "NDK_03";
private static final String tag = "MainActivity";

private Context mContext = null;
private Button btnClick = null;
private String mStrMSG = null;
private EditText etX = null;
private EditText etY = null;
private EditText etResult = null;

private int x = 0 ;
private int y = 0 ;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mContext = this;
//初始化控件
initViews();
}

/**
* 初始化控件
*/
private void initViews() {
etX = (EditText)findViewById(R.id.et_x);
etY = (EditText)findViewById(R.id.et_y);
etResult = (EditText)findViewById(R.id.et_result);
btnClick = (Button) findViewById(R.id.btn_click);
btnClick.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

if(getX() && getY()){
int result = add(x,y);
LogUtils.printWithLogCat(tag,x+" + " + y + " = " +result);
etResult.setText(String.valueOf(result));
} else {
etX.setText("");
etY.setText("");
etResult.setText("");
LogUtils.toastMessage(mContext, "请输入正确的值");
}

}
});

}

/**
* 获取x
*/
private boolean getX() {
String str = etX.getText().toString().trim();
try {
x = Integer.valueOf(str);
} catch(NumberFormatException e) {
return false;
}
return true;
}

/**
* 获取y
*/
private boolean getY() {
String str = etY.getText().toString().trim();
try {
y = Integer.valueOf(str);
} catch(NumberFormatException e) {
return false;
}
return true;
}

/**
* 该方法为native方法.
*
*         实现加法功能
*
* @param x    加数
* @param y 加数
*
* @return x+y 的结果
*/
public native int add(int x, int y);

/**
* 载入JNI生成的so库文件
*/
static {
System.loadLibrary(libSoName);
}

}


  

Android.mk 不说了,嘎嘎,简介
文件夹下文件

Operate.h

#include <string.h>

#include <jni.h>

int add(int x, int y);


  

Operate.c

#include "Operate.h"

/**

* C 实现的 加法

*/

int add(int x, int y) {

return x+y;

}


  

JavaToC.c

#include <string.h>

#include <android/log.h>

#include <jni.h>

#include "Operate.h"

/**

*  Java 中 声明的native add 方法的实现

*

*  jint x       参数X

*  jint y       参数Y

*/

jint Java_com_duicky_MainActivity_add(JNIEnv* env, jobject thiz,

jint x,jint y)

{

//该方法为打印的方法

__android_log_print(ANDROID_LOG_INFO, "JNIMsg", "Get Param:  x=%d y=%d ", x,y);

return add(x,y);

}


  
[title3]3调用C本章节只做简单Java 以后的一些文章 你懂了吗? 嘎嘎,讲的不够全面的请多多包涵,谢谢,

例子[/url]

欢迎转载,请注明出处 http://www.cnblogs.com/luxiaofeng54/archive/2011/08/15/2139934.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 移动开发 休闲