当前位置:首页 » 安卓系统 » androidjni教程视频教程

androidjni教程视频教程

发布时间: 2022-11-22 11:07:22

⑴ android开发SDK视频教程和资料有哪些,最好要全面一点的。

1、可以看老罗的视频教程,说的很详细,+Android开发吧,吧里有很多分享在云盘的视频连接。

2、建议找个有源码的例子,自己照着例子做,不会的再网络,这样容易熟悉开发的流程。

3、论坛的话可以去Android巴士,里面有很多源码和视频,可以提问,也有零基础学android开发的系列视频教程。

4、忘采纳~

⑵ 如何在Android下使用JNI

方法步骤:
第一步:
使用java编写HelloWorld 的Android应用程序:
代码如下
package com.lucyfyr;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v("fresne", printJNI("I am HelloWorld Activity"));
}
static
{
//加载库文件
System.loadLibrary("HelloWorldJni");
}
//声明原生函数 参数为String类型 返回类型为String
private native String printJNI(String inputStr);
}
这一步可以使用eclipse来生成一个App;
因为eclipse会自动编译此Java文件,后面要是用到。
第二步:
生成共享库的头文件:
进入到eclipse生成的Android Project中 :/HelloWorld/bin/classes/com/lucyfyr/ 下:

可以看到里面后很多后缀为.class的文件,就是eclipse为自动编译好了的java文件,其中就有:

HelloWorld.class文件。

退回到classes一级目录:/HelloWorld/bin/classes/

执行如下命令:

javah com.lucyfyr.HelloWorld

生成文件:com_lucyfyr_HelloWorld.h

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>
/* Header for class com_lucyfyr_HelloWorld */
#ifndef _Included_com_lucyfyr_HelloWorld
#define _Included_com_lucyfyr_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_lucyfyr_HelloWorld
* Method: printJNI
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_lucyfyr_HelloWorld_printJNI
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
可以看到自动生成对应的函数:Java_com_lucyfyr_HelloWorld_printJNI
Java_ + 包名(com.lucyfyr) + 类名(HelloWorld) + 接口名(printJNI):必须要按此JNI规范来操作;
java虚拟机就可以在com.simon.HelloWorld类调用printJNI接口的时候自动找到这个C实现的Native函数调用。
当然函数名太长,可以在.c文件中通过函数名映射表来实现简化。
第三步:
实现JNI原生函数源文件:
新建com_lucyfyr_HelloWorld.c文件:
#include <jni.h>
#define LOG_TAG "HelloWorld"
#include <utils/Log.h>
/* Native interface, it will be call in java code */
JNIEXPORT jstring JNICALL Java_com_lucyfyr_HelloWorld_printJNI(JNIEnv *env, jobject obj,jstring inputStr)
{
LOGI("fresne Hello World From libhelloworld.so!");
// 从 instring 字符串取得指向字符串 UTF 编码的指针
const char *str =
(const char *)(*env)->GetStringUTFChars( env,inputStr, JNI_FALSE );
LOGI("fresne--->%s",(const char *)str);
// 通知虚拟机本地代码不再需要通过 str 访问 Java 字符串。
(*env)->ReleaseStringUTFChars(env, inputStr, (const char *)str );
return (*env)->NewStringUTF(env, "Hello World! I am Native interface");
}

/* This function will be call when the library first be load.
* You can do some init in the libray. return which version jni it support.
*/
jint JNI_OnLoad(JavaVM* vm, void* reserved)
{
void *venv;
LOGI("fresne----->JNI_OnLoad!");
if ((*vm)->GetEnv(vm, (void**)&venv, JNI_VERSION_1_4) != JNI_OK) {
LOGE("fresne--->ERROR: GetEnv failed");
return -1;
}
return JNI_VERSION_1_4;
}

OnLoadJava_com_lucyfyr_HelloWorld_printJNI
函数里面做一些log输出 注意JNI中的log输出的不同。
JNI_OnLoad函数JNI规范定义的,当共享库第一次被加载的时候会被回调,
这个函数里面可以进行一些初始化工作,比如注册函数映射表,缓存一些变量等,
最后返回当前环境所支持的JNI环境。本例只是简单的返回当前JNI环境。
第四步:
编译生成so库
编译com_lucyfyr_HelloWorld.c成so库可以和app一起编译,也可以都单独编译。
在当前目录下建立jni文件夹:HelloWorld/jni/
下建立Android.mk ,并将com_lucyfyr_HelloWorld.c和 com_lucyfyr_HelloWorld.h 拷贝到进去
编写编译生成so库的Android.mk文件:
LOCAL_PATH:= $(call my-dir)
# 一个完整模块编译
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=com_lucyfyr_HelloWorld.c
LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
LOCAL_MODULE := libHelloWorldJni
LOCAL_SHARED_LIBRARIES := libutils
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE_TAGS :=optional
include $(BUILD_SHARED_LIBRARY)
系统变量解析:
LOCAL_PATH - 编译时的目录
$(call 目录,目录….) 目录引入操作符
如该目录下有个文件夹名称 src,则可以这样写 $(call src),那么就会得到 src 目录的完整路径
include $(CLEAR_VARS) -清除之前的一些系统变量
LOCAL_MODULE - 编译生成的目标对象
LOCAL_SRC_FILES - 编译的源文件
LOCAL_C_INCLUDES - 需要包含的头文件目录
LOCAL_SHARED_LIBRARIES - 链接时需要的外部库
LOCAL_PRELINK_MODULE - 是否需要prelink处理
include$(BUILD_SHARED_LIBRARY) - 指明要编译成动态库

⑶ 如何在Android下使用JNI

Android中JNI是编译so库的源代码,编译成功后会生成SO库,android中最终是使用SO库的。
1.android的NDK开发需要在linux下进行: 因为需要把C/C++编写的代码生成能在arm上运行的.so文件,这就需要用到交叉编译环境,而交叉编译需要在linux系统下才能完成。
2.安装android-ndk开发包,这个开发包可以在google android 官网下载: 通过这个开发包的工具才能将android jni 的C/C++的代码编译成库
3.android应用程序开发环境: 包括eclipse、java、 android sdk、 adt等。

NDK编译步骤:
1.选择 ndk 自带的例子 hello-jni ,我的位于E:\android-ndk-r5\samples\hello-jni( 根据具体的安装位置而定 ) 。
2.运行 cygwin ,输入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,进入到 E:\android-ndk-r5\samples\hello-jni 目录。
3.输入 $NDK/ndk-build ,执行成功后,它会自动生成一个 libs 目录,把编译生成的 .so 文件放在里面。 ($NDK是调用我们之前配置好的环境变量, ndk-build 是调用 ndk 的编译程序 )
4.此时去 hello-jni 的 libs 目录下看有没有生成的 .so 文件,如果有,ndk 就运行正常啦。

⑷ 新手刚刚学习android,推荐android开发的入门教程

学习android注意事项:
1,android技术准备实训目标:通过这部分的学习,学员能够达到学习android开发课程的基本要求。熟练使用Java语言,实现GUI桌面应用程序的开发JDK的安装和配置开发工具Eclipse3.4安装。实训知识点: Java标识符、数据类型流程控制、面向对象编程、继承、抽象类、接口、包、异常、IO流、Swing、游戏算法介绍
,2,android入门实训目标:通过这部分的学习,学员具备了android程序开发的能力,能独立完成常用的应用软件。实训知识点: Android系统概述和内置工具、Android 开发环境的搭建和启动模拟器、建立android工程、Android应用程序开发及运行编译结构、API参考文档的使用、使用am工具启动android应用程序、部署应用到真实手机、控件和事件编程、菜单编程、对话框编程、视图组编程、各种布局的使用、Grid视图组、List视图组、使用Tab组织UI
,3,android进阶实训目标:通过这部分的学习,学员的android开发能力会有大幅提高。等传感器编程、android优化和性能提高。实训知识点及案例分析:Service概述、创建和启动、生命周期、权限及跨进程调用;广播的概念及生命周期、广播发送的权限广播接收器的实现、接收SMS短信、播放MP3;内容提供器的概念作用和常见接口、使用内容提供器实现增删改查、内容提供其权限和创建内容提供器、SQLite数据库添删改查操作、使用list视图组显示数据;Widget概念和制作方法、Widget各种XML描述文件详解2D图形图像及文本、Gallery UI编程、GridView编程、OnDraw编程、drawable编程基本动画编程技巧、Tween动画、Frame动画、TimerOpenGL ES的2D和3D绘图GPS服务、GPRS网络使用、android蓝牙开发、android方向、加速表、光线、磁场、临近性、温度
4,项目实战实训目标:本阶段让学员开发,设计Android网上购物系统,其中包括Android图形界面开发,Android声音,Android网络通讯,和服务器后端进行通讯交换数据。

Android基础知识:
一、Android开发的分类:
1、Android客户端应用程序
如新浪微博、网银客户端、凡客、淘宝客户端,快盘客户端。Android在这里的应用还是界面层的东西为主。核心还在WEB。客户端界面很重要,用户体验度很重要。从应用需求上来讲,几乎大一点的网站,都需要有手机客户端程序。
2、Android通用类程序
如基于LBS(基于位置的服务)的应用 (这类一般会嵌入到客户端应用程序中),流媒体播放应用。由于移动设备的方便便捷、3G、4G网络的发展,这类应用有不错的前景。
3、Android游戏开发
需要掌握的游戏引擎LGame,游戏框架等。手机上的游戏会是一大块内容,有前途。
4、Android底层开发
需要掌握C、Linux等较底层的东西,发展方向应该是驱动、协议开发,嵌入式开发。
开始学习了解一般从界面、控件开始,这也是大部分人认为简单、比较快上手的原因。学习一段时间后,自己可以定一个方向发展。
二、Android学习需要哪些知识点
1、Java基础知识
J2SE:Java基础类(lang包,IO包,util包(集合框架),面向对象,多线程,网络编程)
2、J2EE知识
如果你想从事的Android客户端应用程序的开发,这部分知识是必备的。显然Android客户端只是做的数据的请求、展现,所需的数据在服务器端。
技能点:Tomcat(Weblogic),XML解析,JSON解析,JSP/Servlet。了解SSH。
3、Linux、C语言知识
可以作为你后续发展需要了解的。
在论坛上、QQ上看到不少童鞋Java基础还比较欠缺,就开始搞Android了,当然就问题多多。学习热情可嘉,但需要打一个好的基础,有一个好的学习路线。
三、Android学习比较好的资料
1、应该说现在市面上的书,入门的还是不少,但一般现在只讲了简单控件的单个用法。
《Android开发范例大全》,《Android应用开发详解》可以参考。想了解游戏的话,可以参考《Android2.0游戏开发实战宝典》。
2、Android学习视频,也基本上停留在讲简单入门,单个控件用法为主,这方面远不及Java,J2EE,SSH的视频那么丰富。应该讲,你看完了这些,离开发还有很大一段距离。而且,这些视频在讲课方法上不如一些Java的好。现在的视频资料太丰富,从哈佛、斯坦福的课程,到IPHONE开发课程,都有。但全部跟着视频完成所有的学习,有很长一段跟要走。
3、Android的论坛比较多,论坛的缺点就是什么东西得自己一个个查找、去等。自学是一个艰苦而漫长的过程。对你的锻炼和提升也最大。自学有一个缺点,就是容易迷失方向,一个知识点你永远不知道要掌握多深,相关的应用是什么。自学就好比像你一个人在走一条目标很远,前面叉路很多的暗道一样。
4、培训机构学习。如果你时间上允许不失为一种好的选择,可以快速入门。互联网产品(时代)有一个重要特点,就是拿资金换时间。如果能快速入门,到这个行业去发展,就比自己慢慢学习要好得多。毕竟现在Android开发太热了。对开发人员的要求也会逐渐提高。(如既要求能做Android开发,又做IPHONE移植开发)。

⑸ 如何在Android下使用JNI

关于如何在Android使用JNI调用C/C++代码库,网上已经有很多优秀的文章了,这里说一个大概过程吧:

首先需要懂C,其次要明白JNI的开发流程,然后还要知道NDK如何使用

1、在java代码中声明了一个native本地方法

Public native String helloFromc();

2、在项目目录中创建JNI文件夹

3、在JNI文件夹里面创建C文件,按照规范写代码

Jstring
Java_com_cheng_jnitest_MainActivity_helloFromc(JNIEnv* env,jobject obj)

4、用ndk-build指令编译
编译前需要配置Android.mk文件
//指定编译的文件夹,指定当前的目录
LOCAL_PATH := $(call my-dir)

//编译器在编译的时候会产生很多临时变量,中间变量最好在编译前清空所有的临时变量

include $(CLEAR_VARS)

//编译完成后的模块名
LOCAL_MOUDLE := hello
//编译的源文件

LOCAL_SRC_FILES:=hello.c

//编译一个动态库

//动态库.so 只包含运行的函数,不包含依赖,所以体积小,运行的时候回去系统寻找依赖

//静态库.a 包含所有的函数和运行的依赖,所以体积大,包含所有的api

include $(BUILD_SHARED_LIBRARY)

5、生成了一个so动态库,放到了libs里面

6、项目中引入依赖库

Static{

System.loadLibrary("hello");

}

⑹ 谁有Android基础入门视频教程全集发我一下

网上Android入门视频有很多,千锋好程序员论坛官网的Android视频讲的挺好的,你可以都互相学习学习

⑺ android jni怎么使用

  1. 安装NDK,在eclipse里设置关联

  2. 首先你在类里面写native方法,如native String printHello();

  3. 设置静态方法块调用so文件,如static {System.loadLibrary("jnitest");}

  4. 右键工程-android tools-add native support

  5. 编写C/C++文件,对应.c/.cpp,如

    JNIEXPORT jstring JNICALL Java_com_example_jnit_MainActivity_printHello
    (JNIEnv *env, jobject obj){
    return env->NewStringUTF("Hello world !");
    }

  6. 编译运行

⑻ 谁有学习安卓开发的视频教程从零起步的最好

我之前看过的,华清远见的一个比较系统的教学视频,去网上搜“3G移动开发大讲堂Android专题:手机版开心网全程解读”,就可以找到这个活动,总共8讲

⑼ 求mars老师的Android开发视频教学第三季合集

http://marschen.com/如果有更新他会上传的,哥们坚持下来,我当初就是没坚持,现在很后悔。

⑽ 如何在Android下使用JNI

我们知道,Android系统的底层库由c/c++编写,上层Android应用程序通过Java虚拟机调用底层接口,衔接底层c/c++库与Java应用程序间的接口正是JNI(JavaNative Interface)。本文描述了如何在ubuntu下配置AndroidJNI的开发环境,以及如何编写一个简单的c函数库和JNI接口,并通过编写Java程序调用这些接口,最终运行在模拟器上的过程。

2.环境配置

2.1.安装jdk1.6
(1)从jdk官方网站下载jdk-6u29-linux-i586.bin文件。
(2)执行jdk安装文件
[html] view plainprint?
01.$chmod a+x jdk-6u29-linux-i586.bin
02.$jdk-6u29-linux-i586.bin
$chmod a+x jdk-6u29-linux-i586.bin
$jdk-6u29-linux-i586.bin
(3)配置jdk环境变量

[html] view plainprint?
01.$sudo vim /etc/profile
02.#JAVAEVIRENMENT
03.exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29
04.exportJRE_HOME=$JAVA_HOME/jre
05.exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
06.exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
$sudo vim /etc/profile
#JAVAEVIRENMENT
exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29
exportJRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存后退出编辑,并重启系统。

(4)验证安装

[html] view plainprint?
01.$java -version
02.javaversion "1.6.0_29"
03.Java(TM)SE Runtime Environment (build 1.6.0_29-b11)
04.JavaHotSpot(TM) Server VM (build 20.4-b02, mixed mode)
05.$javah
06.用法:javah[选项]<类>
07.其中[选项]包括:
08.-help输出此帮助消息并退出
09.-classpath<路径>用于装入类的路径
10.-bootclasspath<路径>用于装入引导类的路径
11.-d<目录>输出目录
12.-o<文件>输出文件(只能使用-d或-o中的一个)
13.-jni生成JNI样式的头文件(默认)
14.-version输出版本信息
15.-verbose启用详细输出
16.-force始终写入输出文件
17.使用全限定名称指定<类>(例
18.如,java.lang.Object)。
$java -version
javaversion "1.6.0_29"
Java(TM)SE Runtime Environment (build 1.6.0_29-b11)
JavaHotSpot(TM) Server VM (build 20.4-b02, mixed mode)
$javah
用法:javah[选项]<类>
其中[选项]包括:
-help输出此帮助消息并退出
-classpath<路径>用于装入类的路径
-bootclasspath<路径>用于装入引导类的路径
-d<目录>输出目录
-o<文件>输出文件(只能使用-d或-o中的一个)
-jni生成JNI样式的头文件(默认)
-version输出版本信息
-verbose启用详细输出
-force始终写入输出文件
使用全限定名称指定<类>(例
如,java.lang.Object)。2.2.安装android应用程序开发环境
ubuntu下安装android应用程序开发环境与windows类似,依次安装好以下软件即可:
(1)Eclipse
(2)ADT
(3)AndroidSDK
与windows下安装唯一不同的一点是,下载这些软件的时候要下载Linux版本的安装包。
安装好以上android应用程序的开发环境后,还可以选择是否需要配置emulator和adb工具的环境变量,以方便在进行JNI开发的时候使用。配置步骤如下:
把emulator所在目录android-sdk-linux/tools以及adb所在目录android-sdk-linux/platform-tools添加到环境变量中,android-sdk-linux指androidsdk安装包android-sdk_rxx-linux的解压目录。
[plain] view plainprint?
01.$sudo vim /etc/profile
02.exportPATH=~/software/android/android-sdk-linux/tools:$PATH
03. exportPATH=~/software/android/android-sdk-linux/platform-tools:$PATH
$sudo vim /etc/profile
exportPATH=~/software/android/android-sdk-linux/tools:$PATH
exportPATH=~/software/android/android-sdk-linux/platform-tools:$PATH
编辑完毕后退出,并重启生效。

2.3.安装NDK
NDK是由android提供的编译android本地代码的一个工具。
(1)从androidndk官网下载ndk,目前最新版本为android-ndk-r6b-linux-x86.tar.bz2.
(2)解压ndk到工作目录:
[plain] view plainprint?
01.$tar -xvf android-ndk-r6b-linux-x86.tar.bz2
02.$sudo mv android-ndk-r6b /usr/local/ndk
$tar -xvf android-ndk-r6b-linux-x86.tar.bz2
$sudo mv android-ndk-r6b /usr/local/ndk
(3)设置ndk环境变量

[plain] view plainprint?
01.$sudo vim /etc/profile
02.exportPATH=/usr/local/ndk:$PATH
$sudo vim /etc/profile
exportPATH=/usr/local/ndk:$PATH

编辑完毕后保存退出,并重启生效

(4)验证安装

[plain] view plainprint?
01.$ cd/usr/local/ndk/samples/hello-jni/
02.$ ndk-build
03.Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
04.Gdbsetup : libs/armeabi/gdb.setup
05.Install : libhello-jni.so => libs/armeabi/libhello-jni.so
$ cd/usr/local/ndk/samples/hello-jni/
$ ndk-build
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Install : libhello-jni.so => libs/armeabi/libhello-jni.so

3.JNI实现
我们需要定义一个符合JNI接口规范的c/c++接口,这个接口不用太复杂,例如输出一个字符串。接下来,则需要把c/c++接口的代码文件编译成共享库(动态库).so文件,并放到模拟器的相关目录下。最后,启动Java应用程序,就可以看到最终效果了。

3.1.编写Java应用程序代码
(1)启动Eclipse,新建android工程

Project:JNITest

Package:org.tonny.jni

Activity:JNITest

(2)编辑资源文件

编辑res/values/strings.xml文件如下:

[html] view plainprint?
01.<?xmlversionxmlversion="1.0"encoding="utf-8"?>
02.<resources>
03.<stringnamestringname="hello">HelloWorld, JNITestActivity!</string>
04.<stringnamestringname="app_name">JNITest</string>
05.<stringnamestringname="btn_show">Show</string>
06.</resources>
<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stringname="hello">HelloWorld, JNITestActivity!</string>
<stringname="app_name">JNITest</string>
<stringname="btn_show">Show</string>
</resources>

编辑res/layout/main.xml文件如下:

[html] view plainprint?
01.<?xmlversionxmlversion="1.0"encoding="utf-8"?>
02.<LinearLayoutxmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
03.android:layout_width="fill_parent"
04.android:layout_height="fill_parent"
05.android:orientation="vertical">
06.<TextView
07.android:layout_width="fill_parent"
08.android:layout_height="wrap_content"
09.android:text="@string/hello"/>
10.<EditText
11.android:id="@+id/ed_name"
12.android:layout_width="match_parent"
13.android:layout_height="wrap_content"
14.android:layout_gravity="center_horizontal"
15.android:layout_marginLeft="5dp"
16.android:layout_marginRight="5dp"/>
17.<Button
18.android:id="@+id/btn_show"
19.android:layout_width="109dp"
20.android:layout_height="wrap_content"
21.android:layout_gravity="center_horizontal"
22.android:text="@string/btn_show"/>
23.</LinearLayout>
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<EditText
android:id="@+id/ed_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"/>
<Button
android:id="@+id/btn_show"
android:layout_width="109dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/btn_show"/>
</LinearLayout>

我们在主界面上添加了一个EditText控件和一个Button控件。

(3)编辑JNITest.java文件

[java] view plainprint?
01.packageorg.tonny.jni;
02.
03.importandroid.app.Activity;
04.importandroid.os.Bundle;
05.importandroid.view.View;
06.importandroid.widget.EditText;
07.importandroid.widget.Button;
08.
09.
10. {
11.static{
12.System.loadLibrary("JNITest");
13.}
14.privatenativeString GetReply();
15.privateEditTextedtName;
16.privateButtonbtnShow;
17.Stringreply;
18./**Called when the activity is first created. */
19.@Override
20.publicvoidonCreate(Bundle savedInstanceState) {
21.super.onCreate(savedInstanceState);
22.setContentView(R.layout.main);
23.reply= GetReply();
24.edtName= (EditText)this.findViewById(R.id.ed_name);
25.btnShow= (Button)this.findViewById(R.id.btn_show);
26.btnShow.setOnClickListener(newButton.OnClickListener() {
27.publicvoidonClick(View arg0) {
28.edtName.setText(reply);
29.}
30.});
31.}
32.}
packageorg.tonny.jni;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.EditText;
importandroid.widget.Button;

{
static{
System.loadLibrary("JNITest");
}
privatenativeString GetReply();
privateEditTextedtName;
privateButtonbtnShow;
Stringreply;
/**Called when the activity is first created. */
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
reply= GetReply();
edtName= (EditText)this.findViewById(R.id.ed_name);
btnShow= (Button)this.findViewById(R.id.btn_show);
btnShow.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View arg0) {
edtName.setText(reply);
}
});
}
}

我们看这一段代码:

[java] view plainprint?
01.static{
02.System.loadLibrary("JNITest");
03.}
static{
System.loadLibrary("JNITest");
}

static表示在系统第一次加载类的时候,先执行这一段代码,在这里表示加载动态库libJNITest.so文件。

再看这一段:

[java] view plainprint?
01.privatenativeString GetReply();
privatenativeString GetReply();
native表示这个方法由本地代码定义,需要通过jni接口调用本地c/c++代码。

[java] view plainprint?
01.publicvoidonClick(View arg0) {
02.edtName.setText(reply);
03.}
publicvoidonClick(View arg0) {
edtName.setText(reply);
}

这段代码表示点击按钮后,把native方法的返回的字符串显示到EditText控件。

(4)编译工程,生成.class文件。

热点内容
c语言fgets用法 发布:2024-05-10 10:54:21 浏览:581
编程猫新手 发布:2024-05-10 10:54:10 浏览:910
python关键词 发布:2024-05-10 10:50:49 浏览:391
vc访问postgresql 发布:2024-05-10 10:49:09 浏览:686
解压软件开源 发布:2024-05-10 10:36:40 浏览:959
三角加密IC 发布:2024-05-10 10:27:07 浏览:214
源码编译成jar包 发布:2024-05-10 10:14:13 浏览:636
变量类型存储 发布:2024-05-10 09:56:27 浏览:105
linux重装linux系统 发布:2024-05-10 09:50:38 浏览:905
md5算法java 发布:2024-05-10 09:24:56 浏览:84