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,一经查实,立即删除!

相关文章

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

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

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

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

poj1505

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

mysql出现连接错误不识别 utf8mb4

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

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

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

越绿自己,就会越强?

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

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

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

使用springfox 集成swagger 与spring mvc

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

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

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

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

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

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格式的上传、代理、…

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 ##…

探索 dotnet core 为何在 Windows7 系统需要补丁的原因

在一些 Windows 7 系统上&#xff0c;根据 dotnet 官方文档&#xff0c;需要安装上 KB2533623 补丁&#xff0c;才能运行 dotnet core 或 .NET 5 等应用。尽管非所有的设备都需要安装此&#xff0c;但这也让应用的分发不便&#xff0c;安装包上都需要带上补丁给用户安装。此补丁…

如何在单个测试中同时执行多个断言

前言虽然&#xff0c;推荐做法是每次测试只断言一件事&#xff0c;但是&#xff0c;在实际工作中&#xff0c;我们可能需要对同一个对象同时执行多个断言。例如&#xff0c;微软官方示例项目eShopOnContainers有一个测试用例的实现代码如下&#xff1a;[Fact] public async Tas…

使用ArcGIS Server发布我们的数据

原文:使用ArcGIS Server发布我们的数据引言 上一篇我们已经安装好了ArcGIS体系的服务软件&#xff0c;这一篇将介绍如何把我们自己的数据通过ArcGIS Server发布出去&#xff0c;并且能够通过Web页面进行显示和编辑。 发布数据服务 在进行WebGIS开发中&#xff0c;地图显示的内容…

MyBatis学习总结(17)——Mybatis分页插件PageHelper

2019独角兽企业重金招聘Python工程师标准>>> 如果你也在用Mybatis&#xff0c;建议尝试该分页插件&#xff0c;这一定是最方便使用的分页插件。 分页插件支持任何复杂的单表、多表分页&#xff0c;部分特殊情况请看重要提示。 想要使用分页插件&#xff1f;请看如何…

微信发力了,一键部署网站后端!

大家好&#xff0c;我是鱼皮。还记得么&#xff1f;之前我全程直播带大家从 0 到 1 做了一个包含前端、后端的 表情包网站项目 &#xff0c;支持搜索表情、自由裁切下载、给表情包配字等功能。爸爸表情包网站在线编辑下载但由于各方面的原因&#xff0c;我暂时将该网站战术下线…