实现自己的HAL-13 控制led(控制led 的app),从app 到 hal 到底层内核kernel层的驱动 的实现
Posted 杨斌并
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现自己的HAL-13 控制led(控制led 的app),从app 到 hal 到底层内核kernel层的驱动 的实现相关的知识,希望对你有一定的参考价值。
控制led 的app
- MainActivity.java 代码
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.app.HelloWorldServiceManger;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity
private boolean isInit;
public static final String TAG = "hello_world_activity";
private HelloWorldServiceManger service;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
service = (HelloWorldServiceManger) getSystemService(getString(R.string.server_name));
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
isInit = service.init();
if (isInit)
Log.d(TAG, "onClick: init成功");
else
Log.d(TAG, "onClick: init失败");
);
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
boolean close = service.ledClose();
if (close)
Log.d(TAG, "onClick: close成功");
else
Log.d(TAG, "onClick: close失败");
);
findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
boolean open = false;
open = service.ledOpen();
if (open)
Log.d(TAG, "onClick: open成功");
else
Log.d(TAG, "onClick: open失败");
);
findViewById(R.id.btn3).setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
boolean openDevice = false;
openDevice = service.openLedDevice();
if (openDevice)
Log.d(TAG, "onClick: openLedDevice成功");
else
Log.d(TAG, "onClick: openLedDevice失败");
);
findViewById(R.id.btn4).setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
boolean closeDevice = false;
closeDevice = service.closeLedDevice();
if (closeDevice)
Log.d(TAG, "onClick: closeLedDevice成功");
else
Log.d(TAG, "onClick: closeLedDevice失败");
);
- strings.xml
<resources>
<string name="app_name">My Application</string>
<string name="action_settings">Settings</string>
<!-- Strings used for fragments for navigation -->
<string name="first_fragment_label">First Fragment</string>
<string name="second_fragment_label">Second Fragment</string>
<string name="next">Next</string>
<string name="previous">Previous</string>
<string name="hello_first_fragment">Hello first fragment</string>
<string name="hello_second_fragment">Hello second fragment. Arg: %1$s</string>
<string name="close">关闭led</string>
<string name="server_name">helloworldservice</string>
<string name="init">初始化</string>
<string name="open">打开led</string>
<string name="open_led_device">打开led设备</string>
<string name="close_led_device">关闭led设备</string>
</resources>
- 编译 生成apk
mmm packages/apps/HelloWorld/
- 打包system.img 镜像
make snod
显示my Application app 说明成功
具体操作请看 系统编译自己的app
注意
- 操作时需要给节点, 用户的访问读写权限
chmod 0666 /dev/hello_led
- 需要关闭selinux 否者不可以获取到系统服务
getenforce
说明selinux 开启状态,获取不到系统helloworld服务
- 关闭selinux
## 打开selinux
setenforce 1
## 关闭selinux
setenforce 0
setenforce 0
getenforce
说明selinux 关闭状态,可以获取到系统helloworld服务
以上是关于实现自己的HAL-13 控制led(控制led 的app),从app 到 hal 到底层内核kernel层的驱动 的实现的主要内容,如果未能解决你的问题,请参考以下文章
实现自己的HAL-9 控制led(驱动),从app 到 hal 到底层内核kernel层的驱动 的实现
实现自己的HAL-9 控制led(驱动),从app 到 hal 到底层内核kernel层的驱动 的实现
实现自己的HAL-14 控制led(内核设备节点的访问权限的动态配置),从app 到 hal 到底层内核kernel层的驱动 的实现
实现自己的HAL-14 控制led(内核设备节点的访问权限的动态配置),从app 到 hal 到底层内核kernel层的驱动 的实现
实现自己的HAL-12 控制led(自定义的系统service的实现),从app 到 hal 到底层内核kernel层的驱动 的实现
实现自己的HAL-12 控制led(自定义的系统service的实现),从app 到 hal 到底层内核kernel层的驱动 的实现