android之应用程序LED
16lz
2021-01-26
http://www.arm9home.net/read.php?tid-14336-fpage-0-toread--page-1.html
参考友善的LED程序,自己也写了个,不是用友善的libfriendlyarm-hardware.so,自己用NDK中的例子hello-jni写了个程序,已经编译成libhello-jni.so,可惜上不了图。
自己摸索了好久总算有点收获,感谢各位网友的帮忙。部门源码贴出来给大家参考! 刚搞完就拿出来分享了,欢迎大家指正。有谁想看libfriendlyarm-hardware.so的源码的可以参考这
个。
JNI部分 用C语言实现
复制代码
|
APP部分即JAVA
复制代码
|
图片:
图片:
应用程序在这
右边的那个LED程序是我的
程序下载在 http://www.arm9home.net/job.php?action-download-pid-107653-tid-14336-aid-2661.html
http://www.arm9home.net/read.php?tid-14366-fpage-0-toread--page-1.html
Myled.rar(65 K) 下载次数:310
Myled_apk.rar(15 K) 下载次数:207
windows系统上安装与使用Android NDK r5 .rar(8 K) 下载次数:210
Android通过JNI调用驱动程序(完全解析实例)...rar(358 K) 下载次数:363
在主界面
checkbox做的
Myled.java
复制代码
- package com.led;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.CheckBox;
- import android.widget.CompoundButton;
- import com.LedCtr.LedCtr;
- public class Myled extends Activity {
- /** Called when the activity is first created. */
- private CheckBox checkBox1;
- private CheckBox checkBox2;
- private CheckBox checkBox3;
- private CheckBox checkBox4;
- LedCtr led;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- led=new LedCtr();
- led.openled();
- led.setLedState(0,0);
- led.setLedState(1,0);
- led.setLedState(2,0);
- led.setLedState(3,0);
- checkBox1=(CheckBox) findViewById(R.id.cb1);
- checkBox2=(CheckBox) findViewById(R.id.cb2);
- checkBox3=(CheckBox) findViewById(R.id.cb3);
- checkBox4=(CheckBox) findViewById(R.id.cb4);
- checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
- @Override
- public void onCheckedChanged(CompoundButton buttonView,
- boolean isChecked) {
- if(checkBox1.isChecked()){
- led.setLedState(0,1);
- }
- else
- {
- led.setLedState(0,0);
- }
- }});
- checkBox2.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
- @Override
- public void onCheckedChanged(CompoundButton buttonView,
- boolean isChecked) {
- if(checkBox2.isChecked()){
- led.setLedState(1,1);
- }
- else
- {
- led.setLedState(1,0);
- }
- }});
- checkBox3.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
- @Override
- public void onCheckedChanged(CompoundButton buttonView,
- boolean isChecked) {
- if(checkBox3.isChecked()){
- led.setLedState(2,1);
- }
- else
- {
- led.setLedState(2,0);
- }
- }});
- checkBox4.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
- @Override
- public void onCheckedChanged(CompoundButton buttonView,
- boolean isChecked) {
- if(checkBox4.isChecked()){
- led.setLedState(3,1);
- }
- else
- {
- led.setLedState(3,0);
- }
- }});
- }
- }
LedCtr.java
复制代码
- package com.LedCtr;
- public class LedCtr {
- public native int openled();
- public native int setLedState(int ledID,int ledState);
- public native int closeled();
- public native StringunimplementedStringFromJNI();
- static {
- System.loadLibrary("led-jni");
- }
- }
led-jni
复制代码
- /*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
- #include <string.h>
- #include <jni.h>
- #include <fcntl.h> /*包括文件操作,如open() read() close()write()等*/
- int fd;
- /* This is a trivial JNI example where we use a native method
- * to return a new VM String. See the corresponding Java source
- * file located at:
- *
- * apps/samples/hello-jni/project/src/com/example/HelloJni/HelloJni.java
- */
- jstring
- Java_com_LedCtr_LedCtr_stringFromJNI( JNIEnv* env,
- jobject thiz )
- {
- return (*env)->NewStringUTF(env, "Hello from JNI create by carlin !");
- }
- jint Java_com_LedCtr_LedCtr_openled( JNIEnv* env,
- jobject thiz )
- {
- fd = open("/dev/leds0", O_RDONLY);
- if (fd < 0)
- {
- fd = open("/dev/leds", O_RDONLY);
- return 1;
- }
- return 0;
- }
- jint Java_com_LedCtr_LedCtr_setLedState( JNIEnv* env,
- jobject thiz ,jint ledID,jint ledState)
- {
- ioctl(fd,ledState, ledID);
- return 1;
- }
- jint Java_com_LedCtr_LedCtr_closeled( JNIEnv* env,
- jobject thiz )
- {
- close(fd);
- return 1;
- }
更多相关文章
- android中bitmap和drawable之间的转换
- Android中webview和js之间的交互及注意事项
- Android(安卓)编程常见问题解答
- Android通过Intent发送电子邮件含附件
- MediaPlayer实现带播放条的音乐播放和视频播放,可以作为程序参考
- Android之Adapter优化
- android JNI 使用 for mac
- PC 与 Android(安卓)的adb同步通信(一)
- 程序代码删除联系人的分组