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

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

ただいまの
回答率

88.78%

ANDROIDのBLEのやり方について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,779

kokawa2003

score 170

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で

//Write 00020103
                byte [] bary={0x00,0x02,0x01,0x03};

                mBleCharacteristicWrite.setValue(bary);
                Boolean bres=mBleGatt.writeCharacteristic(mBleCharacteristicWrite);

                byte [] bary2={0x01,0x00,0x00,0x00,(byte)0xc8,0x00,0x00,0x00,(byte)0xc9};
                mBleCharacteristicWriteNores.setValue(bary2);
                Boolean bres2=mBleGatt.writeCharacteristic(mBleCharacteristicWriteNores);


                boolean registered = mBleGatt.setCharacteristicNotification(mBleCharacteristicNotify, true);

                // Characteristic の Notificationを有効化する.
                BluetoothGattDescriptor descriptor = mBleCharacteristicNotify.getDescriptor(UUID.fromString(CHARACTERISTIC_CONFIG_UUID));

                descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
                mBleGatt.writeDescriptor(descriptor);


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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る