私はAndroidアプリケーションで頻繁にエラーとしてgetBluetoothService() called with no BluetoothManagerCallback
を取得しています。getbluetoothservice()がbluetoothmanagercallbackなしで呼び出されました
これはBluetoothマネージャのコールバックについて何が原因か分かりません。誰でも私にこの問題の原因となっている可能性があるか、どこから見始めるべきかを教えてもらえますか?
私はAndroidアプリケーションで頻繁にエラーとしてgetBluetoothService() called with no BluetoothManagerCallback
を取得しています。getbluetoothservice()がbluetoothmanagercallbackなしで呼び出されました
これはBluetoothマネージャのコールバックについて何が原因か分かりません。誰でも私にこの問題の原因となっている可能性があるか、どこから見始めるべきかを教えてもらえますか?
複数のBluetoothソケットを一度に開いたときに呼び出されるようです。私は一度に1つのソケットだけを開いていることを確認してこれを修正しました。
これをどのようにして行うかを明確にすることはできますか(単なる言葉で)。私は新しいソケットを開く直前に "すべてのオープンソケットを閉じる"という機能を持っています。しかし、これはトリックをやっていないようです。どうやってやっているの? – Brandon
私のアプリケーションが閉じられた後でもこのエラーが発生し、私はそれを可能な限り排除できません。このようなことが起きた後は、Bluetoothをオンにすることができなくなったため、電話をハードに再起動する必要があります。
今では(同じコードで)、それは私の携帯電話の1台でのみ発生します。多分それはドライバの問題です。
android 4.2これは既知の問題です – dacopenhagen
ああ、情報のためのtnx: –
また、ブロードコムのBluetoothスタックを使用しているいくつかの電話:/ – dacopenhagen
Androidのソースコードを読み込むことで、何もできないことが警告されているようです。ソースコードは、あなたが
BluetoothSocket#connect();
を呼び出す場合、それはここ
BluetoothAdapter.getDefaultAdapter().getBluetoothService(null);
キーを呼び出すことを示し、それは上の行に渡すnullパラメータです。このため、コールバックは発生せず、BluetoothSocketクラスは警告をスローします。
警告だけなので、何もする必要はありません。
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothSocket.javaライン306 https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothAdapter.javaライン1610
BluetoothServerSocketが現在接続しようとしている同じUUIDで[bluetoothServerSocket.acceptを()]受け付けていません場合にもアップします。
サーバソケットを受け入れることを確信している場合は、タイムアウトが短すぎないことをもう一度確認します(以前は何かをチェックするために200に設定していました)。
BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGEDをBluetoothHeadset.STATE_CONNECTEDの状態で受け取った直後に、BluetoothSocket.connect()を試した後、このメッセージが届きました。 BluetoothSocket.connect()も失敗しました。 BluetoothSocket.connect()を試す前に500msのタイムアウトを加えた後、これは実際に接続している問題を解決しました。メッセージ「BluetoothManagerCallbackなしで呼び出されたgetBluetoothService()」は残っていますが、すべて正常に機能します。無BluetoothManagerCallback
と呼ば
getBluetoothService()私も同じ問題に直面しています。しかし、私は解決しました。 私の場合、すでに1つのソケットがオープン状態で、別のソケットを開こうとしています。だから私たちはクライアントとして一度に複数のソケットを開こうとしています。私はこれが理由だと感じました
どうすればそれを解決できますか? –
これをチェックしてください:http://stackoverflow.com/questions/17304479/android-getbluetoothservice-called-with-no-bluetoothmanagercallback – user2723096
非常にばかげたメッセージです。ソフトウェアは、ソケットがクローズされているか、リードタイムアウトしているかを知る必要があり、2つの条件は遠隔的には似ていません。私は 'ソケットが閉じている'と思うが、 '接続はピアによって閉じられている'と読むべきだ。 – EJP