写好底层的库,接下来就是写应用程序使用或验证了。
前面也介绍了,应用程序访问jni库,有多种方法,最简单的就是直接调用,其次是用service,再次为service manager
1 直接加载。
这有点儿像从三楼直接跳下来。其实java本来就有调用原生代码的接口。android开发还包含有ndk开发,这个就是直接用c来做应用程序。
1.1 testjni1.java
在与framwork同层目录下,创建app目录,mkdir app
再在app目录下,创建dirload/src/com/ask/目录,生成testjni1.java,内容如下:
package com.ask.testjni;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class testjni1 extends Activity
{
static
{
//System.load("/system/lib/libaskgpio.so");
System.load("/system/lib/libaskgpio");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Call an API on the library.
_gpio_init();
_gpio_set(1);
_gpio_clr(2);
TextView tv = new TextView(this);
tv.setText("gpio 1 is set to 1. gpio 2 is set to 0.");
setContentView(tv);
}
private static native boolean _gpio_init();
private static native boolean _gpio_set(int gpio);
private static native boolean _gpio_clr(int gpio);
}
说明:System.load("/system/lib/libaskgpio");有实际测试中这样加载可能不成功,要定居这样System.load("/system/lib/libaskgpio.so");
1.2 Android.mk编写,保存在dirload目录下
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := user
# This is the target being built.
LOCAL_PACKAGE_NAME := testjni1
# Only compile source java files in this apk.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
# Link against the current An
android分层学习笔记(四)
最新推荐文章于 2020-04-26 01:26:05 发布