wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3402|回復: 0
打印 上一主題 下一主題
收起左側

安卓jni學習筆記

[復制鏈接]
跳轉到指定樓層
樓主
ID:639532 發表于 2019-11-11 10:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
Jni study

2019-2-18
在MTK6735平臺下,在eclipse.exe中做幾個按鈕調用JNI層,控制GPIO7的LED,亮滅閃爍。

eclipse使用教程:https://jingyan.baidu.com/article/0a52e3f4e241a0bf62ed72a7.html
eclipse 開發 jni:https://blog.csdn.net/dg_summer/article/details/52880232
解決NDK開發中Eclipse報錯“Unresolved inclusion jni.h”的最終方法:https://blog.csdn.net/xiaogazhang/article/details/46888781


一、JAVA的編寫
E:/%E6%9C%89%E9%81%93%E4%BA%91%E7%AC%94%E8%AE%B0/weixinobU7VjiHeyJ5xDKs8qyaJ-NAI2_E/aa8aec0db74e478ba5a48d8f7dd1bb64/482.png

    1、fragment_main.xml 如下
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="example.test.MainActivity$PlaceholderFragment" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="230dp"
        android:layout_marginTop="0dp"
        android:text="GPIO7 control"
        android:textSize="50sp" />
   
     <TextView
        android:id="@+id/tv_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="59dp"
        android:layout_marginTop="250dp"
        android:minHeight="100dip"
        android:minWidth="120dip"
        android:text="LED_ON" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_centerHorizontal="true"
        android:minHeight="100dip"
        android:minWidth="120dip"
        android:text="LED_OFF" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button2"
        android:layout_alignBottom="@+id/button2"
        android:layout_marginLeft="56dp"
        android:layout_toRightOf="@+id/textView1"
        android:minHeight="100dip"
        android:minWidth="120dip"
        android:text="LED_HZ" />

</RelativeLayout>

    2、MainActivity.java 如下
package example.test;


import example.test.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;


public class MainActivity extends Activity implements OnClickListener {

        private TextView tv_text;
       
       
        // 聲明自定義本地庫方法接口
        public native int LEDON();//void不能寫
        public native int LEDOFF();
        public native int LEDONOFF();
        // 自動加載本地庫文件,如文件名全稱為 gpio.so
        static{
                System.loadLibrary("gpio");
        }
       
       
       
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加載一個布局
        setContentView(R.layout.fragment_main);     
        
        // 找到按鈕
        Button btn_call = (Button) findViewById(R.id.button1);
        Button btn_call1 = (Button) findViewById(R.id.button2);
        Button btn_call2 = (Button) findViewById(R.id.button3);

        // 給button按鈕設置一個點擊事件
        btn_call.setOnClickListener(this);
        btn_call1.setOnClickListener(this);
        btn_call2.setOnClickListener(this);
      
        }

         // 當點擊按鈕的時候執行
    public void onClick(View v)
    {
        switch (v.getId())
        {
                case R.id.button1: LEDOFF(); System.out.println("1按鈕被點擊了");  break;
                case R.id.button2: LEDON(); System.out.println("2按鈕被點擊了");  break;
                case R.id.button3: LEDONOFF(); System.out.println("3按鈕被點擊了"); break;
                default:
                    break;
        }
    }
      
}

3、JNI層編寫
          Android.mk:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS :=-llog
LOCAL_MODULE    := gpio
LOCAL_SRC_FILES := gpio.cpp

include $(BUILD_SHARED_LIBRARY)

        gpio.c:
#include <jni.h>

//#include <termios.h>
//#include <unistd.h>
//#include <sys/types.h>
//#include <sys/stat.h>
#include <fcntl.h>
//#include <string.h>
//#include <stdio.h>
//#include <stdlib.h>
//#include <dirent.h>
//#include "mtk_gpio.h"
//#include <sys/ioctl.h>
#include <linux/ioctl.h>
//#include <errno.h>
#include <android/log.h>

