支援藍牙裝置 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
Windows 8.1 中的 Windows 執行階段提供數個新的藍牙命名空間:
- Windows.Devices.Bluetooth
- Windows.Devices.Bluetooth.Rfcomm
- Windows.Devices.Bluetooth.GenericAttributeProfile
藉由使用命名空間,開發人員可以撰寫一個與藍牙裝置通訊的 Windows 市集應用程式。
您必須在應用程式資訊清單的宣告中提供裝置功能的相關資訊。這樣可以讓應用程式與裝置建立關聯。
如需詳細資訊,請參閱如何指定藍牙的裝置功能。
RFComm
Bluetooth RFComm APIs 遵守 Windows 執行階段指導方針,並提供以下功能:
- API 建構在適用於 Windows 裝置的現有模式上,包含 enumeration 和 instantiation。
- SDP 屬性具有值和預期類型。 但是一些常見裝置的 SDP 屬性實作有誤,導致值並非預期的類型。 此外,許多 RFCOMM 的用法完全不需要額外的 SDP 屬性。 基於這些理由,此 API 提供未剖析之 SDP 資料的存取,開發人員可藉此取得所需的資訊。
- 資料讀取和寫入是為了利用 established data stream patterns 和 Windows.Storage.Streams 中的物件所設計。
RFCOMM API 運用了服務識別碼的概念。 雖然服務識別碼只是 128 位元的 GUID,但也通常會指定為 16 或 32 位元的整數。 RFCOMM API 為服務識別碼提供一個包裝函式,使它們可指定和做為 128 位元的 GUID 及 32 位元的整數使用,但不提供 16 位元的整數 (以符合 Windows 執行階段指導方針)。 這對 API 而言不是問題,因為語言將自動轉換成 32 位元的整數,而且仍然可以正確地產生識別碼。
自 Windows 8.1 起,Windows 市集裝置應用程式可以在背景工作中執行多步驟的裝置作業,因此即使應用程式移至背景且暫停,作業仍然可以完成。 這可允許可靠的裝置提供服務 (例如永續性設定或韌體的變更) 及內容同步,不需要使用者在一旁監督進度列。 使用 DeviceServicingTrigger 提供裝置服務,使用 DeviceUseTrigger 執行內容同步。請注意,這些背景工作會限制應用程式可在背景執行的時間,且不允許無限期的作業或同步。如需詳細資訊,請參閱裝置同步和更新 (Windows 市集應用程式)。
如需詳細資訊,請參閱下列 RFCOMM 使用案例:
GATT
開發人員可以使用 Bluetooth GATT APIs 存取藍牙 LE 服務、描述元及特性。
藍牙 LE 裝置透過下列一組項目公開功能:
- 主要服務
- 包含的服務
- 特性
- 描述元
主要服務定義 LE 裝置的功能協定,並且包含一組定義服務的特性。這些特性依序包含描述特性的描述元。
藍牙 GATT API 會公開物件與函式,而非原始傳輸的存取。在驅動程式層級,主要服務會使用 enumeration API 列舉為藍牙 LE 裝置的子裝置節點。
藍牙 GATT API 也讓開發人員得以使用藍牙 LE 裝置以執行下列工作:
- 執行服務 / 特性 / 描述元探索
- 讀取和寫入特性 / 描述元值
- 登錄 Characteristic ValueChanged 事件的回呼
藍牙 GATT API 透過處理一般屬性和提供合理的預設值來協助裝置管理和設定,藉此簡化開發程序。它們為開發人員提供從 Windows 市集應用程式存取藍牙 LE 裝置功能的方法。
為建立有用的實作和處理特定的特性值 (這樣 API 提供的二進位資料才會先轉換成有用的資料後再提供給使用者),開發人員首先必須具備應用程式要使用之 GATT 服務與特性的知識。藍牙 GATT API 只會公開與藍牙 LE 裝置通訊所需的基本基元。為解譯資料,必須定義應用程式設定檔 (無論是透過藍牙 SIG 標準設定檔,或是裝置供應商實作的自訂設定檔)。設定檔會在應用程式與裝置之間建立繫結協定,內容是關於交換的資料代表的意義以及解譯資料的方式。
為方便起見,藍牙 SIG 會保持一份可用的公用設定檔清單。
如需詳細資訊,請參閱下列 GATT 使用案例: