前提・実現したいこと
<実現したい事> Android端末からBluetoothを使用し、プリンターと接続がしたい。 AndroidStudioの勉強を始めたばかりなので、サンプルコード等を拝見しながらかいているのですが、mBtSocket.connect(); の部分でソケットと接続をするときにうまく動いていないように見えました。 質問内容の観点があっているのかわかりませんが、よろしくお願いします。
発生している問題・エラーメッセージ
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@960bed3 W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback W/System.err: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
該当のソースコード
Java
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 setContentView(R.layout.activity_print); 4 5 ~省略~ 6 7 BTConnect(); 8 //ソケットが取得出来たら、出力用ストリームを作成する 9 if (mBTSocket != null) { 10 try { 11 mOutputStream = mBTSocket.getOutputStream(); 12 } catch (IOException e) {/*ignore*/} 13 } else { 14 Toast toast = Toast.makeText(getApplicationContext(), "ソケットが取得できません。", Toast.LENGTH_LONG); 15 toast.show(); 16 } 17 } 18} 19 20 private void BTConnect() { 21// BTアダプタのインスタンスを取得 22 mBTAdapter = BluetoothAdapter.getDefaultAdapter(); 23// //相手先BTデバイスのインスタンスを取得 24 mBTDevice = mBTAdapter.getRemoteDevice(MacAddress); 25 //自動ペアリングとピンコード送信 26 try { 27 execPairing(MacAddress, Mdl_BTAccess.PIN_CODE); 28 } catch (Exception e) { 29 e.printStackTrace(); 30 } 31// ソケットの設定 32 try { 33 mBTSocket = mBTDevice.createRfcommSocketToServiceRecord(UUID.fromString(MY_UUID)); 34 } catch (IOException e) { 35 e.printStackTrace(); 36 } 37 38 new Thread(new Runnable() { 39 public void run() { 40 try { 41 mBTSocket.connect(); 42 mInput = mBTSocket.getInputStream(); 43 mOutput = mBTSocket.getOutputStream(); 44 45 while (true) { 46 mOutput.write(mInput.read()); 47 } 48 } catch (IOException e) { 49 e.printStackTrace(); 50 } 51 } 52 }).start(); 53 }
補足情報(FW/ツールのバージョンなど)
AndroidStudio ver4.1.1使用中
Android version7.1
あなたの回答
tips
プレビュー