#define TAG "BSK_MTK_GPIO"//過濾信息用的
#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定義LOGD類型
#define ALOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定義LOGI類型
#define ALOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定義LOGW類型
#define ALOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定義LOGE類型
#define ALOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定義LOGF類型

//#define BSK_LED_ON                _IOW('L',  1, unsigned long)
//#define BSK_LED_OFF                _IOW('L',  2, unsigned long)

extern "C" {
        JNIEXPORT jint  JNICALL  Java_example_test_MainActivity_LEDON(JNIEnv * env, jobject obj);
        JNIEXPORT jint  JNICALL  Java_example_test_MainActivity_LEDOFF(JNIEnv * env, jobject obj);
        JNIEXPORT jint  JNICALL  Java_example_test_MainActivity_LEDONOFF(JNIEnv * env, jobject obj);

//        JNIEXPORT jint  JNICALL  Java_example_gpio_MainActivity_setmode(JNIEnv * env, jobject obj, jint port,jint mode);
//        JNIEXPORT int JNICALL Java_com_bsk_xp6_MainActivity_Setthreshold(JNIEnv * env, jobject obj, jint channel);
};


JNIEXPORT jint  JNICALL  Java_example_test_MainActivity_LEDON(JNIEnv * env, jobject obj)
{
        int fd,ret;

        fd = open("/dev/led_device_file", O_RDWR);
        if(fd < 0)
        {
                ALOGD("open led_drv fb = %d\n",fd);
                return -1;
        }

        ret = ioctl(fd, 0x01, 1);//D1--on
        if(ret < 0)
                ALOGD("ioctl ret = %d\n",ret);

        close(fd);

        ALOGD("LED OFF !!!!!!!!!!!!!!!!!\n");
        return 0;
}


