安卓標准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的相關資料,希望能夠幫到您。