2013-01-01 20 views
7

Piszę aplikację, która wysyła dane do drukarki bluetooth. Czy ktoś może mi pomóc ? jak mogę wykorzystać Android Bluetooth Stack do drukowania? czy jest jakiś zewnętrzny api lub SDK do użycia?Android Bluetooth Printing

Oto mój kod do wyszukiwania 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(); 
     } 
    } 
}; 

i tu jest mój kod do wysyłania danych do drukarki ..

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

Kiedy piszę socket.close(), dane nie drukuje do drukarki, gdy połączenie z gniazdem jest zamykane przed drukowaniem danych ... i jeśli nie zapisałem socket.close(), dane są drukowane tylko raz. Nie będę mógł drukować danych po raz drugi, dopóki nie uruchomię ponownie Bluetooth mojego telefonu.

może ktoś ma rozwiązanie dla niego? czy jest jakiś inny sposób na pozbycie się tego drukowania?

+0

Chcę wysłać prosty tekst z mojego urządzenia z Androidem do mojej obsługiwanej przez bluetooth drukarki termicznej .. ale jestem mało przekonany o tym, jak wysłać dane do tej drukarki bluetooth, –

+0

@NiravBhandari: Utknąłem z podobnym problemem. Moja aplikacja prawie to samo. Byłoby wspaniale, gdybym mógł się z tobą skontaktować, by uzyskać pomoc. Dzięki. :) – Swayam

+0

powiedz mi swój problem –

Odpowiedz

5

mam rozwiązanie mojego problemu ...

jeśli chcę wydrukować dane więcej niż jeden raz, a potem nie trzeba tworzyć nowego połączenia wtykowe z urządzeniem ... zamiast tego wywołaj metodę outputstream.write (bytes).

iw końcu, jeśli chcesz odłączyć urządzenie, wywołaj metodę mBTScoket.close(), aby odłączyć urządzenie.

+0

To świetnie, proszę nie " t zaznacz moją odpowiedź jako zaakceptowaną. Zaznacz swoją odpowiedź. coz rozwiązałeś to własnym wysiłkiem, –

+0

jakiego zezwolenia użyłeś w AndroidManifest.xml? –

-1

Jeśli nawiązałeś połączenie z urządzeniami i sparowałeś je.

W związku z tym drukarka potrzebuje bajtu. WIĘC stworzyłem mothod.

Po prostu wywołaj tę metodę i przeprowadź w niej napis, aby wydrukować.

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; 
} 
+0

dziękuję za odpowiedź ... rzeczywiście nie mogłem połączyć się z drukarką. Próbowałem, jak wspomniano na stronie dla programistów Androida ... czy możesz mi pomóc, jak mogę podłączyć moje urządzenie z Androidem do drukarki? –

+0

Proszę odpowiedzieć na pytania, które zadaję tutaj, aby móc wyraźnie pomóc. Czy szukałeś urządzeń za pomocą Bluetooth? Czy otrzymujesz listę urządzeń bluetooth? Czy parowałeś z dwoma urządzeniami bluetooth? –

+0

Edytowałem pytanie z kodem wyszukiwarki bluetooth i wysyłałem dane do bluetooth, jak wspomniałeś ... pls przejrzyj to –

Powiązane problemy