JNIEXPORT jint  JNICALL  Java_example_test_MainActivity_LEDOFF(JNIEnv * env, jobject obj)
{
        int fd,ret;

        fd = open("/dev/led_device_file", O_RDWR);
        if(fd < 0)
        {
                ALOGD("open led_drv\n");
                return -1;
        }

        ret = ioctl(fd, 0x02, 1);//D1--off
        if(ret < 0)
                ALOGD("ioctl ret = %d\n",ret);

        close(fd);

        ALOGD("LED ON !!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
        return 0;
}

JNIEXPORT jint  JNICALL  Java_example_test_MainActivity_LEDONOFF(JNIEnv * env, jobject obj)
{
        int fd,ret,i;

        fd = open("/dev/led_device_file", O_RDWR);
        if(fd < 0)
        {
                ALOGD("open led_drv\n");
                return -1;
        }


        ret = ioctl(fd, 0x01, 1);
        if(ret < 0)
                ALOGD("ioctl ret = %d\n",ret);

        for(i=1; i<20; i++)
        {
                usleep(200*1000);
                ioctl(fd, i%3, 1);
        }

        close(fd);

        ALOGD("LED ON OFF !!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
        return 0;
}

    PS:   cmd        --->                cd App工程目錄        --->        “ndk-build ”(該命令使cpp生成so)

二、調試JNI的內核調試打印手段

1、靜態,輸入以下命令  -》調試(按鍵按下) -ctrl+c退出 -》 查看輸出信息
adb shell cat /proc/kmsg >1.txt

2、動態,命令過濾你的內核調試信息然后輸出
grep "MTK*" /proc/kmsg
        或者
cat /proc/kmsg | grep tttttttttttttttttttttt

三、其它問題描述

1、生成Android App時最少版本4.0以上就不會生成appcompat_v7項目(為了兼容低版本產生的)       
2、eclipse編譯apk的時候遇到問題,但沒有提示,新建android工程提示:Failed to load properties file for project
    解決:
                    Properties->Java ->Build Path->class path Varable
                    添加變量ANDROID_SDK_HOME,指向sdk目錄。
     
                    但是編譯時候卡住了,,,,
                    后來把workspace(工作空間)里的隱藏文件刪了,所有工程重新導入,ok了。









評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
成人一级片网站| 最近2018年在线中文字幕高清| 一二三四视频社区在线| 国产精品久久久久久久久久三级| 欧美变态tickle挠乳网站| 国产三级三级三级精品8ⅰ区| 欧美日韩视频| 国产一区二区三区| 国产不卡在线| 午夜视频99| 国产免费麻豆视频| 亚洲一区二区三区高清视频| 欧产日产国产精品98| 日韩美女爱爱视频| 国产精品欧美久久| 555www成人网| 中文字幕亚洲激情| 3d成人h动漫网站入口| 亚洲欧美一区二区三区国产精品| 国产在线精品一区二区夜色| 久久精品久久久| 精品91福利视频| 手机在线免费看av| 另类av导航| 超级黄的软件| 欧美日韩看片| 成人毛片在线精品国产| 日韩成人高清视频| 在线国产视频一区| 久久久国产精品久久久| 欧美大片日本大片免费观看| 国产精品久久久久一区| 成人动漫视频在线| 秋霞av亚洲一区二区三| 国内成人在线| 99久久99热这里只有精品| 国产精品毛片视频| 免费视频成人| 久久久久久久| av美女在线观看| 嫩草香蕉在线91一二三区| 中文字幕在线影视资源| 人人澡人人爽人人揉| 无遮挡又色又刺激的女人视频| 男人操女人在线观看| 午夜精品小视频| 91av久久久| 亚洲永久精品视频| 在线中文字幕网站| 中文字幕一区二区三区波野结| 国产一级一级片| 中国毛片直接看| 污污视频网站在线免费观看| 国产呦小j女精品视频| 极品白嫩少妇无套内谢| 黄色短视频在线观看| 亚洲色图 在线视频| 国产免费黄色小视频| 精品日韩在线播放| 亚洲欧洲精品一区二区| 欧美另类视频在线| 久久久婷婷一区二区三区不卡| 成人高清视频观看www| 国产精品视频资源| 国产精品一区二区三| 国产精品亚洲激情| 国产精品爽黄69| 91精品中文在线| 蜜臀99久久精品久久久久小说| 18啪啪污污免费网站| 全部免费毛片在线播放一个| 午夜免费啪视频观看视频| 亚洲精品一区三区三区在线观看| 一区二区三区在线| 一区二区三区精品视频在线| 日韩中文字幕精品视频| 日本一区二区三区四区在线观看 | 欧美性bbwbbwbbwhd| 在线成人动漫| 国产精品2018| 国产偷倩在线播放| 女人在下体塞跳蛋在线观看| 天天躁日日躁成人字幕aⅴ| 毛片网站网址| 免费看片黄色| 天天弄天天操| 国产二级片在线| 懂色av一区二区夜夜嗨| 精品成人久久| 国产午夜精品一区二区三区欧美 | 日韩av一区二区在线影视| 亚久久调教视频| 精品一区二区三区免费| 成人黄页在线观看| 日本一区二区三区免费乱视频| 日韩一区在线看| 精品久久久久久中文字幕大豆网| 色综合一个色综合| 91精品国产色综合久久不卡电影| 亚洲国产一区二区三区在线观看| 日韩第一页在线| 最近日韩中文字幕中文| 欧美激情第1页| 国产精品国内视频| 国产日韩一区二区| 91亚洲精品国产| 精品一区二区中文字幕| 在线观看免费视频黄| 紧身裙女教师波多野结衣| 国产成人精品一区二区色戒| 天堂在线资源网| 午夜色香蕉导航| 最新av在线| 日本天码aⅴ片在线电影网站| 久久日本片精品aaaaa国产| 香蕉视频一区| 国产精品久久国产愉拍| av资源网一区| 精品欧美aⅴ在线网站| 精品免费视频一区二区| 欧美巨乳在线观看| 99久久自偷自偷国产精品不卡| 亚洲欧美日韩不卡| 波多野结衣网页| 久久亚洲国产成人精品性色| 国产成人无码www免费视频播放| 涩涩网站在线观看| 色综合888| 福利视频亚洲| 亚洲精品极品少妇16p| 久久精品噜噜噜成人av农村| 亚洲乱码国产乱码精品精98午夜| 欧美tk—视频vk| 国产成人av网| 伊人再见免费在线观看高清版 | 国产青青视频| 青草av在线| 美女网站一区| 韩国精品在线观看| 岛国av一区二区三区| 中文国产亚洲喷潮| 国产区一区二区三区| 精品久久久久久中文字幕2017| 免费看一级黄色| 日韩有码第一页| 宅男深夜国产| 亚洲国产天堂| 久久久蜜桃一区二区人| 玉足女爽爽91| 日韩在线激情视频| 欧美大陆一区二区| 欧美激情 亚洲| 国产三级第一页| 国产网站免费观看| 欧洲亚洲精品久久久久| 久久亚洲美女| 色综合久久综合网97色综合| 欧美麻豆久久久久久中文| 色视频一区二区三区| 欧美一区二区三区成人精品| 六月丁香综合网| 青青草视频在线免费观看| 超碰成人免费| 成人中文字幕电影| 日韩午夜电影在线观看| 91欧美激情另类亚洲| 最新天堂在线视频| 亚洲综合网av| 精品国产一区二区三区四区阿崩| 北岛玲精品视频在线观看| 美女免费视频一区二区| 欧美在线免费观看亚洲| 日产精品99久久久久久| 乱人伦xxxx国语对白| 久久精品视频8| xxx电影网| 日韩一级特黄| 国产精品一区专区| 精品日韩欧美在线| 国产一区二区三区四区五区在线 | 韩国中文免费在线视频| 国产一区福利| 99在线视频精品| 日韩激情在线视频| 日韩av免费电影| 97在线观看视频免费| 国产精品欧美色图| 国偷自产一区二区免费视频 | 一本色道久久综合亚洲精品高清| 亚洲色图19p| 欧美激情中文网| 免费高清一区二区三区| 国产成人精品片| 国产黄色片大全| 天美av一区二区三区久久| 91在线观看视频| 尤物yw午夜国产精品视频明星| 亚洲综合av一区| 日韩av在线天堂| 国产国产人免费人成免费视频| 日本免费精品| 91欧美激情一区二区三区成人| 国产亚洲欧美一区| 最新黄色av网站| 五月天激情国产综合婷婷婷| av超碰在线观看| 色乱码一区二区三区网站| 亚洲精品水蜜桃| 国产精品激情av电影在线观看| 精品国产鲁一鲁一区二区三区| 欧美 日韩 国产 在线| 日本性爱视频在线观看| 麻豆精品久久精品色综合| 日韩精品在线看片z| 日韩免费一区二区三区| 国产精品theporn动漫| 免费看av大片| 国产精品成人一区二区不卡| 欧美性高潮床叫视频 | 亚洲国产天堂网精品网站| 亚洲一区二区在| av一级在线观看| 色开心亚洲综合| 秋霞电影网一区二区| 亚洲欧美激情另类校园| 精品少妇在线视频| 六月丁香综合网| 欧美亚洲大片| 日本一区免费视频| 国产精品久久久久久久av大片| 亚洲永久无码7777kkk| 白丝美女让我捅| 精品视频免费| 在线观看视频一区二区| 神马影院午夜我不卡| 中文字幕精品视频在线观看| 免费观看在线黄色网| 久久精品国产99国产| 在线a欧美视频| 日韩亚洲在线视频| 欧美亚洲另类在线观看| 秋霞影院一区| 亚洲福利电影网| 蜜桃视频在线观看91| 国产99免费视频| 性网站在线观看| 成人av在线一区二区| 国产91免费看片| 亚洲女同二女同志奶水| 在线一级视频| 老司机精品视频在线| 久久97精品久久久久久久不卡| www.四虎在线| 国产精品666| 亚洲精品三级| 日韩色av导航| 欧产日产国产精品98| 久久综合色播| 久久精品30| 精品自在线视频| 摸摸摸bbb毛毛毛片| 日本aaa在线观看| 国产成人自拍高清视频在线免费播放 | 欧美顶级毛片在线播放| 日韩欧美精品网址| 日本一道在线观看| 亚洲男人天堂影院| 亚州国产精品| 精品日韩欧美在线| 污污视频在线免费| www.4438全国最大| 老鸭窝亚洲一区二区三区| 免费av在线一区| 国产人妻大战黑人20p| 欧美精品a∨在线观看不卡 | aa视频在线免费观看| 999色成人| 91久久精品网| 成人免费aaa| 免费看涩涩视频软件| 一区在线免费观看| 欧美大尺度激情区在线播放 | 成本人h片动漫网站在线观看| 青青草伊人久久| 国产成人精品日本亚洲专区61| 国产乡下妇女做爰视频| 大桥未久在线视频| 亚洲电影激情视频网站| av中文字幕av| 瑟瑟网站在线观看| 一区二区三区国产盗摄| 午夜精品久久久久久99热| 国产精品.www| 日韩制服一区| 欧美精品电影在线播放| 亚洲欧美天堂在线| 日本免费一区二区三区最新| av电影在线观看一区| 国产伦精品一区二区三区高清| 东京干手机福利视频| 蜜乳av综合| 日韩在线中文视频| 欧美成人黄色网| 韩国精品主播一区二区在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 手机看片日韩| 午夜精品网站| 91高清视频免费| 中文字字幕在线中文乱码| 国产不卡一区二区在线播放| 国产精品免费麻豆入口| 国产精品素人视频| 国产伦精品一区二区三区妓女| 99re8这里有精品热视频免费| 国产精品丝袜白浆摸在线| chinesemodel无套啪啪| 五月天网站亚洲| 激情四射综合网| 激情欧美日韩| 中文字幕の友人北条麻妃| www免费在线观看| 久久精品久久久久久| 综合图区欧美| 综合欧美一区二区三区| 中文在线中文字幕| 日本一区二区三区高清不卡| 欧美a级免费视频| 神马午夜dy888| 国产精品美女久久久久久2018| 我的公把我弄高潮了视频| 最新中文字幕在线视频| 18涩涩午夜精品.www| 欧美极品欧美精品欧美图片| 日韩福利一区二区| 天天影视涩香欲综合网| 三级黄色片播放| 欧美亚洲天堂| 日韩一卡二卡三卡国产欧美| av电影在线不卡| 亚洲欧美综合久久久久久v动漫| 国产午夜精品麻豆| 国产精品111| 伊甸园亚洲一区| 97热精品视频官网| 日韩一区免费视频| 日韩国产欧美在线观看| 欧美一区二区三区在线播放| 岛国爱情动作片在线| 国产日韩在线不卡| 欧美家庭影院| 国产精品国产成人国产三级| 九九热久久免费视频| 午夜亚洲影视| 美女喷白浆视频| 夜夜春成人影院| 亚洲第一页在线视频| 日本不卡一二三| 91在线视频导航| 99中文字幕一区| 欧美精品久久久久久久| 妞干网在线视频| 日韩大片免费观看视频播放| 麻豆精品视频在线原创| 色偷偷成人一区二区三区91 | 成人片在线看| 欧美大片xxxx| 日韩影视高清在线观看| 秋霞午夜一区二区| 亚洲精品自拍区在线观看| 国产成人午夜精品影院观看视频| 国产精品久久久久7777| 国产网友自拍视频导航网站在线观看| 337p亚洲精品色噜噜噜| 日韩少妇裸体做爰视频| 小小影院久久| 美女一区视频| 天堂在线中文资源| 91精品国产一区二区三区蜜臀| 日本少妇全体裸体洗澡| 欧美久久一级| 日韩精品不卡| 九色在线观看视频| 欧美剧在线免费观看网站| 黄色激情视频在线观看| 欧美激情成人在线| 日韩精品第一页| av在线1区2区| 日韩经典第一页| 亚洲第一第二区| 国产剧情一区二区| 91国产精品视频在线观看| 亚洲成人一区在线观看| 久久久久国产一区二区三区| 国产在线视频精品视频免费看| 国产亚洲综合在线| 国模无码视频一区| 卡通动漫国产精品| 国产精品三区四区| 你懂的视频在线观看| 亚洲国产精品yw在线观看 |