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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

4353閲覧

BluetoothのSniffモードを無効にしたい

Kmassa

総合スコア161

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

1クリップ

投稿2016/09/20 05:46

###前提・実現したいこと
ある機器とAndroid端末とでBluetoothを介して通信を行うプログラムを開発しようとしています。
その機器は画面は持っておらず、決められたメッセージに対して応答を行います。
現段階では、通信の確認を行うため、サンプルのBluetoothChatをSPPで通信するように改造したプログラムを使用しています。

Bluetooth2.1からSniff Subratingという機能が追加されているようですが、
今回のアプリではこの機能を使わないようにしたいです。
しかし、この機能を制御する関数等が見つけられず困っております。

ご存じの方おられましたら、ご教示の程、よろしくお願い致します。

###発生している問題・エラーメッセージ
機器に組み込まれたBluetoothモジュールのSniffモードが、
Android端末とのやり取りによって有効になっているようです。
(この機器はPCともやり取りを行うようですが、その際にはSniffモードには入らなかったそうです)

###試したこと
Sniffモードの切り替えはHCIコマンドによって行われるという情報を得たので、
Androidの開発者向けオプションにある「Bluetooth HCIスヌープログ」を有効にし、ログを取得しました。

Frame 58: 8 bytes on wire (64 bits), 8 bytes captured (64 bits) Bluetooth Bluetooth HCI H4 [Direction: Sent (0x00)] HCI Packet Type: HCI Command (0x01) Bluetooth HCI Command - Write Link Policy Settings Command Opcode: Write Link Policy Settings (0x080d) Parameter Total Length: 4 Connection Handle: 0x000c .... .... .... ...1 = Enable Master Slave Switch: true (1) .... .... .... ..0. = Enable Hold Mode: false (0) .... .... .... .1.. = Enable Sniff Mode: true (1) .... .... .... 0... = Enable Park Mode: false (0) [Response in frame: 59] [Command-Response Delta: 0.478 ms]
Frame 160: 8 bytes on wire (64 bits), 8 bytes captured (64 bits) Bluetooth Bluetooth HCI H4 [Direction: Rcvd (0x01)] HCI Packet Type: HCI Event (0x04) Bluetooth HCI Event - Number of Completed Packets No. Time Source Destination Protocol Length Info 161 602.660037 host controller HCI_CMD 14 Sent Sniff Mode
Frame 163: 9 bytes on wire (72 bits), 9 bytes captured (72 bits) Bluetooth Bluetooth HCI H4 [Direction: Rcvd (0x01)] HCI Packet Type: HCI Event (0x04) Bluetooth HCI Event - Mode Change No. Time Source Destination Protocol Length Info 164 1563.870128 host controller HCI_CMD 6 Sent Exit Sniff Mode

プログラムをステップ実行しながらログを確認すれば、どこでモードが切り替えられているかわかると思ったのですが、
サンプルプログラム(BluetoothChat)ではそういった箇所が見受けられず、
InputStream.read等、ライブラリ関数が呼び出されている最中に切り替わっているようです。
そもそも、これはhost→controllerなので、Android端末自体のSniffモードの話でしょうか?

###補足情報(言語/FW/ツール等のバージョンなど)
開発言語:Java
開発環境:Android Studio2.1.3
Bluetooth:Ver2.1+EDR

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問