• I.MX6 Linux、Jni ioctl 差异


    /***********************************************************************
     *                      I.MX6 Linux、Jni ioctl 差异
     * 声明:
     *     在使用Jni的ioctl()的过程中,发现不能像普通的Linux函数那样使用,
     * 必须使用3各参数的ioctl()函数。
     * 
     *                                   2015-12-20 深圳 南山平山村 曾剑锋
     **********************************************************************/
    
    
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <string.h>
    #include <jni.h>
    
    #include "android/log.h"
    static const char *TAG="Buzz";
    #define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args)
    
    #define BUZZER_ENABLE   82
    #define BUZZER_FREQENCY 83
    #define BUZZER_DISABLE  84
    
    /*
     * Class:     com_android_buzz_Buzz
     * Method:    enable
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_enable
      (JNIEnv *env, jobject obj) {
        int fd = open("/dev/buzzer", O_RDWR);
        if ( fd == -1 ) {
            LOGE("open buzzer device error.");
            return;
        }
    
        // ioctl(fd, BUZZER_ENABLE);        // 不能这样使用
        ioctl(fd, BUZZER_ENABLE, 0);        // 得这么使用
    
        close(fd);
    
        //LOGE("enable buzzer device. ");
    }
    
    /*
     * Class:     com_android_buzz_Buzz
     * Method:    setFrequency
     * Signature: (I)V
     */
    JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_setFrequency
      (JNIEnv *env, jobject obj, jint frequency) {
    
        int fd = open("/dev/buzzer", O_RDWR);
        if ( fd == -1 ) {
            LOGE("open buzzer device error.");
            return;
        }
    
        ioctl(fd, BUZZER_FREQENCY, frequency);
    
        close(fd);
    
        //LOGE("set buzzer device frequency. ");
    }
    
    /*
     * Class:     com_android_buzz_Buzz
     * Method:    disable
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_disable
      (JNIEnv *env, jobject obj) {
    
        int fd = open("/dev/buzzer", O_RDWR);
        if ( fd == -1 ) {
            LOGE("open buzzer device error.");
            return;
        }
    
        // ioctl(fd, BUZZER_DISABLE);       // 不能这样使用
        ioctl(fd, BUZZER_DISABLE, 0);       // 得这么使用
    
        close(fd);
    
        //LOGE("disable buzzer device. ");
    }
  • 相关阅读:
    Web前端开发资源集锦
    刮刮卡效果
    html5游戏驴子跳
    Bootstrap3实现的响应式幻灯滑动效果个人作品集/博客网站模板
    40款免费社交图标素材
    移动端的推拉效果导航菜单-支持响应式及其多层菜单
    通过HTML5 Visibility API检测页面活动状态
    HTML5游戏开发引擎Pixi.js新手入门讲解
    滚动触发的翻转式文字引用效果
    11个实用的CSS学习工具
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5060715.html
Copyright © 2020-2023  润新知