[Android] hid设备按键流程简述】的更多相关文章

hexdump /dev/hidraw0就能看到usbhid设备传输过来的裸流 如:按下Input键 003ae60 0000 0096 8000 006b 0000 0000 0000 0000 * 003aea0 0000 0086 8000 0000 0000 0000 0000 0000 * 前面的估计是码流头(003ae60),还有按下(0096),松开(0086)等信息,识别按键有效信息是(006b) 006b其实是索引值,会在下表中寻找键值发送给Android,如:6b对应186…
近期一直在做Android USB Host 与USB Hid设备(STM32FXXX)的通信,遇到了很多问题.项目源码以及所遇到的其他问题可以见本博客其他相关文章,这里重点讲一下bulkTransfer()返回-1问题. 在百度上搜索,可以看到很多人也遇到了类似问题,按照“标准”例程写了代码,其他的步骤都没问题(getDeviceList().openDevice()等等),就是到了bulkTransfer()这一步总是返回小于0的值(-1).看网上的回复,解决方法也是各种各样,比如:检查端点…
做android 与USB HID设备的通信有段时间了,总结一下遇到的问题和解决方法: 1,第一次遇到的问题:android 版本低不支持usb hid, 被要求做相关项目的时候,就从mUsbManager.getDeviceList开始,郁闷了一周,就是返回NULL,从google上查找所有关于android usb的资料,最后才发现,android设备是2.3的不支持android.usb.hardware的包(android3.0之后才支持); 2,第二次:android的etc/perm…
蓝牙关闭的流程比打开流程要简单,主要就是一些profile的断连以及协议栈相关结构的释放. 这里简单说一下其流程,就直接从协议栈的disable的接口说起了. static int disable(void) { if (!interface_ready())//检查hal层的callback return BT_STATUS_NOT_READY; stack_manager_get_interface()->shut_down_stack_async(); return BT_STATUS_S…
5.1 HID介绍 为简化USB设备的开发过程,USB提出了设备类的概念.所有设备类都必须支持标准USB描述符和标准USB设备请求.如果有必要,设备类还可以自行定义其专用的描述符和设备请求,这分别被称为设备类定义描述符和设备类定义请求.另外,一个完整的设备类还将指明其接口和端点的使用方法,如接口所包含端点的个数.端点的最大数据包长度等. HID设备类就是设备类的一类,HID是Human Interface Device缩写,人机交互设备,例如键盘.鼠标与游戏杆等.不过HID设备并不一定要有人机接…
Android应用UI设计流程 设计原理 1.在移动设计中,使用环境是最关键的因素.原型设计方法必须考虑尺寸因素 2.用户测试必须涵盖运动.声音和多点触控等方面: 进行移动设计和测试时,请将你知道的有关与计算机交互的一切都抛到 脑后.与计算机交互时,用户只使用鼠标和键盘,这种大一统模式并不 适用于移动设备.移动时代的一个重要特征是充分利用人体的自然运动: 刮划表示深入挖掘:摇动表示拒绝:将手机放到耳边表示要说话.从语 音识别数字助理到计步器(它利用GPS传感器根据身体摇摆情况判断日 常身体活动的…
Android系统启动概述 Android系统开机流程基于Linux系统,总体可分为三个阶段: Boot Loader引导程序启动Linux内核启动Android系统启动,Launcher/app启动 启动流程如图1形象展示: 图1 Android开机启动一般性流程 图1只简单地描述了开机启动一般性流程,"正常开机"(注意,是正常模式,不是工厂模式.recovery模式)流程为: 1. 手机.TV等android设备上电或重启后,系统硬件进行相应的复位操作,然后CPU开始执行第一条指令…
AllJoyn+Android开发案例-android跨设备调用方法 项目须要涉及AllJoyn开源物联网框架.前面主要了解了一些AllJoyn主要的概念.像总线,总线附件,总线对象,总线接口这种概念,以及之间的关系和跨设备.平台的调用功能.项目终于的目的实现是.跨平台的方法调用如:windows调用android.以及对于设备事件的订阅功能. 入手的步骤: 1.实现android端的跨设备方法(自己定义)调用案例-java 2.实现windows端的跨设备方法(自己定义)调用案例-c++ 3.…
Android之SystemUI载入流程和NavigationBar的分析 本篇仅仅分析SystemUI的载入过程和SystemUI的当中的一个模块StatusBar的小模块NavigationBar,以Android6.0代码进行分析 AndroidManifest.xml <application android:name=".SystemUIApplication" android:persistent="true" android:allowClear…
Android process 的启动流程 1.android启动时所运行的进程: USER    PID     PPID    VSIZE    RSS    WCHAN         PC              NAMEroot  1  0  264   176  c00acc6c  0000c36c        S /initroot    28  1  724   308    c0051354  afe0c4cc  S /system/bin/shsystem  30 1  …
kangear注: 文章转自:http://blog.csdn.net/myxmu/article/details/12217135 原文把图给搞丢了.可是文章太好了,这个时候我就发挥多年的Google和人脉关系依据链接找到了,补上图(这个图是MTK内部用图). [DESCRIPTION]   在BT2.1及之后版本号,蓝牙协议有在传统的password配对(PIN Code Pairing)之外,新增一种简单配对(Simple Pairing)的方式. 这样的新的配对方式操作更为简单.安全性也…
1.前言 在Android开发中可能会遇到添加新的按键的需求,本文将简单介绍如何在Android系统中完成一个新的按键的添加. 当系统有新的按键需要添加时,Linux内核下的键码到Android系统中键码是如何进行转换映射的? 2.内核添加设备节点 首先,我们需要在Linux内核添加新的按键值,在Linux内核中提供了按键的驱动程序gpio_keys.c,该驱动是基于设备树实现的,因此,先添加自己的设备节点,如下: gpio_keys { status = "okay"; compat…
1.Android的开机启动流程 Android的层次框架图,如下所示: 图片清晰地展示了Android的五层架构,从上到下依次是:应用层.应用框架层.库层.运行时层以及Linux内核层.Android的启动流程是自下向上的,大体上可以分为三个阶段:1.BootLoader引导启动内核:2.启动Linux内核:3.启动Android系统. Android的启动流程如下所示: 接下来具体地描述一下启动过程: Step 1. Boot Rom 当长按电源开机的时候,引导芯片开始从固化在ROM的预设代…
上次转载了一篇<将你的网站打造成一个iOS Web App>,但偶然发现这篇文章的内容有些是错误的——准确来说也不是错误,只是不适合自半年前来的情况了(也可以说是iOS7 之后的时间)——话说现在的的移动设备真是日新月异.好了,结合Jeff 查阅的资料,下面来详细来说说iOS / Android 移动设备中的 touch icons. 关于 “Touch icons” favicons 知道是什么吧?浏览器的tab 前面的那个小图标,放入某个网站到收藏夹的时候也会看到,这个可以说是pc 互联网…
原文:C# 访问USB(HID)设备 二话不说,直接给代码,如果您真想做这方面的东西,还是稍微研究下,没有现成的好类用,就需要自己了解其原理 //引用空间 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using S…
/*********************************************************************** * Android隐藏虚拟按键,关闭开机动画.开机声音 * 声明: * 有时候,我们可能会希望隐藏掉android中的虚拟按键,当然,那个 * Android的开机动画,有时候也是挺讨人厌的,也是可以隐藏的. * * 2016-1-7 深圳 南山平山村 曾剑锋 **********************************************…
android 实现模拟按键方法一 通过Runtime实现,代码如下: try { String keyCommand = "input keyevent " + KeyEvent.KEYCODE_MENU; Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec(keyCommand); } catch (IOException e) { // TODO Auto-generated catch bloc…
HIDKomponente 是delphi中使用的第三方Hid控件库,可以检测.控制连接到电脑的Hid设备.一般情况下多为usb设备.HIDKomponente的使用实际上很简单,只是因为第一次使用,遇到些问题.它的demo很丰富,很实用.要使用HIDKomponente库,只需要安装HidController.dpk,并且在单元中添加引用JvHidControllerClass.使用示例:    在窗体上放置一个TJvHidController.我们要用到的事件有: OnArrival OnD…
WebSocket学习笔记IE,IOS,Android等设备的兼容性问 一.背景 公司最近准备将一套产品放到Andriod和IOS上面去,为了统一应用的开发方式,决定用各平台APP嵌套一个HTML5浏览器来实现,其中数据通信,准备使用WebSocket的方式.于是,我开始在各大浏览器上测试. 二.协议分析 2.1 WebSocket的请求包 首先把原来做Socket通信的程序拿出来,跟踪下浏览器在WebSocket应用请求服务端的时候发的数据包的内容: IE11: GET /chat HTTP/…
1 .   所使用的典型 Windows API CreateFile ReadFile WriteFile 以下函数是 DDK 的内容: HidD_SetFeature HidD_GetFeature HidD_SetOutputReport HidD_GetInputReport 其中, CreateFile 用于打开设备: ReadFile . HidD_GetFeature . HidD_GetInputReport 用于设备到主机方向的数据通信: WriteFile . HidD_Se…
本文将从引擎源代码Jni分析Cocos2d-x3.3RC0的Android Activity的启动流程,以下是具体分析. 1.引擎源代码Jni.部分Java层和C++层代码分析 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXV4aWt1b18x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> watermark…
今天刚发现的解决的方法:就是登录web端的gmail,查看收件箱应该有no-reply这一帐户给你发过邮件(假设没有,你在移动设备上登录一下gmail).照着邮件里的说明去做,就是生成一个专门应用的password.然后用此password在android移动设备上登录gmail就能够了.我的是这么解决的.…
android开机动画启动流程   从android的Surface Flinger服务启动分析知道,开机动画是在SurfaceFlinger实例通过调用startBootAnim()启动的. 下面我们就一起学习BootAnim是如何启动和结束的,我精读代码前都喜欢先描出框架图,以此图为基础再去研读会达到事半功倍的效果.好吧,直接上图. 内核起来后会启动第一个进程,即init进程. init进程会根据init.rc配置启动surfaceflinger进程. service surfaceflin…
首先在之前鼠标的基础上修改设备描述符 #include "usbdesc.h" //usb标准设备描述符 const U8 USB_DeviceDescriptor[] = { USB_DEVICE_DESC_SIZE,             //bLength字段.设备描述符的长度为18(0x12)字节 USB_DEVICE_DESCRIPTOR_TYPE,           //bDescriptorType字段.设备描述符的编号为0x01 WBVAL(0x0110),    …
该文档使用USB固件库,在其基础上进行了自己的定制,完成了一个USB-HID设备,首先是usb_desc.c文件,里面存放了usb各种描述符的存在 #include "usb_desc.h" //usb标准设备描述符 const u8 DinkUsbDeviceDescriptor[DINK_USB_SIZ_DEVICE_DESC] = { USB_DEVICE_DESC_SIZE,             //bLength字段.设备描述符的长度为18(0x12)字节 USB_DEV…
源:HIDKomponente使用读写Hid设备一瞥 HIDKomponente 是delphi中使用的第三方Hid控件库,可以检测.控制连接到电脑的Hid设备.一般情况下多为usb设备. HIDKomponente的使用实际上很简单,只是因为第一次使用,遇到些问题.它的demo很丰富,很实用. 要使用HIDKomponente库,只需要安装HidController.dpk,并且在单元中添加引用JvHidControllerClass. 使用示例:     在窗体上放置一个TJvHidCont…
关于Android的Activity运行流程,我们可以写一些程序来直观的查看Activity的运行流程.在这里我们使用Log工具来获取Activity运行日志.假如我们新建一个Android项目,ProcessActivity.java代码如下: public class ProcessActivity extends Activity { private static final String tag="徐守威"; @Override public void onCreate(Bun…
唯一Android的设备ID String androidId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);…
演示样例代码例如以下所看到的: local listenerKey= cc.EventListenerKeyboard:create() local function onKeyReleaseed(keycode,event) print("keycode:"..keycode) if keycode == cc.KeyCode.KEY_BACKSPACE then cc.Director:getInstance():endToLua() end end listenerKey:reg…
在学习块设备原理的时候,我最关系块设备的数据流程,从应用程序调用Read或者Write开始,数据在内核中到底是如何流通.处理的呢?然后又如何抵达具体的物理设备的呢?下面对一个带Cache功能的块设备数据流程进行分析. 1. 用户态程序通过open()打开指定的块设备,通过systemcall机制陷入内核,执行blkdev_open()函数,该函数注册到文件系统方法(file_operations)中的open上.在blkdev_open函数中调用bd_acquire()函数,bd_acquire…