Android底层字符传递给上层应用举例

Android底层字符传递给上层应用


1、Android的硬件抽象层读取相应的串口设备的数据:

static int uart_read_drv(struct uart_control_device_t *dev, char *buf, int count)
        { 
                int count1 = 0;
                count1 = read(fd, buf, count);
                if(count1 < 0)
                {
                        perror("read");
                } 
                return 0;
        }

2、 Android的JNI层经过回调之后,可以通过自定义的相应的结构体方法读取到硬件抽象层的数据,并反馈到上层:

static jchar uart_read(JNIEnv* env, jobject thiz) {
                char s_buf[100]={0};
                if (sUartDevice) {
                        sUartDevice->uart_read_hal(sUartDevice, s_buf, 1);
                }else{
                        LOGI("sUartDevice is null");
                }
                if (s_buf == 0) 
                LOGI("JNI: Lost info");
                else 
                {
                        LOGI("***********JNI:info length is : %d", strlen(s_buf));
                }
                return s_buf[0]; 
        }

3、Android的JNI和上层函数的对应描述:

static const JNINativeMethod gMethods[] = {
        ….
        { "_uart_data_update", 
                "()C",
                (void*)uart_read },
                ….
        };

4、Android的Framework层定义相应的本地接口方法:

private static native char _uart_data_update();

通过类的方法进行封装:
        public class Uart {
                static {
                System.loadLibrary("uart_runtime");
                Log.i("**********************Java Service", "loadLibrary sucess");
                } 
                 public Uart(){ 
                        _init();
                }
                public char GpsDataUpdate() {
                char s = _uart_data_update();
                        return s;
                }
                private static native boolean _init();
                private static native char _uart_data_update();
                 }

}

5、.Java上层App进行调用,并获得数据:

static Uart uartuart = new Uart();
        char s = uartuart.GpsDataUpdate();


=======做个参考。


时间: 2024-10-29 15:52:38

Android底层字符传递给上层应用举例的相关文章

Android触摸事件传递分析与实践

设计UI时,亲爱的交互设计师们总会有一些天马行空的想法,大多数情况下原生的控件已不能支持这些"看似简单"的交互逻辑,需要继承ListView.ViewPager.ScrollView甚至直接继承View来自定义一些特性来支撑.在处理触摸事件时,无可避免的需要重写onInterceptTouchEvent与onTouchEvent这两个方法.本文将从源码的角度,从这两个棘手的函数为切入点,对触摸事件在View中的传递逻辑进行梳理. 1.概述 本文中只简单的考虑单指触摸事件.一次触摸事件通

嵌入式开发-嵌入式的底层驱动方向和上层应用方向的分析

问题描述 嵌入式的底层驱动方向和上层应用方向的分析 刚刚得到帮助了解了方向,觉得搞嵌入式软件这两个方向其中之一,还是想进一步了解两者,以及两者的区别和学习内容,如果可以,给小弟提一点建议,谢谢 解决方案 底层驱动的技术要求比应用高,可以从应用入手,再掌握驱动之类的底层开发 解决方案二: 嵌入式行业新人系列之一 - 如何选择自己的嵌入式开发方向? 嵌入式开发联盟-www.mcuos.com Osboy原创:qq:82475491mcuos.com@gmail.com 废话不多说.首先声明osboy

Android底层故事

[TechWeb报道]7月31日消息,点心OS架构师万琼柱.小米科技首席架构师汪文俊.盛大乐众ROM架构师郭振做客第169期IT龙门阵,讲述Android底层故事. Android如何有效加载资源 点心OS架构师万琼柱演讲主题为<Android资源体系介绍>."资源"是程序运营逻辑之外的其他静态内容.使用资源机制,可协助分离UI展现和应用逻辑,使程序有更加结构,并适配不同的硬件配置等. 万琼柱讲解,通过资源ID分段,以最佳的方式从资源表中执行查找. AAPT:图片类已压缩过

请问在可穿戴设备的芯片固件开发中底层驱动开发与上层应用开发的区别是什么?

问题描述 请问在可穿戴设备的芯片固件开发中底层驱动开发与上层应用开发的区别是什么? 请问可穿戴设备的芯片固件开发中底层驱动开发与上层应用开发的区别是什么? 解决方案 固件底层驱动是面向硬件驱动,给上层提供调用接口,尽量与业务无关. 上层应用开发面向业务逻辑,使用底层驱动提供的接口,尽量与硬件无关

android 底层的 问题,求解决

问题描述 android 底层的 问题,求解决 我的apk包中有classes.dex文件,还有assets目录下的key文件, 我怎么在底层的代码中获得这两个文件呢?着急 谢谢 解决方案 classes.dex是你打包之后生成的文件.你读取它干嘛? assets下面的文件读取需要使用**AssetManager**类. 先在Activity里面调用getAssets() 来获取AssetManager引用. 再用AssetManager的open(String fileName, int ac

请问:android中intent传递对象的问题

问题描述 请问:android中intent传递对象的问题 请教个问题,如果如果 我用intent传递一个A类的对象a, a中包含类B的对象b.那么b还需要序列化吗? 理由呢? 解决方案 需要的,不然b里面的数据是传递不过去的

android-关于Android使用Intent传递对象问题

问题描述 关于Android使用Intent传递对象问题 mainactivity: Intent intent = new Intent(SearchResultActivity.this SearchResultDetailActivity.class); intent.putExtra(""poiItemDetail"" poiItemDetail); startActivityForResult(intent 3); secondactivity: PoiI

android 第一次启动 传递参数问题!

问题描述 android 第一次启动 传递参数问题! 类似百度云盘,下载某个资源时候,网页上有个高速下载按钮,点击然后下载下来的是百度云盘,然后云盘启动后就开始载你之前下地址的那个文件. 类似这个需求,android程序是怎么在启动后得知需要下载那个资源的? 解决方案 本地存放一个资源地址列表,每次进入程序就判断网络的资源地址列表和本地列表是否有不同,不同的就下载并替换资源,相同的就不下载,网络的地址资源列表存在而本地不存在的地址也下载其资源,同时更新本地资源列表.如果都相同,就不用更新,也不用

Android往服务器传递数据 不用框架不会影响性能吗?

问题描述 Android往服务器传递数据 不用框架不会影响性能吗? Android往服务器传递数据 不用框架不会影响性能吗?说真的 ................. 解决方案 性能开销在服务器的处理以及网络通讯,用不用框架影响不大.用httpclient足够了. 当然你用框架可能调用更简单.严格来说用了反倒性能更差. 解决方案二: 性能开销在服务器de处理以及网络通讯,用不用框架影响不大.用httpclient足够了. 解决方案三: 还是要看你的服务器需要处理的客户端数量,同时有多少客户端,然