使用Android Studio的New Project向导,创建一个Android项目。在向导中,注意将Minimum SDK的值设为至少API 30,因为Thermal的API需要。
运行一下,好,应用成功运行。
在Android Studio的Project面板中,选择Android视图,并点选app模块,依次选择菜单栏File->Add C++ to Module。完成之后,打开app模块下自动生成的cpp文件、CMakeLists.txt文件,其中CMakeLists.txt内容如下所示:

cmake_minimum_required(VERSION 3.18.1)project("myapplication1")add_library(myapplication1 SHARED myapplication1.cpp)find_library(log-lib log)target_link_libraries(myapplication1 ${log-lib})

接下来,打开MainActivity.java,并修改为如下所示:

public class MainActivity extends AppCompatActivity {static {System.loadLibrary("myapplication1");}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);exec();}private native void exec();
}

接下来,为MainActivity.java生成对应的JNI头文件com_hsc_myapplication1_MainActivity.h,并把它放在CMakeLists.txt同级目录下。打开cpp文件,输入内容如下所示:

#include "android/api-level.h"
#include "android/log.h"
#include "android/thermal.h"
#include "com_hsc_myapplication1_MainActivity.h"extern "C" {JNIEXPORT void JNICALL Java_com_hsc_myapplication1_MainActivity_exec(JNIEnv *, jobject) {const int api = android_get_device_api_level();if (api >= 30) {AThermalManager *thermalManager = AThermal_acquireManager();AThermalStatus status = AThermal_getCurrentThermalStatus(thermalManager);int iState;switch (status) {case ATHERMAL_STATUS_CRITICAL:iState = 4;break;case ATHERMAL_STATUS_EMERGENCY:iState = 5;break;case ATHERMAL_STATUS_ERROR:iState = -1;break;case ATHERMAL_STATUS_LIGHT:iState = 1;break;case ATHERMAL_STATUS_MODERATE:iState = 2;break;case ATHERMAL_STATUS_NONE:iState = 0;break;case ATHERMAL_STATUS_SEVERE:iState = 3;break;case ATHERMAL_STATUS_SHUTDOWN:iState = 6;break;default:iState = -1;break;}__android_log_print(ANDROID_LOG_DEBUG, "Harry", "%d", iState);AThermal_releaseManager(thermalManager);}
}
}

编译一下,报错如下所示:

C/C++: ld: error: undefined symbol: AThermal_acquireManager
C/C++: ld: error: undefined symbol: AThermal_getCurrentThermalStatus
C/C++: ld: error: undefined symbol: AThermal_releaseManager

修改CMakeLists.txt,如下所示:

...
find_library(log-lib log)
find_library(android-lib android)
target_link_libraries(myapplication1 ${log-lib} ${android-lib})

运行一下,得到结果如下所示:

05-17 18:23:59.366 19238 19238 D Harry   : 0

其它:

  • CMake 3.18.1
  • NDK 24.0.8215888

Android Thermal Demo小记相关推荐

  1. Android API Demo程序框架

    前言 android API Demo程序主要演示了Android常见API的使用方法, 本文将该程序的框架提取出来, 以作为自己研究和学习Android编程的一个示例收集框架,即将所有自己研究过的例 ...

  2. Android 系统(254)---Android libphonenumber Demo 手机号码归属地

    Android libphonenumber Demo 手机号码归属地 libphonenumber 是google 开源的库,提供手机号码格式化,来电归属地,运营商等多种功能十分强大,现在做个简单的 ...

  3. android demo示例代码,Android Service demo例子使用详解(示例代码)

    Android Service demo例子使用详解\ 概述 Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交互,而 ...

  4. 2D Pose人体关键点实时检测(Python/Android /C++ Demo)

    2D Pose人体关键点实时检测(Python/Android /C++ Demo) 目录 2D Pose人体关键点实时检测(Python/Android /C++ Demo) 1.人体关键点数据集 ...

  5. Android TV Demo 工程,其中包含 TV 常用的自定义控件,飞框效果实现,外边框效果实现,UI 控件焦点自动处理,使 TV 开发更简单,更高效。

    TVLibraryDemo 项目地址:zhangtiansheng/TVLibraryDemo  简介:Android TV Demo 工程,其中包含 TV 常用的自定义控件,飞框效果实现,外边框效果 ...

  6. android通讯录demo

    android通讯录demo 视频演示 主要代码实现类 界面样式 项目下载链接 视频演示 android通讯录 主要代码实现类 MainActivity package com.example.mai ...

  7. Android中demo的编写

    Android中demo的编写 在Android开放中,难免需要学习或验证某个问题,编写一个demo运行一下可以很好的满足这个需求.这样的demo需要重点突出,且只针对某个问题,编写快速,添加或者删除 ...

  8. 海康网络摄像头android,海康网络摄像头的Android端Demo

    [实例简介]海康网络摄像头的Android端Demo; 可实现通过wifi实时读取并显示摄像头捕捉的画面; [实例截图] [核心代码] /** * DemoActivity Class * @auth ...

  9. [Android]第一个Android软件/demo

    [Android]第一个Android软件/demo 前期准备 正文 下载安装Android studio 开始第一个Android 应用 问题1来了 下载AVD 第二个问题来咯 前期准备 编译器:使 ...

最新文章

  1. linux 内核位置无关,Linux内核启动阶段虚实地址映射
  2. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )
  3. GT考试(bzoj 1009)
  4. atomic java_在Java中添加@atomic操作
  5. LeetCode 1774. 最接近目标价格的甜点成本(DFS / 01背包)
  6. (pytorch-深度学习)语言模型-学习笔记
  7. 深度学习(三十七)优化求解系列之(1)简单理解梯度下降
  8. 《设计模式详解》创建型模式 - 单例模式
  9. android 改变音乐格式,音乐速度变更器app-音乐速度变更器下载v9.4.4-hu安卓版-西西软件下载...
  10. Windows勒索病毒“永恒之蓝”漏洞补丁包
  11. PTA---约分最简分式 (10 分)
  12. 例题 2-1 aabb 2-2 3n+1问题
  13. c# 阿拉伯数字转成中文
  14. 注释里面 //TODO... 的作用
  15. Windows安装最新版Pygame
  16. 关于SCO Unix 串口通讯
  17. Python数据分析_电商数据分析报告
  18. 【论文阅读笔记】Ristretto: Hardware-Oriented Approximation of Convolutional Neural Networks
  19. 8乘8led点阵显示数字_基于51单片机的8乘8LED点阵显示屏的设计
  20. 局域网SDN技术硬核内幕 - 前传 突破多核的瓶颈——虚拟化

热门文章

  1. itk中的数据孔洞填充
  2. 最简要的DPlayer样例
  3. .NET与.NET Core如何实现邮箱验证
  4. 前方高能!2000+开源数据集来袭,注意收藏
  5. 计算机管理器有感叹号,win7系统设备管理器键盘有黄色感叹号怎么办【图文】...
  6. Unity Inverse Kinematics(IK)的使用
  7. 特别报道:机器人时代即将开启
  8. 自媒体该怎么赚钱?新手运营自媒体方法
  9. 如何去除视频水印?分享两种去除视频水印的方法
  10. 批量自动化生成PDF目录标签