`
abc20899
  • 浏览: 905900 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android NDK 的学习之旅-----JNI LOG 打印

 
阅读更多
1.创建android 工程
android create project -n ndk002 -t 8 -p /Users/zhaoshun/android/android-ndk-r8/samples/ndk002 -a Test002 -k killqq.net.ndk

2.编写应用层项目文件 Test002.java文件:
public class Test002 extends Activity{
	
	private static final String libSoName = "helloLog";
	private EditText getStr;
	private Button send_btn;
	private String getCstr = null;
	
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        getStr = (EditText)findViewById(R.id.input);
        send_btn = (Button)findViewById(R.id.send);
        
        send_btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				getCstr = setParamToJNI(getStr());  // 取得c传过来的字符串
				if (getCstr == null) {
					//Log.i("info","load error");
				}else {
					//Log.i("info",getCstr);
				}
			}
		});
        
    }
    
    //定义本地方法 由C实现
    public native String setParamToJNI(String msg);
    
    //取得用户发送的字符串
    private String getStr(){
    	String str = getStr.getText().toString();
    	return str.trim().length()>0?str:"default";
    }
    
    //加载库文件
    static
    {
      System.loadLibrary(libSoName);    	
    }
}


3. 在工程目录中创建jni 目录及文件
Android.mk文件内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
LOCAL_MODULE    := helloLog
LOCAL_SRC_FILES := \
HelloLog.c
include $(BUILD_SHARED_LIBRARY)


LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
这句话打印log信息

HelloLog.c文件:
#include <string.h>
#include <jni.h>
#include <android/log.h>  //加载log头文件
//jstring msg 接受参数  用户发送的字符串
jstring Java_killqq_net_ndk_Test002_setParamToJNI( JNIEnv* env,jobject thiz,jstring msg)
{
	 if (msg == NULL) {
	              //该方法为打印的方法
	      __android_log_print(ANDROID_LOG_INFO, "JNIMsg", "Your params is null");
	      return (*env)->NewStringUTF(env, "Your params is null");
	  }
       char data[128];
       memset(data, 0, sizeof(data));
       char *c_msg = NULL;
       c_msg = (*env)->GetStringUTFChars(env, msg, 0);
       //该方法为打印的方法
       __android_log_print(ANDROID_LOG_INFO, "JNIMsg", "Get Param:  %s  From Java", c_msg);
       return (*env)->NewStringUTF(env, "success");
}

/**
 __android_log_print(ANDROID_LOG_INFO, "JNIMsg", " Log Content ");
JNIMsg 为 你想输出到的过滤标签
Log Content 为你 想输出的相关信息,用法与C的Printf一样

*/


4.编译运行

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics