初探移动多媒体

自己写视频播放器(3) Android JNI 使用1

2015-04-19  本文已影响466人  SHUTUP

JNI有两种主要的实现方式:


  1. 静态方法实现步骤:

1.Java代码中添加库和native方法声明:

package com.example.testndk;


import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;


public class TestNDK extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        TextView  myTextView = new TextView(this);
        myTextView.setText(  stringTestNdk() );
        setContentView(myTextView);
    }
    //native方法
    public native String  stringTestNdk();
    //加载库,libtestNDK.so
    static {
        System.loadLibrary("testNDK");
    }
}

2.运行工程,生成.class文件

3.生成javah文件:

  1. Java 1.6
  1. Java 1.7

4 实现头文件中声明的函数
新建文件jni/testNDK.c。testNDK.c的代码如下:

#include <string.h>
#include<jni.h> 
JNIEXPORT jstring JNICALL Java_com_example_testndk_TestNDK_stringTestNdk
  (JNIEnv* env, jobject obj)
{
    return (*env)->NewStringUTF(env, "Hello JNI!");
} 

testNDK.c的作用就是实现com_example_testndk_TestNDK.h中声明的函数。

5 编写实现函数对应的Android.mk
添加文件jni/Android.mk,内容如下:

LOCAL_PATH := $(call my-dir) 
include$(CLEAR_VARS) 
LOCAL_MODULE    := testNDK
LOCAL_SRC_FILES:= testNDK.c    
include$(BUILD_SHARED_LIBRARY)

6 编译生成库文件
进入到工程所在目录,执行ndk-build,编译生成.so库文件。
$ cd jni$ ndk-build
生成库文件所在目录:libs/armeabi/libtestNDK.so

7 运行工程
在eclipse下运行工程,ok。


  1. 动态方法实现步骤:

未完待续。。。

上一篇 下一篇

猜你喜欢

热点阅读