Impressão Bluetooth Android

estou a escrever uma aplicação que envia dados para a impressora bluetooth. Alguém me pode ajudar ? Como posso usar o Android Bluetooth Stack para imprimir? ou há alguma api externa ou sdk para usar?

Aqui está o meu código para procurar 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();
        }
    }
};
E aqui está o meu código para enviar dados para a impressora..

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();

quando escrevo socket.perto (), os dados não estão obtendo impressão para a impressora como conexão de socket ficando fechado antes de imprimir os dados..e se eu não escrevesse soquete.close () então os dados são impressos apenas uma vez.. Eu não seria capaz de imprimir dados pela segunda vez até que eu reinicie bluetooth do meu telefone.

Alguém pode ter uma solução para isso??? ou há outra forma de nos livrarmos desta impressão??

Author: delor, 2013-01-01

2 answers

Tenho a solução do meu problema...

Se eu quiser imprimir dados mais do que uma vez, então você não precisa criar uma nova conexão de Socket com o dispositivo... em vez disso, liga para o outputstream.método de escrita (bytes).

E no final, se quiser desligar o dispositivo, ligue para o mbtscket.método close () para desligar o dispositivo.
 5
Author: Nirav Bhandari, 2013-01-03 10:28:10

Se você fez conexão com os dispositivos e emparelhou-o.

Então, para imprimir, a impressora quer o byte. Por isso criei um mothod.

Basta chamar este método e passar o texto dentro dele para ser impresso.

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;
}
 -1
Author: Narendra Pal, 2013-01-02 13:17:09