chrome.bluetoothSocket

說明

使用 chrome.bluetoothSocket API 透過 RFCOMM 和 L2CAP 連線傳送及接收資料至藍牙裝置。

資訊清單

您必須在資訊清單中宣告下列金鑰,才能使用這個 API。

"bluetooth"

類型

AcceptError

列舉

"system_error"
系統發生錯誤,可能無法復原連線。

"not_listening"
通訊端未監聽。

AcceptErrorInfo

屬性

  • 錯誤

    指出發生錯誤的錯誤代碼。

  • errorMessage

    字串

    錯誤訊息。

  • socketId

    數字

    伺服器通訊端 ID。

AcceptInfo

屬性

  • clientSocketId

    數字

    用戶端通訊端 ID,例如新建立連線的通訊端 ID。這個通訊端 ID 只能與 chrome.bluetoothSocket 命名空間中的函式搭配使用。請注意,用戶端通訊端一開始會暫停,且必須由應用程式明確取消暫停,才能開始接收資料。

  • socketId

    數字

    伺服器通訊端 ID。

CreateInfo

屬性

  • socketId

    數字

    新建立的通訊端的 ID。請注意,透過這個 API 建立的通訊端 ID 與從其他 API (例如 [sockets.tcp](../sockets_tcp/) API) 建立的通訊端 ID 不相容。

ListenOptions

屬性

  • 待處理工作量

    編號 選填

    通訊端的監聽佇列長度。預設值取決於作業系統的主機子系統。

  • 頻道

    編號 選填

    listenUsingRfcomm 使用的 RFCOMM 管道。指定時,不得先前使用過這個管道,否則方法呼叫將會失敗。如未指定,系統會自動分配未使用的頻道。

  • 專業司機

    編號 選填

    listenUsingL2cap 使用的 L2CAP PSM。如有指定,這個 PSM 不得先前使用過或方法呼叫失敗。如未指定,系統會自動分配未使用的 PSM。

ReceiveError

列舉

"已中斷連線"
連線已中斷。

"system_error"
系統發生錯誤,可能無法復原連線。

"not_connected"
未連接通訊端。

ReceiveErrorInfo

屬性

  • 錯誤

    指出發生錯誤的錯誤代碼。

  • errorMessage

    字串

    錯誤訊息。

  • socketId

    數字

    通訊端 ID。

ReceiveInfo

屬性

  • 資料

    ArrayBuffer

    已收到的資料,大小上限為 bufferSize

  • socketId

    數字

    通訊端 ID。

SocketInfo

屬性

  • 地址

    string optional

    如果基礎通訊端已連線,則包含其連線裝置的藍牙位址。

  • bufferSize

    編號 選填

    用於接收資料的緩衝區大小。如未明確指定緩衝區空間,則不提供此值。

  • 已連線。

    布林值

    標記,指出通訊端是否已連線至遠端對等點。

  • 名稱

    string optional

    與通訊端相關聯的應用程式定義字串。

  • 已暫停

    布林值

    此標記用於指出連線通訊端是否阻止其對等點傳送更多資料,或是否透過 onAccept 事件分派監聽通訊端的連線要求,或排入待聆聽佇列待處理工作中。詳情請參閱 setPaused。預設值是「false」。

  • 永久

    布林值

    此標記用於指出當應用程式的事件頁面卸載時,通訊端是否仍為開啟 (請參閱 SocketProperties.persistent)。預設值是「false」。

  • socketId

    數字

    通訊端 ID。

  • uuid

    string optional

    如果基礎通訊端已連線,則包含其所連線之服務 UUID 的相關資訊;否則,如果基礎通訊端正在監聽,則包含其所監聽服務 UUID 的資訊。

SocketProperties

屬性

  • bufferSize

    編號 選填

    用於接收資料的緩衝區大小。預設值為 4096。

  • 名稱

    string optional

    與通訊端相關聯的應用程式定義字串。

  • 永久

    布林值 選填

    此標記用於指出當應用程式的事件頁面卸載時,通訊端是否保持開啟 (請參閱管理應用程式生命週期)。預設值為 false. 載入應用程式時,可使用 getSockets 擷取先前使用 persistent=true 開啟的任何通訊端。

方法

close()

Promise
chrome.bluetoothSocket.close(
  socketId: number,
  callback?: function,
)

中斷連線並刪除通訊端。每個建立的通訊端都應在使用後關閉。呼叫函式後,通訊端 ID 就會失效。不過,只有在叫用回呼時,通訊端一定才保證關閉。

參數

  • socketId

    數字

    通訊端 ID。

  • 回呼

    函式 選用

    callback 參數如下所示:

    () => void

傳回

  • 承諾<void>

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

connect()

Promise
chrome.bluetoothSocket.connect(
  socketId: number,
  address: string,
  uuid: string,
  callback?: function,
)

將通訊端連接到遠端藍牙裝置。成功完成 connect 作業後,系統會從對等點收到資料時,發出 onReceive 事件。如果在執行階段接收封包時發生網路錯誤,系統會引發 onReceiveError 事件,此時系統就不會再針對這個通訊端發出 onReceive 事件,直到呼叫 setPaused(false) 方法為止。

參數

  • socketId

    數字

    通訊端 ID。

  • 地址

    字串

    藍牙裝置的地址。

  • uuid

    字串

    要連線服務的 UUID。

  • 回呼

    函式 選用

    callback 參數如下所示:

    () => void

