Android-使用C++实现调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(八)
来源:互联网 发布:淘宝绑定别人的银行卡 编辑:程序博客网 时间:2024/04/28 15:19
本地方法使用C与C++的实现代码是不同的,且.h头文件必须引用;
在生成jni文件夹同时将生成.h头文件放在该目录下、命令:
进入项目名-->app-->src-->main-->java 目录下输入
javah -d ../jni -jni 包名.类名 (将.h生成头文件放在上级目录中创建jni文件夹中)
Android33\app\src\main\java>javah -d ../jni -jni com.example.yu_longji.android33.MainActivity
生成后的目录结构:
结果:
android33.c
<span style="font-family:KaiTi_GB2312;font-size:18px;">//// Created by yu_longji on 2015/9/2.//#include <jni.h>#include "com_example_yu_longji_android33_MainActivity.h"/* * Class: com_example_yu_longji_android33_MainActivity * Method: show * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_yu_1longji_android33_MainActivity_show (JNIEnv * env, jobject obj){ char * str = "这是C++调用"; //return (*env)->NewStringUTF(env, cstr); return env->NewStringUTF(str);}</span>
生成的头文件:
<span style="font-family:KaiTi_GB2312;font-size:18px;">/* * Class: com_example_yu_longji_android33_MainActivity * Method: show * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_yu_1longji_android33_MainActivity_show (JNIEnv *, jobject);</span>
布局文件:
activity_main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:textSize="30sp" /> <Button android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:onClick="click" android:text="C++调用"/></RelativeLayout>
MainActivity.java
package com.example.yu_longji.android33;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity { static { System.loadLibrary("Android33"); } private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.tv); } public void click(View view){ tv.setText(show() + ""); Toast.makeText(this, show() + "", Toast.LENGTH_LONG).show(); } public native String show();}
1 1
- Android-使用C++实现调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(八)
- Android-java调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(二)
- Android-调用本地方法计算int数值相加结果显示在界面上/NDK-JNI开发实例(三)
- Android-调用本地方法将小写字符串转成大写字符串/NDK-JNI开发实例(四)
- Android-本地方法C调用Java中的方法/NDK-JNI开发实例(六)
- Android-调用本地方法实现将C进程分支出来即生成系统进程/NDK-JNI开发实例(九)
- Android-调用本地方法传递数组参数/NDK-JNI开发实例(五)
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- JNI/NDK开发指南(八)——调用构造方法和父类实例方法
- JNI/NDK开发指南(八)——调用构造方法和父类实例方法
- Android-本地方法与Java相互调用-自定义ProgressBar(锅炉压力监测例子)/NDK-JNI开发实例(七)
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法实现边缘检测代码(2)
- Android JNI/NDK开发(2)JNI实现C/C++与Android/JAVA相互调用
- Android使用NDK(从java调用本地函数'JNI')
- 安卓JNI/NDK开发3(进阶 在C代码中调用java方法)
- Android开发之JNI调用本地C库专题(一):JNI的使用
- PushMeBaby测试发布版推送功能
- cygwin国内镜像
- 个性化WinPE封装方法《第五讲----最后实战“制作WinPE3.0图文教程”》
- 三分钟理解“抽象工厂模式”——设计模式轻松掌握
- 使用golang做http接口压力测试并输出到echarts散点图中
- Android-使用C++实现调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(八)
- 程序员,用NuGet管理好你的包包
- Oracle 全文检索 中文检索
- typedef字符型指针的字符串使用
- Apt-cacher-ng 配置Linux代理网络
- sparkCookbook5--SparkStreaming
- IOS:图片缓存
- yarn基本原理
- 自定义标签开发