🎧

cordovaでbluetoothイヤホンの接続状況を検知する

2021/03/20に公開

概要

  • cordovaを使ったモバイルアプリ開発で、bluetoothイヤホンが接続されているかを確認するための実装です。
  • headset detectionというプラグインを使います。iosではこれでおk
  • しかし、android版では、イヤホンの接続状態は検知できてるものの、端末本体のbluetooth on/offがキャッチできないことが判明
  • 上記解決のため、cordova-diagnostic-pluginを使って合わせ技一本。解決しました。

実装

  • ほぼドキュメントの通りですが、こんな感じで実装しました。
  • プラグインのインストールについては、各ドキュメントを参考にしてください。
  // 初期値を取得 cordovaの状態取得は時間差があるので待つ
  let getHeadsetStatus = () => {
    return new Promise((resolve) => {
      window.HeadsetDetection.detect((detected) => {
        resolve(detected)
      });
    });
  };
  let isConnected = await getHeadsetStatus();

  //- イヤホンの着脱を監視
  window.HeadsetDetection.registerRemoteEvents((status) => {
    isConnected = status === "headsetAdded";
  });
  // bluetooth自体がoffにされたらheadsetの状態をoffにする
  cordova.plugins.diagnostic.registerBluetoothStateChangeHandler((state) => {
    if(state === cordova.plugins.diagnostic.bluetoothState.POWERED_OFF){
      isConnected = false;
    }
  });

Discussion