Android之项目中调用已有.so库

注意该.so库指的是android平台的,非一般linux、unix平台;

1、现有库libcom_ycan_testLib.so

2、新建android项目TestLib2

3、添加新类:

类名:testLib

包路径:参考现有库名,应为com.ycan

4、在新类中声明库的本地方法,如下:

package com.ycan;  public class PDFLib {  public native int add (int a, int b);  public native int sub (int a, int b);  
}  
这些接口函数,应该由库的提供者告诉你吧,我目前是这样认为的。

5、然后把库文件拷贝到如下目录:

\workspace\TestLib2\libs\armeabi

似乎必须是这个路径吧,我刚开始没有armeabi目录,结果运行出错,最后自己新建了一个这样的目录,才ok了。

6、在主类中调用库接口,我的库是做加减法的,基本调用代码如下:

package com.testlib2;  import com.ycan.testLib;  import android.os.Bundle;  
import android.app.Activity;  
import android.view.Menu;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.Toast;  public class MainActivity extends Activity {  private Button btnAdd;  private Button btnSub;  private EditText num1;  private EditText num2;  private EditText result;  private int a,b,rlt;  private testLib lib = new testLib();  @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  btnAdd = (Button)findViewById(R.id.button_add);  btnSub = (Button)findViewById(R.id.button_sub);  num1 = (EditText)findViewById(R.id.num1);  num2 = (EditText)findViewById(R.id.num2);  result = (EditText)findViewById(R.id.num3);  btnAdd.setOnClickListener(new OnClickListener(){  @Override  public void onClick(View v) {  // TODO Auto-generated method stub  String strnum1 = num1.getText().toString();  a = Integer.parseInt(strnum1);  String strnum2 = num2.getText().toString();  b = Integer.parseInt(strnum2);  rlt = lib.add(a,b);  Dostop(rlt);  }  });  btnSub.setOnClickListener(new OnClickListener()  {  @Override  public void onClick(View v) {  // TODO Auto-generated method stub  String strnum1 = num1.getText().toString();  a = Integer.parseInt(strnum1);  String strnum2 = num2.getText().toString();  b = Integer.parseInt(strnum2);  rlt = lib.sub(a,b);  Dostop(rlt);  }  }  );  }  static {          System.loadLibrary("com_ycan_testLib");      }  private void Dostop(int number){  Toast.makeText(this, ""+number, 8).show();//显示8秒  String x=Integer.toString(rlt);   result.setText(x);  }  @Override  public boolean onCreateOptionsMenu(Menu menu) {  getMenuInflater().inflate(R.menu.activity_main, menu);  return true;  }  
}  
最后运行效果:




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组面试题--数组求和

题目描述&#xff1a;给定一个数组&#xff0c;实现函数用一行代码返回这个数组的和 思路&#xff1a;递归即可 1 #include <iostream>2 #include <queue>3 #include <climits>4 #include <algorithm>5 #include <memory.h>6 #include <stdio…

iNeuOS工业互联网操作系统,矿山动态产量计量系统和铁路车辆识别系统应用场景案例...

目 录1. 概述... 22. 平台演示... 23. 矿山动态产量计量系统... 24. 铁路车辆识别系统... 41. 概述iNeuOS工业互联网操作系统增加矿山动态产量计量和铁路车辆识别系统&#xff0c;提高矿山动态产量计量精度和完全避免产量核实误差的情况&#xff1…

85元一个万能工具箱,配齐24种螺丝刀+扳手,媲美德国工艺,家庭必备

▲ 点击查看对当代的男生来说&#xff0c;有什么技能是必须掌握的&#xff1f;自然是修理各种各样的东西啦~除了修电脑&#xff0c;还要修各种电器啊、家具啊之类的&#xff0c;讲真&#xff0c;会修理的男人都很帅&#xff01;实用性能也满分&#xff0c;相当于女孩子会做饭一…

poj1505

题意&#xff1a;给出一个数列有n个数&#xff0c;要求用分割分把这个数列分成m段&#xff0c;不能改变原数列的顺序。每段至少一个数。求使得加和最大的那段的加和最小的划分方案。如果有多组解的话先要保证第一段和尽量小&#xff0c;若仍有多组解&#xff0c;要先保证第二段…

mysql出现连接错误不识别 utf8mb4

2019独角兽企业重金招聘Python工程师标准>>> 出现这样的错误&#xff0c;指的是不识别该字符集。 可能是 数据库 里面配置 或者是 连接属性 配置了该字符集那么修改回来即可。 还有一种情况就是 &#xff0c;java-connert-sql连接包&#xff0c;版本太低了。比如 低…

Android之录音--AudioRecord、MediaRecorder

Android提供了两个API用于实现录音功能&#xff1a;android.media.AudioRecord、android.media.MediaRecorder。 网上有很多谈论这两个类的资料。现在大致总结下&#xff1a; 1、AudioRecord 主要是实现边录边播&#xff08;AudioRecordAudioTrack&#xff09;以及对音频的实时…

JSFL 获取当前脚本路径,执行其他脚本

Application.jsfl为程序入口&#xff0c;导入其他jsfl 【Common.jsfl】function trace() {fl.trace(Array.prototype.join.call(arguments, " ")); } 【Application.jsfl】var JSFL_PATH fl.scriptURI.substr(0,fl.scriptURI.lastIndexOf("/")1); var inc…

一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI

前言之前发布过第一个版本,有兴趣的可以去看看: NET Core 基于Quartz的UI可视化操作组件 GZY.Quartz.MUI 简介GitHub开源地址:l2999019/GZY.Quartz.MUI: 基于Quartz的轻量级,注入化的UI组件 总而言之,这个组件主要想做的就是:像swaggerUI一样,项目入侵量小,仅需要在Startup中注…

越绿自己,就会越强?

1 我们要求不高的&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 小区的猫竟然通过监控抓老鼠&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 不同职业的相亲对象&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 别人家的年终奖&#xff0c…

oracle死锁解决常用方法(屡试不爽)

--1.查询被锁的情况 select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l.object_id  o.object_id and l.session_ids.sid; --2.用下面语句kill掉死锁的进程 alter system kill session 24,111; --(其中24,111分别是上面…

Lync Server 2010迁移至Lync Server 2013部署系列 Part18:开启Lync 2013 Mobility

当我们将内部Lync 功能开通后&#xff0c;我们除了需要发布边缘开启外部登录功能外&#xff0c;我们还需要向用户提供Lync 手机登录功能&#xff0c;那么在今天的博文中我们就介绍一下关于如何开启Lync Mobility功能&#xff0c;就Lync 2013来讲&#xff0c;我个人认为开启Mobi…

使用springfox 集成swagger 与spring mvc

2019独角兽企业重金招聘Python工程师标准>>> 创建一个maven 模块 将springfox相关的配置都配置在一个单独的api模块中&#xff0c;可以把这个模块当成web应用跑起来。 <pluginRepositories> <pluginRepository> <id>jcenter-snapshots</id>…

Android之 AudioTrack学习

AudioTrack主要是用来播放声音的&#xff0c;AudioTrack贯穿了JAVA层,JNI层和Native层。 AudioTrack JAVA层&#xff1a; framework\base\media\java\android\media\AudioTrack.java 以AudioTrack的使用方法举例&#xff1a;pp] // 得到一个满足最小要求的缓冲区的大小 int b…

技术分享 | CodeReview主要Review什么?

源宝导读&#xff1a;Code Review, 意即代码审查,是指一种有意识和系统的召集其他程序员来检查彼此的代码是否有错误的地方. 在敏捷团队中推行CodeReview, 可以帮助团队快速成长.本文将分享在"天际-建模平台"如何推行&实践CodeReview。一、为什么要 Code Review?…

Oracle中的USEREVN()

1.USEREVN() 返回当前用户环境的信息,opt可以是: ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE 1.ISDBA 查看当前用户是否是DBA如果是则返回true SQL> select userenv(isdba) from dual; USEREN ------ FALSE 2.SESSION 返回会话标志 SQL>…

你尿尿的时长是不是21秒?2次登上Nature封面的他,靠研究拉尿获得“诺贝尔奖”.........

全世界只有3.14 % 的人关注了爆炸吧知识男人的快乐就是这么朴实无华为什么蚊子不会被雨滴砸死&#xff1f;这个发在知乎上会被质疑患有十年脑血栓的问题&#xff0c;获得了2015年的中国搞笑诺贝尔奖——菠萝科学奖。获奖者结束获奖感言的方式也很搞笑&#xff1a;这个直接在“诺…

SQL优化总结

SQL 的优化主要涉及几个方面&#xff1a; &#xff08;1&#xff09; 相关的统计信息缺失或者不准确 &#xff08;2&#xff09; 索引问题 &#xff08;3&#xff09; SQL 的本身的效率问题&#xff0c;比如使用绑定变量&#xff0c;批量DML 采用bulk等&#xff0c;这…

php curl用法

2019独角兽企业重金招聘Python工程师标准>>> curl 是使用URL语法的传送文件工具&#xff0c;支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传&#xff0c;kerberos、基于HTT格式的上传、代理、…

Ubuntu之12.04常用快捷键——记住这些你就是高手啦!

桌面 ALT F1: 聚焦到桌面左侧任务导航栏&#xff0c;可按上下键导航。 ALT F2: 运行命令 ALT F4: 关闭窗口 ALT TAB: 切换程序窗口 ALT 空格: 打开窗口菜单 PRINT: 桌面截图 SUPER: 打开Dash面板&#xff0c;可搜索或浏览项目&#xff0c;默认有个搜索框&#xff0c;按“…

Zabbix RCE with API JSON-RPC

测试脚本: #!/usr/bin/env python # -*- coding: utf-8 -*- # Software Link: http://www.zabbix.com/download.php # Version: 2.2 - 3.0.3import requests import json import sysdef verify(url,hostid):url url /api_jsonrpc.php ### Dont editlogin Admin ##…