android电池温度报警
2014-10-28 16:41
92 查看
基于mtk平台的电池温度报警
基本思路:循环读取设备文件,读取到温度值,发送广播给上层应用,广播收到温度值后UI提示。代码如下:
Android.mk文件
基本思路:循环读取设备文件,读取到温度值,发送广播给上层应用,广播收到温度值后UI提示。代码如下:
#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <cutils/properties.h> #include <android/log.h> #include <sys/ioctl.h> #include <errno.h> #include <stdlib.h> #define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "battery_warning",__VA_ARGS__) #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "battery_warning",__VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO , "battery_warning",__VA_ARGS__) #define LOGW(...) __android_log_print(ANDROID_LOG_WARN , "battery_warning",__VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , "battery_warning",__VA_ARGS__) #define MAX_CHAR 100 #define MAX_LENGTH 1024 #define CMD "ps -t | grep ActivityManager" #define FILE_NAME "/sys/devices/platform/mt-battery/BatteryNotify" #define INTENT "am broadcast -n com.mediatek.batterywarning/com.mediatek.batterywarning.BatteryWarningReceiver -a android.intent.action.BATTERY_WARNING --ei type " int systemServerStarted(const char *cmd) { LOGD("systemServerStarted: %s \n", cmd); int res = 0; char buf_ps[MAX_LENGTH]; char ps[MAX_LENGTH]={0}; FILE *ptr; strcpy(ps, cmd); if((ptr=popen(ps, "r")) != NULL) { while(fgets(buf_ps, MAX_LENGTH, ptr) != NULL) //通过ps命令查找ActivityManager是否存在 { LOGD("cmd result: %s", buf_ps); if(strlen(buf_ps) > 0) { res = 1; break; } } pclose(ptr); ptr = NULL; } else { LOGE("popen error"); } return res; } void readType(char* buffer) { FILE * pFile; pFile = fopen(FILE_NAME, "r"); //打开设备文件 if(pFile == NULL) { LOGE("error opening file"); return; } else { if(fgets(buffer, MAX_CHAR, pFile) == NULL) { LOGE("can not get the string from the file"); return; } } int type = atoi(buffer); //转化为整形 if (type > 0 && systemServerStarted(CMD)) { LOGD("start activity by send intent to BatteryWarningReceiver, type = %s", buffer); char ps[MAX_LENGTH] = INTENT; strcat(ps,buffer); LOGD("os.system: %s", ps); system(ps); //发送广播附件电池温度,给上层应用 } fclose(pFile); } int main(int argc, char **argv) { char *buffer = (char*) malloc(MAX_CHAR * sizeof(char)); while(1) { readType(buffer); //读取设备文件中温度值 sleep(10); } free(buffer); return 0; }
Android.mk文件
#--------------------------------- LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := batterywarning.c LOCAL_SHARED_LIBRARIES := libc libcutils LOCAL_MODULE := batterywarning LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE) #----------------------------------------
相关文章推荐
- Android测试电池温度的小程序
- Android系统获取CPU和电池温度
- 获取android手机电池的电压和温度;
- android 电池 温度 屏幕亮度设计
- android 显示电池电量
- Android 获取电池基本信息代码
- Android如何得到电量、温度、电压
- Android 显示手机电池的当前电量
- Android中电池信息(Battery information)的取得
- android 电池管理之个人理解
- DS18B20温度测量报警 (可以设定温度上下限)
- Android开发之--WIFI,蓝牙,电池,背光,SD卡,摄像头,按键,MIC,重力感应等各种操作
- 电池电量android
- Android系列实例之:手机电池还剩多少
- Android开发之--(WIFI,蓝牙,电池,背光,SD卡,摄像头,按键,MIC,重力感应等)功能的简单使用
- Android 中支持的几种传感器(加速度、陀螺仪、亮度、地磁、方向、压力、近程、温度)
- 一个电子表 有时间 温度 闹钟 可以用上位机改变下位机的闹钟 温度报警上下限 采用模块
- Android 显示手机电池的当前电量
- android之检测手机电池
- Android 手机电池电量应用