I.MX6 Android backlight modify by C demo

简介: /************************************************************************** * I.MX6 Android backlight modify by C demo * 说明: * 因为一些特殊情况,需要添加一个这个简单的控制程序来控制android背光 * 亮度,个人感觉是没有必要的,但是应要求还是加上。
/**************************************************************************
 *             I.MX6 Android backlight modify by C demo
 * 说明:
 *     因为一些特殊情况,需要添加一个这个简单的控制程序来控制android背光
 * 亮度,个人感觉是没有必要的,但是应要求还是加上。
 *
 *                                      2016-5-14 深圳 南山平山村 曾剑锋
 *************************************************************************/

#include <stdio.h>  
#include <stdlib.h>  
#include <unistd.h>  
#include <sys/types.h>  
#include <sys/stat.h>  
#include <fcntl.h>      
#include <termios.h>    
#include <string.h>
#include <errno.h>  

#define BACKLIGHT0_PATH "/sys/class/backlight/pwm-backlight.0/brightness"
#define BACKLIGHT1_PATH "/sys/class/backlight/pwm-backlight.1/brightness"

//#define BACKLIGHT0_PATH "brightness0"
//#define BACKLIGHT1_PATH "brightness1"

int help ( int argc );
int isDigitalStr(char *str);
int file_exists(char *filename);
void writeStringToFile(char *filePath, char *string);

int main(int argc, char **argv)  
{  
    int bl0 = 0;
    int bl1 = 0;
    
    if ( help( argc ) != 0)
        return -1;

    if ( !isDigitalStr(argv[1]) ) {
        printf("Please give a numeric string.\n");
        return -1;
    }   

    writeStringToFile(BACKLIGHT0_PATH, argv[1]);
    writeStringToFile(BACKLIGHT1_PATH, argv[1]);
}

void writeStringToFile(char *filePath, char *string) 
{
    int fd = 0;

    if ( file_exists(filePath) ) {

        fd = open(filePath, O_RDWR);

        ftruncate(fd, 0);
        write(fd, string, strlen(string));

        close(fd);

    }
}

int isDigitalStr(char *str)
{   
    int len = strlen(str);
    char *s = str;
    int i = 0;
 
    while( '0' <= *s && *s <= '9' && i < len){
        s++;
        i++;
    }

    if(i == len)
        return 1;
    else 
        return 0;       
}

int file_exists(char *filename) 
{ 
    if (access(filename, F_OK) == 0) {
        return 1;
    } else {
        printf("%s is not exist.\n", filename);
        return 0;
    }
}

int help( int argc ) 
{
    if ( argc != 2 ) {
        printf ( "USAGE:\n" );
        printf ( "    backlight <value>\n" );
        printf ( "    example:\n" );
        printf ( "        backlight 0\n" );
        return -1;
    }

    return 0;
}

 

目录
相关文章
|
API Android开发 计算机视觉
视觉智能平台有android人脸识别拍照demo?
视觉智能平台有android人脸识别拍照demo么?
108 0
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
251 0
|
4月前
|
XML API Android开发
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
本文介绍了如何使用androidx.preference库快速创建具有一级和二级菜单的Android设置界面的步骤和示例代码。
137 1
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
|
3月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
Java Android开发
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
|
Android开发
android和Flutter的混合工程Demo
Flutter和Android混合工程的启动逻辑与纯Flutter应用程序的启动逻辑略有不同。在混合工程中,您需要在Android项目中添加一些额外的代码来启动Flutter引擎并加载Flutter代码。以下是整个app的启动逻辑的详细解释
android和Flutter的混合工程Demo
|
设计模式 JSON 缓存
Android体系课学习 之 网络请求库Retrofit使用方式(附Demo)
- 网络请求在我们开发中起的很大比重,有一个好的网络框架可以节省我们的开发工作量,也可以避免一些在开发中不该出现的bug - Retrofit是一个轻量级框架,基于OkHttp的一个Restful框架
|
机器学习/深度学习 Java 物联网
Android TensorFlow Lite 初探 数字分类器(JAVA DEMO)
Android TensorFlow Lite 初探 数字分类器(JAVA DEMO)
275 0
Android TensorFlow Lite 初探 数字分类器(JAVA DEMO)
|
前端开发 数据库 Android开发
一文带你玩转安卓Kotlin+Retrofit+RxJava+MVP架构(附Demo)
一文带你玩转安卓Kotlin+Retrofit+RxJava+MVP架构
293 0
一文带你玩转安卓Kotlin+Retrofit+RxJava+MVP架构(附Demo)
|
SQL Java 数据库
安卓Jetpack组件Room数据库框架的使用(附Demo)
安卓Jetpack组件Room数据库框架的使用(附Demo)
356 0
安卓Jetpack组件Room数据库框架的使用(附Demo)