Small Tips : Android(Kotlin)でBLEする その1

そんなにアウトプットはまとまらないがTIPSだけが溜まっていきます。
だれかの欲しい情報が見つかるかもしれないし、ただ単に見つけにくいだけかもしれない。そんな記事です。

この記事で得られる情報

– Logcatで見やすいデバッグをするTips
– AndroidのBLEの変遷
– 位置情報の許可ダイアログの出し方
– Androidは BLEはCallbackで受けられたし
– 連続でCharacteristicに値を書きに行く場合はCallbackも使う

Tips1:Logcatでデバッグする時の方法

みんな大好きprintデバッグ。
Androidの場合はこうやります。

Log.d("任意のTAG", "素敵なメッセージ")

ログのRegex設定は必ずする。このアプリのログだけ出るように設定する。
大量のログから救われます。

Tips2: AndroidにはAndroidの歴史があるんや

BLE通信のやり方がある結構色々ある。
Android6.0以降はLOCATIONの認証が必要だったり、LOLLIPOP以前と以降で使えるメソッドが違う。
この辺を対応するメンタリティが僕には無い。
*今持ってる検証機(Android8.0)で動くようなコードを目指す*

歴史に関しての超良記事はこちら
BLE視点でまとめるAndroid OSの違い – Qiita

Tips3:位置情報の許可を取ろう

位置情報の許可ダイアログは下記で出せる。

ActivityCompat.requestPermissions(this, /arrayOf/(Manifest.permission./ACCESS_FINE_LOCATION/), 1234)ただし、過去に拒否しているユーザーは考慮されていない。

Tips4:全てはCallbackで受けられたし

iPhone開発ではDelegateなどに色々来ますがAndroidの場合は全てCallbackの中に来ると思うべし。

private val gattCallBack = object: BluetoothGattCallback() {
}

Tips5: 連続でCharacteristicに書き込みに行く

これはちょっとレアな情報だと思う(あんま調べても出なかった)
CharacteristicのwriteValueもCallbackがやって来る。
連続で書き込む場合はCallback内で前の書き込みが終わってから再び書き込まないとエラーになる
Chakuyo-bakoは初期起動時にi2c系の設定を書き込みに行くので連続でwriteValueしている。
コードが果てしなく汚くなるんですけど。
綺麗に描く方法教えてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です