1. ホーム
  2. android

[解決済み] Android Bluetoothプリント

2022-03-03 11:29:09

質問

私は、ブルートゥースプリンタにデータを送信するアプリケーションを書いています。誰か私を助けることができますか? どのように私は印刷のためのAndroidのBluetoothスタックを使用することができますか?

以下は、ブルートゥースを検索するための私のコードです...

bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
registerReceiver(ActionFoundReceiver,
        new IntentFilter(BluetoothDevice.ACTION_FOUND));

private final BroadcastReceiver ActionFoundReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            BluetoothDevice device = intent
                    .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            btArrayAdapter.add(device.getName() + "\n"
                    + device.getAddress());
            btArrayAdapter.notifyDataSetChanged();
        }
    }
};

そして、プリンタにデータを送信するためのコードです。

BluetoothDevice mDevice = bluetoothAdapter.getRemoteDevice("00:15:FF:F2:56:A4");
Method m = mDevice.getClass().getMethod("createRfcommSocket",
        new Class[] { int.class });
mBTsocket = (BluetoothSocket) m.invoke(mDevice, 1);
System.out.println("Connecting.....");
mBTsocket.connect();
System.out.println("Connected");
OutputStream os = mBTsocket.getOutputStream();
os.flush();
os.write(Receipt.getBytes());
// mBTsocket.close();

socket.close()を書くと、データを印刷する前にソケット接続が閉じられるので、データがプリンタに印刷されません。また、socket.close()を書かないと、データは一度だけ印刷されます。もしsocket.close()を書かなければ、データは一度だけ印刷されることになります。

誰か解決策を持っていますか? それとも、この印刷を取り除く他の方法はありますか?

解決方法を教えてください。

問題が解決しました。

もし、データを複数回印刷したいのであれば、デバイスと新しいソケット接続を作成する必要はなく、outputstream.write(bytes)メソッドを呼び出します。

最後にデバイスを切断したい場合は、mBTScoket.close()メソッドを呼び出してデバイスを切断します。