Andriod/md/安卓app操作文档.md

147 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 安卓app操作文档
#### 一、实现目标
1. 实现页面按钮跳转页面
2. 点击按钮后页面显示来自JNI的字符串
#### 二、环境搭建
2.1 jdk安装
![jdk](C:\Users\xieshuhui\Desktop\jdk.png)
2.2 andriod studio 安装
![image-20241224104420533](C:\Users\xieshuhui\AppData\Roaming\Typora\typora-user-images\image-20241224104420533.png)
#### 三、具体实现
3.1 设置页面跳转
为了实现跳转页面,首先需要创建两个活动:(`MainActivity`主页面)和`SecondActivity`(跳转后的页面)
3.11 MainActivity
```
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnNavigate = findViewById(R.id.btnNavigate);
// 设置按钮点击事件跳转到SecondActivity
btnNavigate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
}
```
3.12 SecondActivity
```
package com.example.myapplication;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class SecondActivity extends AppCompatActivity {
static {
System.loadLibrary("native-lib"); // 加载JNI库
}
// 声明JNI方法
private native String getJNIString();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button btnShowJNI = findViewById(R.id.btnShowJNI);
TextView textViewFromJNI = findViewById(R.id.jniTextView);
// 设置按钮点击事件获取并显示JNI字符串
btnShowJNI.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 调用JNI方法并显示结果
textViewFromJNI.setText(getJNIString());
}
});
}
}
```
3.2 集成JNI
3.21 在`native-lib.cpp`中编写JNI方法以返回字符串
```
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_SecondActivity_getJNIString(JNIEnv* env, jobject /* this */) {
std::string hello = "Hello from JNI!";
return env->NewStringUTF(hello.c_str());
}
```
3.22 CMakeLists.txt编写
```
cmake_minimum_required(VERSION 3.10.2)
# Set project name
project("myapplication")
# Set the path for the source file (make sure the path is correct)
add_library(native-lib SHARED E:/CodeProject/AndroidProjects/MyApplication/app/src/main/cpp/native-lib.cpp)
# Find the log library (important for Android projects)
find_library( log-lib
log )
# Link the native library with the log library
target_link_libraries( native-lib
${log-lib} )
```
#### 四、运行结果
4.1 初始运行界面
![image-20241224113159992](C:\Users\xieshuhui\AppData\Roaming\Typora\typora-user-images\image-20241224113159992.png)
点击Page Jump跳转到第二页面
![3](C:\Users\xieshuhui\Desktop\3.png)
4.2 验证跳转功能
点击Show JNI String 按钮成功显示“Hello from JNI!”
![4](C:\Users\xieshuhui\Desktop\4.png)