• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android(Java)控制GPIO的方法及耗时分析,androidgpio

Android(Java)控制GPIO的方法及耗时分析,androidgpio

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android gpio,java gpio,gpio,gpio接口,gpio是什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android(Java)控制GPIO的方法及耗时分析,androidgpio


  前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO。实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是权限。本文重点介绍权限的配置并对在Java层控制GPIO的耗时做简单分析。

  以高通平台为例,权限配置主要修改HLOS/device/qcom/sepolicy/common目录下的file.te、file_contexts和system_app.te三个文件。

  file.te修改如下,

# GPIO accessed by system app
type sysfs_gpio, fs_type, sysfs_type;

  file_contexts修改如下,

/sys/devices/soc/1010000.pinctrl/gpio/gpio62/value                        u:object_r:sysfs_gpio:s0
/sys/devices/soc/1010000.pinctrl/gpio/gpio63/value                        u:object_r:sysfs_gpio:s0

  system_app.te修改如下,

allow system_app sysfs_gpio:file rw_file_perms;

  修改完成后执行make bootimage命令,生成boot.img并使用fastboot烧录。

  Android应用修改AndroidManifest.xml文件,在manifest节点中添加android:sharedUserId="android.uid.system。修改Android.mk文件,添加LOCAL_CERTIFICATE := platform设置签名。Java控制GPIO的示例代码如下,

    void IOCtrl(int pin, int level) {
        String path;

        path = "/sys/class/gpio/gpio" + pin + "/value";
        try {
            FileOutputStream out = new FileOutputStream(path);
            out.write(level);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
    }

    if (trigger == 0x01) {
        trigger = 0x00;
        IOCtrl(62, '1');
        IOCtrl(63, '1');
    } else {
        trigger = 0x01;
        IOCtrl(62, '0');
        IOCtrl(63, '0');
    }

  以上代码执行结果如下图所示,可以看到,两个IO被拉高前后相差约2.5ms。

  说明:如果只是做测试,可以使用setenforce 0命令设置SELinux为permissive模式,就可以用Android Studio编译测试应用控制GPIO,更为方便。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android(Java)控制GPIO的方法及耗时分析,androidgpio

相关文章

  • 2017-05-26linux编程之socket
  • 2017-05-26Android在onCreate()方法中可以获取到宽高等信息
  • 2017-05-26Android 优秀的开源框架整理,android开源框架
  • 2017-05-222.6.3 ViewPager的简单使用
  • 2017-05-26Android软件开发之SharedPreferences,sharedpreferences
  • 2017-05-26Android的Message Pool是什么——源码角度分析,androidpool
  • 2017-05-26Android之SAX解析XML文件,androidsaxxml
  • 2017-05-26单例模式——实战应用详解,单例实战详解
  • 2017-05-26Kotlin操作符重载:把标准操作加入到任何类中(KAD 17),kotlinkad
  • 2017-05-26关于安卓的一些初步认识,安卓认识

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 【lushengduan】01、搭建安卓App开发环境 编写程序HelloWorld,lushengduan安卓
    • Android--控件属性汇总
    • React-Native系列Android——Touch事件原理及状态效果
    • Android 如何有效的解决内存泄漏的问题,android泄漏
    • 4.1.2 Activity初窥门径
    • 实现在矩形框中输入文字,可以显示剩余字数的功能,矩形字数
    • android学习第一天(android的介绍和基础):,android第一天
    • 多选按钮(CheckBox),多选按钮checkbox
    • 使用C++实现QML的TreeView Model (二)
    • Android开发学习之路--网络编程之xml、json

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有