/SesameSDK_Android_with_DemoApp

SesameSDK3.0は、iOS/Android/Embedded向けのBluetooth/AIoT(Internet of Things)ライブラリであり、オープンソース、使いやすく、強力、かつ永続的に無料です。公式のセサミアプリもこのSesameSDKを使用しており、このSDKを用いてあなたのアプリにもセサミアプリが持つ全ての機能を組み込むことができます。

Primary LanguageKotlinMIT LicenseMIT

img

SesameSDK3.0 for Android

概要

SesameSDKは、Androidアプリケーション向けの無料で、シンプル且つパワフルなBluetooth/ AIoTライブラリです。Sesameの公式アプリケーションもこのSesameSDKを使用してすべての機能を構築し実現しております。SesameSDKでできること:

  • Sesameデバイスの登録(Sesame 5、Sesame 5 pro、Sesame Bike2、BLE Connector1、Open Sensor1、Sesame Touch 1 Pro、 Sesame Touch 1 、Sesame Bot1、WIFI Module2、Sesame 4、Sesame 3、Sesame Bike1、)
  • 施錠、解除、作動させるなど
  • 履歴記録の取得
  • SesameOS3のアップデート
  • デバイスの各種設定
  • バッテリー残量の取得

Requirements

.


1. ライブラリーの依存

   implementation project(':sesame-sdk')

2. manifest.xml でAndroid権限を設定しましょう

   
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT " />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

3. application 初期化

   override fun onCreate() {
        super.onCreate()
           CHBleManager(this)
        }

CHBleManagerの初期化は、端末のBluetoothが正常に動作しているか、端末から権限をもらっているか、Bluetoothが起動しているかを判断します。すべてが正常に動作している場合、Bluetoothスキャンが始まります。 Bluetooth Service Uuid:0000FD81-0000-1000-8000-00805f9b34fb

 bluetoothAdapter.bluetoothLeScanner.startScan(
 mutableListOf(ScanFilter.Builder().setServiceUuid(ParcelUuid(UUID.fromString("0000FD81-0000-1000-8000-00805f9b34fb"))).build()), ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build(), bleScanner)

bleScannerがスキャンしたデバイスをCHDeviceMapに入れる。

4. 新規デバイスはScanNewDeviceFGオブジェクトに追加され、AdapterはCHDeviceMapからフィルタリングされた(it.rssi!=null)データをリストで表示します。

    private var mDeviceList = ArrayList<CHDevices>()
 CHBleManager.delegate = object : CHBleManagerDelegate {
            override fun didDiscoverUnRegisteredCHDevices(devices: List<CHDevices>) {

          //     L.d("devices size",devices.size.toString())
                mDeviceList.clear()
                mDeviceList.addAll(devices.filter { it.rssi != null }
//                    .filter { it.rssi!! > -65 }///註冊列表只顯示距離近的
                )
                mDeviceList.sortBy { it.getDistance() }
                mDeviceList.firstOrNull()?.connect { }
                leaderboard_list.post((leaderboard_list.adapter as GenericAdapter<*>)::notifyDataSetChanged)
            }
        }
    }

5. デバイスとの接続手順は、connectを実行し、onBleDeviceStatusChangedでデバイスの状態を監視すること。

            device.connect { }
            doRegisterDevice(device)
            device.delegate = object : CHDeviceStatusDelegate {
                override fun onBleDeviceStatusChanged(device: CHDevices, status: CHDeviceStatus, shadowStatus: CHDeviceStatus?) {
                    if (status == CHDeviceStatus.ReadyToRegister) {
                      doRegisterDevice(device)
                       
                    }
                }
            }
            
           
   fun  doRegisterDevice(device: CHDevices){
       device.register {
       it.onSuccess {
           //  登録成功
       }
       it.onFailure {
          //  登録失敗
           }
       }
   }

6. device.register登録コマンドの成功や失敗のコールバックによって、所属製品のdevice modelを判断できます。

                    (device as? CHWifiModule2)?.let {
                     
                    }
                    (device as? CHSesame2)?.let {
                     
                    }
                    (device as? CHSesame5)?.let {
                    
                    }
                    (device as? CHSesameTouchPro)?.let {
                       
                    }
  • Sesame 5:このインスタンスオブジェクトは、Sesame5、Sesame5 Pro製品に適用される。
  • Sesame Bike 2 : このインスタンスオブジェクトは、Sesame Bike 2 製品に適用される。
  • Sesame WiFi Module 2:このインスタンスオブジェクトは、WiFi Module 2 製品に適用される。
  • Sesame touch pro:このインスタンスオブジェクトは、 BLE Connector1、 Sesame Touch 1 Pro 、 Sesame Touch 1 製品に適用される。
  • Sesame Open Sensor 1:このインスタンスオブジェクトは、Open Sensor 1 製品に適用される。
  • Class对象

フローチャート

BleConnect

プロジェクト構造

プロジェクトフレームワーク

プロジェクトインターフェース

その他の関連説明

Android関連知識