傳回

  • 承諾<void>

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

create()

Promise
chrome.bluetoothSocket.create(
  properties?: SocketProperties,
  callback?: function,
)

建立藍牙通訊端。

參數

  • 資源

    通訊端屬性 (選用)。

  • 回呼

    函式 選用

    callback 參數如下所示:

    (createInfo: CreateInfo) => void

    • createInfo

      建立通訊端的結果。

傳回

  • Promise&lt;CreateInfo&gt;

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

disconnect()

Promise
chrome.bluetoothSocket.disconnect(
  socketId: number,
  callback?: function,
)

中斷通訊端。通訊端 ID 仍然有效。

參數

  • socketId

    數字

    通訊端 ID。

  • 回呼

    函式 選用

    callback 參數如下所示:

    () => void

傳回

  • 承諾<void>

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

getInfo()

Promise
chrome.bluetoothSocket.getInfo(
  socketId: number,
  callback?: function,
)

擷取指定通訊端的狀態。

參數

  • socketId

    數字

    通訊端 ID。

  • 回呼

    函式 選用

    callback 參數如下所示:

    (socketInfo: SocketInfo) => void

    • socketInfo

      包含通訊端資訊的物件。

傳回

  • Promise&lt;SocketInfo&gt;

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

getSockets()

Promise
chrome.bluetoothSocket.getSockets(
  callback?: function,
)

擷取應用程式擁有且目前開啟的通訊端清單。

參數

  • 回呼

    函式 選用

    callback 參數如下所示:

    (sockets: SocketInfo[]) => void

傳回

  • Promise&lt;SocketInfo[]&gt;

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

listenUsingL2cap()

Promise
chrome.bluetoothSocket.listenUsingL2cap(
  socketId: number,
  uuid: string,
  options?: ListenOptions,
  callback?: function,
)

監聽使用 L2CAP 通訊協定的連線。

參數

  • socketId

    數字

    通訊端 ID。

  • uuid

    字串

    要監聽的服務 UUID。

  • 選項

    服務的其他選項。

  • 回呼

    函式 選用

    callback 參數如下所示:

    () => void

傳回

  • 承諾<void>

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

listenUsingRfcomm()

Promise
chrome.bluetoothSocket.listenUsingRfcomm(
  socketId: number,
  uuid: string,
  options?: ListenOptions,
  callback?: function,
)

監聽使用 RFCOMM 通訊協定的連線。

參數

  • socketId

    數字

    通訊端 ID。

  • uuid

    字串

    要監聽的服務 UUID。

  • 選項

    服務的其他選項。

  • 回呼

    函式 選用

    callback 參數如下所示:

    () => void

傳回

  • 承諾<void>

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

send()

Promise
chrome.bluetoothSocket.send(
  socketId: number,
  data: ArrayBuffer,
  callback?: function,
)

透過指定的藍牙通訊端傳送資料。

參數

  • socketId

    數字

    通訊端 ID。

  • 資料

    ArrayBuffer

    要傳送的資料。

  • 回呼

    函式 選用

    callback 參數如下所示:

    (bytesSent: number) => void

    • bytesSent

      數字

      傳送的位元組數。

傳回

  • Promise&lt;number&gt;

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

setPaused()

Promise
chrome.bluetoothSocket.setPaused(
  socketId: number,
  paused: boolean,
  callback?: function,
)

啟用或停用已連線的通訊端,不再接收來自對等點的訊息,或接收新連線的監聽通訊端。預設值是「false」。一般來說,應用程式會透過暫停連線的通訊端,來調節其對等點傳送的資料。連線通訊端暫停時,系統不會引發 onReceive 事件。通訊端連線且未暫停時,接收訊息時會再次引發 onReceive 事件。監聽通訊端暫停時,系統會接受新的連線,直到待處理工作量用盡之後,系統會拒絕其他連線要求。只有在通訊端取消暫停時,才會引發 onAccept 事件。

參數

  • socketId

    數字

  • 已暫停

    布林值

  • 回呼

    函式 選用

    callback 參數如下所示:

    () => void

傳回

  • 承諾<void>

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

update()

Promise
chrome.bluetoothSocket.update(
  socketId: number,
  properties: SocketProperties,
  callback?: function,
)

更新通訊端屬性。

參數

  • socketId

    數字

    通訊端 ID。

  • 要更新的屬性。

  • 回呼

    函式 選用

    callback 參數如下所示:

    () => void

傳回

  • 承諾<void>

    Chrome 91 以上版本

    Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。

活動

onAccept

chrome.bluetoothSocket.onAccept.addListener(
  callback: function,
)

為特定通訊端建立連線時引發的事件。

參數

onAcceptError

chrome.bluetoothSocket.onAcceptError.addListener(
  callback: function,
)

當執行階段在等待指定通訊端建立新連線時,發生網路錯誤,就會引發事件。引發此事件後,通訊端會設為 paused,不再針對此通訊端引發其他 onAccept 事件。

參數

onReceive

chrome.bluetoothSocket.onReceive.addListener(
  callback: function,
)

系統收到特定通訊端的資料時引發的事件。

參數

onReceiveError

chrome.bluetoothSocket.onReceiveError.addListener(
  callback: function,
)

當執行階段在通訊端等待資料時發生網路錯誤,就會引發事件。引發此事件後,通訊端會設為 paused,不再針對此通訊端引發其他 onReceive 事件。

參數