npmパッケージの入れ方と、react-native-ble-managerの扱いに戸惑ったのでメモを残します。
使ったもの
re-natal
re-natalとは、react-nativeをclojure-scriptでラップした、ネイティブアプリをclojure scriptで開発できるライブラリです。leiningen、npm、android studioかxcodeをインストールしたPCがあれば、利用できます。
(同時にエディタもclojure向けの設定にしておくことを強くお勧めします。emacsならclojure-modeなど。)
react-nativeを使えばjavascriptでネイティブアプリを開発できますが、clojureで出来ることを増やしたいので、re-natalを利用しています。
react-native-ble-manager
react-native-ble-managerとは、react-nativeでBLE機能を利用するためのライブラリです。npmパッケージの設定
re-natalでnpmパッケージを使うには、re-natalとreact-nativeの両方の設定をする必要があります。今回は「react-native-ble-manager」の設定方法を説明します。
まず、npmパッケージをインストールします。
npm install --save react-native-ble-manager
次に、re-natalでパッケージを呼び出せるように、下記のコマンドを実行します。
re-natal use-component react-native-ble-manager re-natal use-figwheel
そして、react-native-ble-managerからネイティブアプリの機能を呼び出し可能にするため、下記のコマンドを実行します。
react-native link
Androidでbluetooth機能を使う場合、manifestファイルにbluetoothに関する記述を下記のように追加してください。
[project-dir]/android/app/src/main/AndroidManifest.xml
<manifest .. xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-sdk .. tools:overrideLibrary="it.innove" /> </manifest>
以上の設定によって、プロジェクトで下記のようにreact-native-ble-managerを呼び出せます。
[project-dir]/src/[project-name]/android/core.cljs
(def BleManager (js/require "react-native-ble-manager"))
BLEのwrite方法
react-native-ble-managerのwriteはbyte(0-255)のarrayを送信できます。下記のように記述すれば期待通りの値を送信できました。
(let [your-data1 255 your-data2 0] (.write BleManager device-id service-id characteristic-id (clj->js [your-data1 your-data2])))
なお、BLEデバイスのスキャンや接続方法などは、react-native-ble-managerのreadmeや、自分のアプリのコードが参考になると思います。
共有する情報は以上です。
参考
react-native-ble-managerre-natal-esp32control-app
変更履歴
2016/06/12
- android.hardware.bluetooth_leの設定が無くてもbleを操作できたので、記述を削除しました。
- react-native-ble-managerはバージョン5からwriteにbase64が要らなくなったので、base64の記述を削除しました。
0 件のコメント :
コメントを投稿