欢迎转载,务必注明出处:http://blog.csdn.net/wang_shuai_ww/article/details/44458553

源码下载地址:http://download.csdn.net/detail/u010406724/8515377

本篇介绍怎么使用前面建立好的库文件。

要使用JNI库文件,那么首先我们是需要把它加载到系统中,并对其定义接口,供给应用来调用。

建立一个工程,我的工程名为RealArmTest,过程就省略了,完成后再在src下建立一个类,不继承其他类,包名为realarm.hardware,新建的类名为HardwareControl。代码如下:

package realarm.hardware;public class HardwareControl {public native int LedSetState(int ledNum,int ledState);static {System.loadLibrary("LedJni");}}

具体的工程如下图:

主activity文件源码如下:

package com.example.realarmtest;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ToggleButton;
import realarm.hardware.HardwareControl;;public class MainActivity extends Activity {private HardwareControl MyLedTest = null;private ToggleButton btnLed;private ImageView imageLed;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnLed = (ToggleButton) findViewById(R.id.btnLed);imageLed = (ImageView) findViewById(R.id.imageLed);MyLedTest = new HardwareControl();MyLedTest.LedSetState(0, 0);imageLed.setImageResource(R.drawable.bulboff);btnLed.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(btnLed.isChecked()){imageLed.setImageResource(R.drawable.bulbon);MyLedTest.LedSetState(0, 1);}else {imageLed.setImageResource(R.drawable.bulboff);MyLedTest.LedSetState(0, 0);}}});}
}

是不是发现更简洁了,也容易理解,O(∩_∩)O。

布局文件为:

<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="com.example.ledtest.MainActivity" ><ToggleButtonandroid:id="@+id/btnLed"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/imageLed"android:layout_alignRight="@+id/imageLed"android:layout_centerVertical="true"android:textOff="开灯"android:textOn="关灯" /><ImageViewandroid:id="@+id/imageLed"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@+id/btnLed"android:layout_centerHorizontal="true"android:layout_marginBottom="22dp"android:src="@drawable/bulboff" /></RelativeLayout>

另外还需要资源图片,这里就没法贴出来了,需要的去上面提供的地址下载完整工程源码就有了。

最后愿看这些系列文章的朋友都能对Android驱动到上层应用有一定的了解。

Android 4.4.2 动态添加JNI库方法记录 (二 app应用层)相关推荐

  1. Android 4.4.2 动态添加JNI库方法记录 (一 JNI库层)

    欢迎转载,务必注明出处.http://blog.csdn.net/wang_shuai_ww/article/details/44456755 本篇是继<s5p4418 Android 4.4. ...

  2. 我的Python学习笔记(四):动态添加属性和方法

    一.动态语言相关概念 1.1 动态语言 在运行时代码可以根据某些条件改变自身结构 可以在运行时引进新的函数.对象.甚至代码,可以删除已有的函数等其他结构上的变化 常见的动态语言:Object-C.C# ...

  3. android 点动态显示图片,Android用RecyclerView实现动态添加本地图片

    本文介绍了Android用RecyclerView实现动态添加本地图片,分享给大家,具体如下: 简单介绍一下用法: 1.跳转到图片选择页面: Intent intent = new Intent(Pa ...

  4. 搜狗输入法词库php词库怎么用,搜狗输入法添加词库方法说明,打字更方便

    搜狗输入法添加词库方法说明,打字更方便 2020-04-04 无论是电脑端还是手机端,搜狗输入端都是一款深受大众欢迎的打字软件,它提供了词库管理功能,用户可以随时添加词库,便于更好完成输入.搜狗输入法 ...

  5. Quartus添加器件库方法

    Quartus添加器件库方法 以Quartus18.1版本,安装Cyclone10LP器件库为例 到Intel官网找到对应Quartus版本 链接 找到需要的器件库并下载 以管理员身份运行Quartu ...

  6. Android Studio NDK环境配置及JNI使用方法

    1.前言 什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.N ...

  7. vue脚手架的安装、生命周期、文件导入格式、局部组件和全局组件、动态添加属性和方法、插槽、传值

    -----------------------------------    DOS命令 进入dos:  win+r 切换盘符: d: 查看: dir 打开文件夹: cd 文件夹的名字 返回上一级目录 ...

  8. QuartusII 13.0.1添加cpld库方法

    QuartusII 13添加库方法 找到Inter的官方下载地址,下载地址 然后点进去,找到individual,就会发现自己需要的库,然后下载对应的qdz文件即可. 然后以管理员方式运行quartu ...

  9. MFC 添加皮肤库方法步骤

    项目中使用的库文件,下载地址: https://download.csdn.net/download/byh371256/10741951 //VC皮肤库文件SkinPlusPlusDLL实现步骤: ...

最新文章

  1. css3 text-shadow
  2. 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
  3. 约瑟夫环java链表_java使用链表实现约瑟夫环
  4. arcgis镜像图形工具,ArcGis图形编辑
  5. linux redis图形界面,linux安装redis和windows安装可视化工具
  6. 地方门户网站如何盈利?
  7. GMAIL DRIVE 提供邮箱一样大小的硬盘
  8. java编程对电脑配置_java编程对电脑配置有什么要求?如何选择合适电脑?
  9. python-Django 增删改和分页
  10. Java 复制PDF文档
  11. 阮一峰ES6入门学习笔记~~变量的解构赋值
  12. 浅谈人工智能 | 语音识别面面观
  13. 【我爱破解】对某软件的逆向分析与注册机编写
  14. spellman斯派曼电源维修XRB100N100K4405
  15. tcp/udp 常用端口列表
  16. Python 基础 1.0
  17. 2018-2-13-win10-uwp-smms图床
  18. 心态很容易受别人影响_太容易被别人影响,我上辈子可能是个“复印机”
  19. Oracle在命令行中输入clear,Oracle SQLPlus 常用命令及解释
  20. 常用软件分享及下载地址

热门文章

  1. python中cgi到底是什么_什么是CGI?详细介绍Python CGI编程
  2. 三菱gx软件初始化失败怎么解决_三菱PLC的常见问题大全!
  3. google套件_Google 推出 3 款语音识别应用,想用 AI 帮语言障碍者说话
  4. 软件容量测试和压力测试区别,性能测试、负载测试、压力测试、容量测试的区别...
  5. mysql2008安装中文_Microsoft SQL Server 2008 R2 中文安装说明
  6. java 生成 xml dtd_使用DTD文件中的JAXB生成Java类 – 如何修改DTD?
  7. pip download的使用记录
  8. 牛逼!Python函数和文件操作(长文系列第3篇)
  9. 哎,辣鸡代码书写准则
  10. android+webview+打不开,webview 在android下无法打开 ?是否为一个bug?请帮忙看下!谢谢!...