Android字符设备驱动开发基于高通msm8916【原创 】

本人才疏浅学,写一篇文档总结自己在msm8916平台上移植自己编写的简单的字符设备驱动开发的整个流程。这个小项目的主要功能是开发一个简单的APP,APP通过JNI去调用位于kernel的字符设备驱动。

APP的设计,开发平台Android Studio

主要的文件是下面的三个文件:

MainActivity.java文件的内容如下:

 1 package com.example.administrator.myled;
 2 
 3 import android.nfc.Tag;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.util.Log;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.Toast;
10 
11 
12 import com.zbahuang.led.lowlevel.LedNative;
13 
14 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
15     private final static String TAG = "zbzhuang";
16     Button btn_led_on;
17     Button btn_led_off;
18     LedNative myled;
19 
20 
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.activity_main);
25 
26         initUI();
27 
28         myled = new LedNative();
29         myled.openDev();
30         Log.d(TAG,"app:open Dev");
31     }
32 
33     private void initUI() {
34         btn_led_on = (Button) findViewById(R.id.btn_led_on);
35         btn_led_on.setOnClickListener(this);
36 
37         btn_led_off = (Button) findViewById(R.id.btn_led_off);
38         btn_led_off.setOnClickListener(this);
39     }
40 
41     @Override
42     public void onClick(View v) {
43         switch (v.getId()){
44             case R.id.btn_led_on:
45                 Toast.makeText(MainActivity.this,"拉灯-->",Toast.LENGTH_SHORT).show();
46                 Log.d(TAG,"app:LED on");
47                 myled.devOn();
48                 break;
49             case R.id.btn_led_off:
50                 Toast.makeText(MainActivity.this,"灭灯-->",Toast.LENGTH_SHORT).show();
51                 Log.d(TAG,"app:LED off");
52                 myled.devOff();
53                 break;
54             default:
55                 break;
56         }
57 
58     }
59 
60     @Override
61     protected void onDestroy() {
62         super.onDestroy();
63         myled.closeDev();
64         Log.d(TAG,"app:close Dev");
65     }
66 }
LedNative.java文件的内容如下:
在这个文件中所声明的方法是在jni中实现的啊。使用了特殊的关键字表示该方法是在JNI当中实现的啊。
 1 package com.zbahuang.led.lowlevel;
 2 
 3 /**
 4  * Created by Administrator on 2017/3/29 0029.
 5  */
 6 
 7 public class LedNative {
 8 
 9     static {
10         System.loadLibrary("led_jni");
11     }
12 
13     public native int openDev();
14     public native int devOn();
15     public native int devOff();
16     public native int closeDev();
17 }
18 package com.zbahuang.led.lowlevel;
19 
20 /**
21  * Created by Administrator on 2017/3/29 0029.
22  */
23 
24 public class LedNative {
25 
26     static {
27         System.loadLibrary("led_jni");
28     }
29 
30     public native int openDev();
31     public native int devOn();
32     public native int devOff();
33  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式小庄老师

要是觉得不错,就给我点支持吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值