使用jni计算两个数字的结果
来源:互联网 发布:纹身设计软件在线 编辑:程序博客网 时间:2024/06/12 20:23
在上一篇博客中介绍了在Android中使用jni,这篇博客介绍使用jni计算两个数字的和
首先看一下实现的效果
实现方式(省略了部分步骤,详细步骤请看我的上一篇博客在Android中使用jni)
第一步:在jni文件夹下新建一个Android.mk文件,并且在Android.mk中添加下面的代码
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) #编译生成的文件的类库叫什么名字 LOCAL_MODULE := hello #要编译的c文件 LOCAL_SRC_FILES := hello.c include $(BUILD_SHARED_LIBRARY)
第二步:在jni文件夹下新建一个hello.c文件,并且在hello.c中添加下面的代码
#include <jni.h>/** * 这个是实现两个数字相加的函数 * 第一个参数:java虚拟机的内存地址 * 第二个参数:调用add方法的java对象 * 第三个参数:第一个加数 * 第四个参数:第二个加数 */jint Java_com_example_adddemo_MainActivity_add(JNIEnv* env, jobject obj, jint i, jint j) {return i + j;}
#生成intel架构的so文件,默认状态下只能生成arm架构的so文件APP_ABI := armeabi armeabi-v7a x86
第四步:编译jni,编译成功后可以看到在libs文件夹下生成了so文件
第五步:修改activity_main.xml文件
<LinearLayout 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" tools:context=".MainActivity" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <!-- 第一个加数输入框 --> <EditText android:id="@+id/et_number1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="第一个数字" android:inputType="number"/> <!--显示加号 --> <TextView android:id="@+id/et_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+" android:textSize="20sp"/> <!-- 第二个加数输入框 --> <EditText android:id="@+id/et_number2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="第二个数字" android:inputType="number"/> <!-- 显示等于号 --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="=" android:textSize="20sp"/> <!-- 显示结果 --> <TextView android:id="@+id/tv_result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="20sp"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- 计算按钮 --> <Button android:id="@+id/et_sum" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="计算" android:onClick="click"/> </RelativeLayout></LinearLayout>
最后一步:修改MainActivity.java文件
package com.example.adddemo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity { static { //加载打包完毕的so类库 System.loadLibrary("hello"); } @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//计算按钮响应函数public void click(View view) {//获得布局文件上的控件EditText et_number1 = (EditText) findViewById(R.id.et_number1);EditText et_number2 = (EditText) findViewById(R.id.et_number2);TextView tv_result = (TextView) findViewById(R.id.tv_result);//获得用户输入的字符串String numberStr1 = et_number1.getText().toString();String numberStr2 = et_number2.getText().toString();//当用户没有输入数字if(numberStr1.equals("") || numberStr2.equals("")) {//使用吐司对话框提示用户输入数字Toast.makeText(this, "请输入两个执行相加运算的数字", Toast.LENGTH_SHORT).show();return;}//将用户输入的字符串转换成数字int number1 = Integer.parseInt(numberStr1);int number2 = Integer.parseInt(numberStr2);//计算两个数相加的结果int number3 = add(number1, number2);//显示两个数字相加的结果tv_result.setText(number3 + "");}//定义一个本地方法,实现两个数字相加,方法体由c语言实现public native int add(int number1, int number2);}
0 0
- 使用jni计算两个数字的结果
- 计算两个数字的最小公倍数
- 计算两个整数的百分比结果
- 将数字格式的计算结果转换为汉字结果
- Code Fragment-使用有意义的数字计算表达式代替具体的常量结果
- 不使用乘号 除号 计算两个数字的乘 和 除
- java如何不使用比较运算符计算两个数字的大小
- 写出两个数的计算结果,并判断是否正确
- 计算两个时间的时间差(结果为秒)
- 调用函数计算两个数的运算结果
- 将数字格式的计算结果转为汉字格式
- 写个小程序计算猜数字问题的结果
- 输入任意两个整数数字,计算这两个数字间能被3整除的数的和
- 415. Add Strings 计算两个数字字符串的和
- 计算从N个数字中取K个数字的结果集
- hive两个聚合函数的计算结果拼接成表并做进一步计算
- 汇编调用子程序计算输入的数字个数并以十进制形式显示计算结果【源码】
- Android 验证码:数字序列、计算结果
- c++ 内存分配过程(通过汇编,寄存器和Memory分析)
- 在RaspberryPi中用Pygame做信息显示屏
- 日志工具Log
- 当装了dreamweaver等某些IDE时,css失效了,其中1个原因
- dfafdsa
- 使用jni计算两个数字的结果
- 关于ArrayList的5道面试题
- 关系型数据库与HBase的数据储存方式区别
- [kuangbin带你飞]专题十二 基础DP1 B - Ignatius and the Princess IV
- Android framework修改----Android原生字体,连体字效果
- keil编译出现function abs declared implicitly的解决方法
- 转载:林仕鼎: 系统架构领域的一些学习材料
- Lightoj1038 概率dp + 因数分解
- iOS开发经验总结(上)