11

Bluetoothプリンターにデータを送信するアプリケーションを作成しています。誰でも私を助けることができますか?印刷に Android Bluetooth Stack を使用するにはどうすればよいですか? または、使用する外部 API または SDK はありますか?

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() を書かなかった場合、データは一度だけ印刷されます..電話のブルートゥースを再起動するまで、データをもう一度印刷できます。

誰でも解決できますか?または、この印刷を取り除く他の方法はありますか??

4

3 に答える 3

6

私は私の問題の解決策を得ました...

データを複数回印刷したい場合は、デバイスとの新しいソケット接続を作成する必要はありません...代わりに、outputstream.write(bytes) メソッドを呼び出します。

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

于 2013-01-03T10:28:10.617 に答える
0

デバイスに接続してペアリングした場合。

したがって、印刷の場合、プリンターはバイトを必要とします。SO 私はメソッドを作成しました。

このメソッドを呼び出し、その中に文字列を渡すだけで出力されます。

String str = new String("This is the text sending to the printer");

private void printData() {
    // TODO Auto-generated method stub

    String newline = "\n";
    try {
        out.write(str.getBytes(),0,str.getBytes().length);
        Log.i("Log", "One line printed");
    } catch (IOException e) {
        Toast.makeText(BluetoothDemo.this, "catch 1", Toast.LENGTH_LONG).show();
        e.printStackTrace();
        Log.i("Log", "unable to write ");
        flagCheck = false;
    }
    try {
        out.write(newline.getBytes(),0,newline.getBytes().length);
    } catch (IOException e) {        
        Log.i("Log", "Unable to write the new line::");
        e.printStackTrace();
        flagCheck = false;
    }
    flagCheck = true;
}
于 2013-01-02T13:17:09.127 に答える