Android 4.4.2 动态加入JNI库方法记录 (二 app应用层)
欢迎转载,务必注明出处:http://blog.csdn.net/wang_shuai_ww/article/details/44458553
源代码下载地址:http://download.csdn.net/detail/u010406724/8515377
本篇介绍怎么使用前面建立好的库文件。
要使用JNI库文件,那么首先我们是须要把它载入到系统中。并对其定义接口,供给应用来调用。
建立一个project,我的project名为RealArmTest。过程就省略了,完毕后再在src下建立一个类。不继承其它类,包名为realarm.hardware,新建的类名为HardwareControl。代码例如以下:
package realarm.hardware;
public class HardwareControl {
public native int LedSetState(int ledNum,int ledState);
static {
System.loadLibrary("LedJni");
}
}
详细的project例如以下图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ19zaHVhaV93dw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
主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;
@Override
protected 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() { @Override
public 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);
}
}
});
}
}
是不是发现更简洁了,也easy理解,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" > <ToggleButton
android: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="关灯" /> <ImageView
android: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>
另外还须要资源图片。这里就没法贴出来了。须要的去上面提供的地址下载完整project源代码就有了。
最后愿看这些系列文章的朋友都能对Android驱动到上层应用有一定的了解。
Android 4.4.2 动态加入JNI库方法记录 (二 app应用层)的更多相关文章
- Android 4.4.2 动态加入JNI库方法记录 (一 JNI库层)
欢迎转载,务必注明出处.http://blog.csdn.net/wang_shuai_ww/article/details/44456755 本篇是继<s5p4418 Android 4.4. ...
- Python数据分析Numpy库方法简介(二)
数据分析图片保存:vg 1.保存图片:plt.savefig(path) 2.图片格式:jpg,png,svg(建议使用,不失真) 3.数据存储格式: excle,csv csv介绍 csv就是用逗号 ...
- 我的Python学习笔记(四):动态添加属性和方法
一.动态语言与静态语言 1.1 动态语言 在运行时代码可以根据某些条件改变自身结构 可以在运行时引进新的函数.对象.甚至代码,可以删除已有的函数等其他结构上的变化 常见的动态语言:Object-C.C ...
- Android 动态注册JNI函数
1.JNI函数注册方式 在Android开发中,由于种种原因我们需要调用C/C++代码,在这个时候我们就需要使用jni了, jni在使用时要对定义的函数进行注册,这样java才能通过native关键字 ...
- android开发源代码分析--多个activity调用多个jni库的方法
android开发源代码分析--多个activity调用多个jni库的方法 有时候,我们在开发android项目时会遇到须要调用多个native c/jni库文件,下面是本人以前实现过的方法,假设有知 ...
- 【转载】cocos2dx 中 Android NDK 加载动态库的问题
原文地址:http://blog.csdn.net/sozell/article/details/10551309 cocos2dx 中 Android NDK 加载动态库的问题 闲聊 最近在接入各 ...
- Android动态调试so库JNI_Onload函数-----基于IDA实现
之前看过吾爱破解论坛一个关于Android'逆向动态调试的经验总结帖,那个帖子写的很好,对Android的脱壳和破解很有帮助,之前我们老师在上课的时候也讲过集中调试的方法,但是现在不太实用.对吾爱破解 ...
- 三、Android NDK编程预备之Java jni入门创建C/C++共享库
转自: http://www.eoeandroid.com/thread-264971-1-1.html 应网友回复,答应在两天前要出一篇创建C/C++共享库的,但由于清明节假期,跟朋友出去游玩,丢手 ...
- 【转】Android下编译jni库的二种方法(含示例)
原文网址:http://blog.sina.com.cn/s/blog_3e3fcadd01011384.html 总结如下:两种方法是:1)使用Android源码中的Make系统2)使用NDK(从N ...
随机推荐
- <Spring Cloud>入门六 Zuul
1.Zuul 2.操作 2.1 pom <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- sql语句执行顺序与性能优化(1)
一.首先我们看一下mysql的sql语句的书写顺序 . select--distinct--from--on--where--group by--having--聚合函数cube.rollup--or ...
- SVN 初级教程
版本控制器:SVN 1.SVN 作用? 备份.代码还原.协同修改.多版本项目文件管理.追溯问题代码的编写人和编写时间.权限控制等. 2.版本控制简介 2.1 版本控制[Revision control ...
- Python能干啥?
Python之py9 Python之py9-录音自动下载 Python之py9-py9作业检查 Python之py9-py9博客情况获取 Python之py9-微信监控获取mp3_url Python ...
- 负载均衡之Ocelot+Consul(配置文件注册服务)
继上篇 Ocellot 做负载均衡之后,本篇将记录 Ocelot + Consul 试验如何做服务发现和服务注册. 服务发现和服务注册的背景知识,一搜满街都是. 在此,我还是写下自己对这个术语的理解吧 ...
- com.alibaba.fastjson.JSONException: For input string: "8200-12-31"
https://www.cnblogs.com/mengjinluohua/p/5544987.html https://samebug.io/exceptions/458113/com.alibab ...
- PTA 03-树3 Tree Traversals Again (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/667 5-5 Tree Traversals Again (25分) An inor ...
- shell脚本简单密码加密
#!/bin/sh #输入密码 echo "请输入原密码:" read resultFirst firstPWD=$resultFirst echo "请再次输入原密码: ...
- poj 3155 二分+最小割求实型最小割(最大密集子图)
/* 最大密集子图子图裸题 解法:设源点s和汇点t 根据胡波涛的<最小割模型在信息学中的应用> s-每个点,权值为原边权和m, 每个点-t,权值为m+2*g-degree[i], 原来的边 ...
- firefox自动化测试的常用插件
1.firebug 2.firepath 3.firefinder 5.WebDriver Element Locator 提供多种语言的xpath路径