質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

4113閲覧

ANDROIDのBLEのやり方について

kokawa2003

総合スコア217

Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/11/06 23:13

編集2016/11/06 23:37

SONYが出しているMESHというセンサー類があります。
これを自前アプリ(ANDROID)で使おうとして苦労しています
とりあえず人感センサーを入手しました。
http://meshprj.com/jp/
手始めにMESH SDKで人感センサーで感知したら音をだすものを作りました。
これをANDROID STUDIOでデバッグすると
11-07 07:32:13.880 17848-17936/? D/BluetoothGatt: setCharacteristicNotification() - uuid: 72c90005-57a9-4d40-b746-534e22ec9f9e enable: true
11-07 07:32:13.881 18313-18380/? D/BtGatt.GattService: onRegisterForNotifications() - address=null, status=0, registered=1, charUuid=72c90005-57a9-4d40-b746-534e22ec9f9e
11-07 07:32:13.999 17848-17848/? I/chromium: [INFO:CONSOLE(23516)] "BLE Write CharacteristicWithACK: 00020103", source: file:///android_asset/www/canvas/MESH.js (23516)
11-07 07:32:14.102 17848-17848/? I/chromium: [INFO:CONSOLE(23441)] "BLE Write Characteristic: 01000000c8000000c9", source: file:///android_asset/www/canvas/MESH.js (23441)
11-07 07:32:14.187 17848-17863/? D/BluetoothGatt: setCharacteristicNotification() - uuid: 72c90003-57a9-4d40-b746-534e22ec9f9e enable: true
11-07 07:32:14.190 18313-18380/? D/BtGatt.GattService: onRegisterForNotifications() - address=null, status=0, registered=1, charUuid=72c90003-57a9-4d40-b746-534e22ec9f9e
11-07 07:32:31.229 17848-17848/? I/chromium: [INFO:CONSOLE(23441)] "BLE Write Characteristic: 01000001c8000000ca", source: file:///android_asset/www/canvas/MESH.js (23441)

立ち上げ時このようなログをはきます。
だからこの通り値をいれて初期化すればいいと思いました。
さらにDEBUGして
INDICATE:72c90005-57a9-4d40-b746-534e22ec9f9e
NOTIFY:72c90003-57a9-4d40-b746-534e22ec9f9e
WRITE:72c90004-57a9-4d40-b746-534e22ec9f9e
WRITE NO RESPONSE:72c90002-57a9-4d40-b746-534e22ec9f9e
であるのも知りました。
ここで上のログを読み直すと
setCharacteristicNotification() - uuid: [INDICATEのUUID] enable: true
onRegisterForNotifications() - address=null, status=0, registered=1, [INDICATEのUUID]
[INFO:CONSOLE(23516)] "BLE Write CharacteristicWithACK: 00020103",
[INFO:CONSOLE(23441)] "BLE Write Characteristic: 01000000c8000000c9",
setCharacteristicNotification() - uuid: [NOTOFYのUUID] enable: true
onRegisterForNotifications() - address=null, status=0, registered=1, charUuid=[NOTOFYのUUID]

となります。
つまり
①INDICATEを活性
②BLE Write CharacteristicWithACK: 00020103
③BLE Write Characteristic: 01000000c8000000c9
④NOTIFYを活性
らしい。
そこで②は多分WRITEで③はWrite NO RESPONSEだと思いました。

次に自前アプリを作りたくなったのでSDKはやめました。
さらににBLEを読む方法は公開されてないのをしりました。
そこでさがすと
http://hikolab.com/blog/?p=99
のようなことをしてる人がいるのを知りました。

概ね私の解析と同じなので勇気を得ました。

そこでまずINDICATEを活性にして
その受信の
onCharacteristicChangedで

lang

1 //Write 00020103 2 byte [] bary={0x00,0x02,0x01,0x03}; 3 4 mBleCharacteristicWrite.setValue(bary); 5 Boolean bres=mBleGatt.writeCharacteristic(mBleCharacteristicWrite); 6 7 byte [] bary2={0x01,0x00,0x00,0x00,(byte)0xc8,0x00,0x00,0x00,(byte)0xc9}; 8 mBleCharacteristicWriteNores.setValue(bary2); 9 Boolean bres2=mBleGatt.writeCharacteristic(mBleCharacteristicWriteNores); 10 11 12 boolean registered = mBleGatt.setCharacteristicNotification(mBleCharacteristicNotify, true); 13 14 // Characteristic の Notificationを有効化する. 15 BluetoothGattDescriptor descriptor = mBleCharacteristicNotify.getDescriptor(UUID.fromString(CHARACTERISTIC_CONFIG_UUID)); 16 17 descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); 18 mBleGatt.writeDescriptor(descriptor);

のコードをかいたのですが
onCharacteristicWrite
には受信がきますが、
onCharacteristicChangedにはNOTIFYが来ません。
なぜでしょうか?NOTIFYするときはINDICATEを非活性にすべき
かも?
あとセンサーのまえに手をかざすと光ります。
ただしなにもかえって来ません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。が、ある圧力で詳しくかけません。ちょっとコードを位置を変えると解決しました。

投稿2016/11/08 02:56

kokawa2003

総合スコア217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問