安卓标准hid模式是代表什么
❶ Android 蓝牙HID模式怎么向HID蓝牙设备发送数据
要想实现这个目标,首先要想一想android设备和pc设备之间的通讯基础是什么?这个通讯技术必须是android和pc同时支持的,目前看来也就是wifi,蓝牙。首先说一下蓝牙,蓝牙是一个提供个人局域网的安全无线电通讯技术,相对于wifi而言,蓝牙的功耗相对较低,尤其是BLE技术使得蓝牙的功耗可以和zigbee媲美了,并且android也支持了基于蓝牙的socket操作。但是pc上的java部分对于蓝牙的socket支持就不是很好了,实现起来比较麻烦。但是wifi虽然功耗相对蓝牙而言比较高了点,但是实现起来非常容易,就是socket就好了!所以在第一版本中,可以先使用wifi作为传输技术。
❷ android bluetooth hid协议的开发求助
Android Bluetooth HID实现详解
Android 关于蓝牙的部分使用的是BlueZ协议栈。但是直到目前2.3.3都没有扩展HID的profile,只是实现了最基本的Handset和d2dp的profile,所以我们的工作涉及到从应用到jni三层的修改,具体修改文件如图所示,绿色表示新建的类,橙色表示修改的类。
一. 本地层
路径:framework/base/core/jni/
参照android_server_BluetoothA2dpService.cpp新建android_server_bluetoothHidServer.cpp。该类中主要是通过dbus对bluez协议栈的访问,dbus 的通用方法都在android_bluetooth_common.cpp中实现,我们做的仅仅是通过dbus_func_args_async调用到bluez提供的input接口。
主要实现以下两个方法函数:
static jboolean connectSinkNative(JNIEnv *env, jobject object, jstring path) {
#ifdef HAVE_BLUETOOTH
LOGV(__FUNCTION__);
if (nat) {
const char *c_path = env->GetStringUTFChars(path, NULL);
bool ret = dbus_func_args_async(env, nat->conn, -1, NULL, NULL, nat,
c_path, "org.bluez.Input", "Connect",
DBUS_TYPE_INVALID);
env->ReleaseStringUTFChars(path, c_path);
return ret ? JNI_TRUE : JNI_FALSE;
}
#endif
return JNI_FALSE;
}
static jboolean disconnectSinkNative(JNIEnv *env, jobject object,
jstring path) {
#ifdef HAVE_BLUETOOTH
LOGV(__FUNCTION__);
if (nat) {
const char *c_path = env->GetStringUTFChars(path, NULL);
bool ret = dbus_func_args_async(env, nat->conn, -1, NULL, NULL, nat,
c_path, "org.bluez.Input", "Disconnect",
DBUS_TYPE_INVALID);
env->ReleaseStringUTFChars(path, c_path);
return ret ? JNI_TRUE : JNI_FALSE;
}
#endif
return JNI_FALSE;
}
这里要注意将该文件添加到AndroidRuntime.cpp和Android.mk中,否则不会编译到动态库中。
此部分编译后最终生成libandroid_runtime.so并替换到system/libs下
二.Framework的java部分
路径framework/base/java/android/server/中添加BluetoothHidService.java文件
路径framework/base/java/android/bluetooth/中添加BluetoothHid.java和IBluetoothHid.aidl文件。
interface IBluetoothHid {
boolean connect(in BluetoothDevice device);
boolean disconnect(in BluetoothDevice device);
int getState(in BluetoothDevice device);
boolean setPriority(in BluetoothDevice device, int priority);
int getPriority(in BluetoothDevice device);
}
BluetoothHid.java中主要的两个方法connect和disconnect间接地通过aidl访问BluetoothHidService。这里主要是实现跨进程并为上层提供可直接访问的方法。
由此framework的主要部分打包生成framework.Jar并最终部署到system/framework里。
三.应用(Settings.apk)
最后需要修改应用部分,应用部分的修改点比较分散,不想框架层那样整块模仿A2DP的样子那么方便,但也不是说jni部分有多么容易。反而对于我这种对C语言不熟悉的人来说,修改jni是最头疼得事了。好在蓝牙HID这部分框架层的修改都是整块进行的,理解上还算比价容易。
总的来说在Settings.apk中要修改的文件主要是这么几个:
LocalBluetoothProfileManager.java这里主要提供一个HID的profile以便应用层访问。建一个HIDProfile的class调用framework中的BluetoothHID。实际上就是通过bender机制调用了BluetoothHidService。
CashedBluetoothDevice中添加显示蓝牙键盘的图标,BluetoothPairingDialog中则需要添加一段蓝牙配对验证处理的代码,我是参照i9000中先弹出一个随机数,然后在键盘中敲入相同的随机数即配对成功,具体实现如下:
// HID
if (isDeviceKeyboard(mDevice)) {
String pin = String.format("%06d", Long.valueOf(Math
.abs(new Random().nextLong() % 1000000L)));
mPairingView.setVisibility(View.GONE);
messageView.setText(getString(
R.string.bluetooth_enter_keyboard_pin_msg, pin, name));
byte[] bytePin = BluetoothDevice.convertPinToBytes(pin);
if (bytePin != null) {
mDevice.setPin(bytePin);
}
}
……
}
转载
❸ 支持HID的蓝牙键盘是什么意思
HID是蓝牙的一种技术规范蓝牙HID应用规范及系统解决方案</b>上网时间:2003年07月26日
蓝牙技术中的人性化接口设备(HID)应用模式可以使人们无连线烦恼地控制他们的计算机、游戏操作杆、远程监控设备等。本文参照SIG最新公布的0.95c版本HID规范,详细介绍了蓝牙HID规范及其应用场景,以及蓝牙HID终端设备端与HID主机端的解决方案。 蓝牙技术在成功地应用在耳机、免提设备和PC外设后,逐渐得到更广泛的应用,人们开始期望能够无连线烦恼地控制他们的计算机、游戏操作杆、遥控设备等。蓝牙SIG组织公布的HID规范正好迎合了这一需求。 与传统的只能和相互匹配的设备通信的无线键盘不同,蓝牙HID键盘能够作为一个标准键盘与任何蓝牙HID系统通信。蓝牙HID解决方案使得HID终端设备能够自动地探测和连接到需要的系统,如PDA、PC、机顶盒等。例如,一个蓝牙HID鼠标能够用来控制PC机,也可用于控制PDA,而不是像传统的模式中某个外设只能控制与它匹配的某种特定的主机。因此,蓝牙HID规范使得不同平台HID主机的输入和控制外设实现真正的互用性。 蓝牙HID规范</b> a. 蓝牙HID规范的软件结构
蓝牙HID规范的软件结构框图如图1所示。HID规范运行在蓝牙的L2CAP协议上,并基于GAP规范。 b. HID规范的基本要求有:
1. 在一个微型网络中通常被推荐当作从设备(slave),但是也允许作为主设备(master)。
2. 键盘必须支持认证和加密:只有当被HID主机要求时才激活工作模式;在认证和加密的基础上,也可以被其它HID主机选用;通过单键创建联合键的方式可以实现使用加密技术的低成本HID方案;强烈推荐蓝牙HID键盘和辅助键盘支持联合键的应用。
3. 推荐使用有限的服务发现模式: 对一台HID主机而言,HID终端设备通常都是一对一的关系;通过击键或者电源接通来激活HID终端设备。
4. 作为从设备必须始终保持可连接性,例如PC在启动时寻呼键盘,或者键盘在有数据传输时寻呼PC机。
5. HID主机必须支持QoS。
6. HID主机必须支持低功耗工作模式,一般的HID终端设备(如鼠标、键盘、游戏杆)的设计目标通常为:在3节标准AAA电池或者2节标准碱性AA电池下,至少工作三个月;HID主机和HID终端设备都必须支持呼吸(sniff)工作模式和休眠(park)工作模式;保持工作模式对HID主机来说是必须的,而对HID终端设备来说是可选的。
7. HID终端设备只需要支持DM1格式的数据。
8. 除了查询模式和寻呼模式,交互的寻呼扫描模式和查询扫描模式也是必需的。
9. 对单功能设备而言并不需要支持SCO语音通道。
10. 支持绑定的设备必须有某种形式的固定内存来存放128位的认证码,使用联合键的HID设备比只使用单键的设备需要更多的内存来支持。
11. 为了使设备支持联合键认证,推荐最少为四个主机键(host key)留有适当的存储空间。 c. HID规范的导入模式
HID规范规定基本的键盘和指示功能使用固定格式的数据包,在HID主机端不需要HID剖析器(约占70kB)。允许用固定的PSM和辅助的设备类控制FHS数据包作为服务发现协议的定位,以及键盘与指示设备的连接。USB导入模式被保留用作最低层的终端应用。为了使得用户界面更加友好,要求系统遵从以下规定:
1. 能够自动探测HID终端设备;
2. 必须有硬件添加向导;
3. 键盘必须是加密的,且安全;
4. 在PC机导入时,HID终端设备暂时不能使用。 d. HID规范的虚电缆连线概念
像鼠标、键盘等HID终端设备都是个人区域设备,它们有以下特征:
1. 通常与HID主机都有一对一的关系;
2. 不支持同时与一个以上的HID主机同时连接;
3. 它们也许有一个以上的可能建立连接的HID主机。 当蓝牙HID终端设备与一个HID主机建立一对一的连接关系时,它就被称为虚拟电缆连接。这时HID终端设备与HID主机就建立了以下关系:
1. HID终端设备与HID主机捆绑。
2. 如果连接断开,将会自动重新建立连接。
3. 不会和另一HID主机相连,除非用户明确地去掉该虚拟电缆连接。 蓝牙HID终端设备的解决方案</b> 如图2所示,作为HID终端设备端的BlueCode+可以有以下两种应用模型:
1. 与蓝牙核心协议栈一起集成在蓝牙芯片内,以蓝牙硬件模块形式提供。
2. 作为一个软件协议栈,BlueCode+也能够集成在客户指定的CPU中。 每个蓝牙HID终端设备(如键盘)都会有它自己的输入控制处理器,该控制器采集用户的输入信号,并转换成某种特定的代码传送给它的HID主机(如PC、PDA等)。由于输入处理器的资源比较少,因此通常情况下蓝牙软件都需要在某个特定的处理器上运行。在我们的方案中将BlueCode+移植到蓝牙芯片中运行,最大程度地实现了资源共享,也使得硬件集成更加简单,集成度更高。而蓝牙芯片与输入控制器的接口可以是更便于系统集成的TTL电平的串行接口。 例如键盘、鼠标和游戏操纵杆等嵌入式设备,可以通过PS/2、UART、GPIO等标准接口将客户已有的HID终端设备硬件与内置HID规范的蓝牙模块结合起来。由于BlueCode+HID软件已经集成进蓝牙芯片,因此,用户只需要将BlueRS+I或蓝牙芯片放进他们的硬件中。输入控制器应按照USB格式通过串行连接发送扫描代码,当然,针对用户的特殊格式要求也是可以的。 如果输入控制器有比较大的资源空间(MIPS、RAM和闪存),蓝牙上层协议栈可以移植到输入控制器中运行,蓝牙芯片与输入控制器也可以以TTL电平串行连接。如果包含HID规范的BlueCode+上层协议栈运行在HID终端设备的输入处理器上,那么对系统硬件结构来说,只有一个带HCI接口的蓝牙芯片需要集成进客户的硬件。 由于蓝牙鼠标的应用非常简单,这时提供HID的BlueCode+可以和鼠标本身的应用程序一起集成在含有蓝牙核心协议栈的蓝牙芯片内。 蓝牙HID主机端的解决方案</b> 在HID主机侧,BlueCode+有三种提供方式:
1. 提供完全的蓝牙HID主机驱动程序,使之成为一个标准的OEM产品;
2. 以软件协议栈的形式帮助客户整合进他们的蓝牙PS/2接入点设备;
3. 提供独立于操作系统的API,客户可以将它们整合进自己的驱动程序中。 对标准操作系统(如Windows、Linux)来说,已经有包括HID规范的完整的驱动程序可以提供。这时,除了用户用于表示包括公司及产品的名字、标志、图形和其它类似的图形界面,HID主机端不需要对HID主机的标准驱动作任何改动。这里的HID主机可以用蓝牙USB dongle或PC卡实现,HID主机侧的软件将包括上层堆栈和用户端应用程序。与HID的应用类似,USB dongle也还可用在类似DUN、FAX、FTP、LAN等应用中。因此,这种应用方式的优点是可以支持多个蓝牙规范,其缺点是它们的驱动程序依赖于操作系统。 由于BlueCode+能够方便地移植到不同的操作系统,因此客户也可以用HID API开发适合自己的独特应用。例如,可以做成蓝牙HID接入点设备,所有软件作为固件运行在HID接入点设备上。这时,蓝牙HID接入点设备可以是智能化的USB dongle,或者是用户定义的其它设备。在这种应用方式下,HID主机侧不再需要安装驱动程序。HID接入点设备可被HID主机的操作系统认作标准USB或PS/2设备看待。 这种方案的优点是HID接入点设备与操作系统无关, 可用于支持在PS/2或USB 上的标准 HID的任何平台,不需在HID主机上安装任何东西。该方案的缺点是不支持多个蓝牙规范,因为所有运行于HID接入点设备的软件,只是为HID应用设计的。
❹ hid-keyboard是什么 安卓系统
您好。
hid-keyboard 不是什么安卓系统,这提示意思大概是 隐藏了键盘
大概是您的键盘没有插好。
❺ HID主要应用在哪些方面
HID就是High intensity Discharge高压气体放电灯的英文缩写,是汞、钠、金、氙灯的统称,即汞灯、钠灯、金卤灯、氙灯。其中氙灯的原理是在UV-cut抗紫外线水晶石英玻璃管内,以多种化学气体充填,其中大部份为氙气(Xenon)与碘化物等惰性气体,然后再透过增压器Ballast将低压如12伏特直流电压瞬间增压至23000伏特的电流,经过高压震幅激发石英管内的氙气电子游离,在两电极之间产生光源,这就是所谓的气体放电。而由氙气所产生的白色超强电弧光,可提高光线色温值,类似白昼的太阳光芒,HID工作时所需的电流量仅为3.5A,亮度是传统卤素灯泡的三倍,使用寿命比传统卤素灯泡长10倍。在日本中、高档车都安装了HID氙气大灯,而在香港这种氙气车灯更为普及,2001年HID氙气车灯全球用量越1400万组,其中美国、日本需求量日益上升,居世界需求量前两位。
❻ 手机蓝牙的HID是什么意思
蓝牙USB
Dongle有两种工作模式,HCI模式和HID模式。在HCI工作模式中,Dongle只是相当一个标准的HCI蓝牙USB
Dongle。在HID工作模式下,Dongle是属于一个标准USB的HID设备,具有HID键盘和HID鼠标的功能。
HID就是利用蓝牙连接的无线键盘
❼ 手游穿越火线设置里有个连接手柄的功能,需要连接HID.请问HID是啥意思是一根线吗
直接连接手柄是无法用手柄控制游戏的,若想使用手柄控制须下载手柄版APP游戏,下载安装完毕方可连接控制。
需要说明的事:
下载手柄版后则只能使用手柄控制,无法再继续使用手指触屏控制,方便度下降。
❽ 您好!我想请问一下,怎么理解扫描器的HID模式和SPP模式呢
HID会更方便一点,只要打开HID模式,然后用电脑或者手机去搜索就可以连接
SPP是从机模式,电脑连接后会模拟出COM口,只能COM通讯,目前我还没有遇到过用SPP模式的客户
像我们的有些设备刷机可能会用到SPP模式,一般都是HID通讯。
❾ android hid是什么意思
机器人藏起来了,Android 除了安卓系统的意思,还有机器人的意思
❿ 蓝牙HID与蓝牙4.0是个什么关系
您好,蓝牙HID 是属于蓝牙协议里面的一个profile, 蓝牙4.0是指蓝牙版本号是4.0. 不管在蓝牙2.0 2.1 3.0还是4.0的蓝牙中 ,都有HID , 而且在4.0协议中还多了一个HOG (HID OVER GATT)也就是低功耗HID,涉及的是蓝牙4.0的BLE(bluetooth low en)技术。SKYLAB就有4.0/4.2版本的蓝牙模块,http://www.skylab.com.cn/procts-3.html,这是我找到的有关蓝牙4.0/4.2的相关资料,希望能够帮到您。