2013-03-21 8 views
5

Pracuję nad jedną aplikacją, w której muszę wydrukować jedno paragon, paragon ma jedno logo (statyczny) widok obrazu, jak mogę wydrukować to na drukarce bluetooth? a także podpisałem się za pomocą GestureOverlayView, teraz muszę wydrukować ten gest wraz z logo i niektórymi danymi dotyczącymi paragonu. enter image description hereJak wydrukować obraz i niektóre dane z urządzenia z systemem Android za pomocą drukarki (drukowanie przez bluetooth)?

i potrzebuję również wydrukować jeden arabski ciąg znaków. który jest pokazany w WIDOKIE TEKSTOWYM. za wyświetlenie podpisu używam widoku obrazu w moim układzie. Sprawdź obraz, Zamocowuję obraz, który muszę wydrukować, proszę daj mi trochę pomysłu na jego wydrukowanie.

Mogę zmienić format w druku, oznacza to, że nie muszę drukować danych w prostokątach, ale wyrównanie obrazu jest głównym problemem, w jaki sposób dowiem się o wyrównaniu?

Odpowiedz

9

Spróbuj użyć tego jednego ....

public class BluetoothPrinterActivity extends Activity { 

BluetoothAdapter mBTAdapter; 
BluetoothSocket mBTSocket = null; 
Dialog dialogProgress; 
String BILL, TRANS_ID; 
String PRINTER_MAC_ID = "00:1F:B7:02:8F:44"; 
final String ERROR_MESSAGE = "There has been an error in printing the bill."; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    try { 

     BILL = "\nSale Slip No: 12345678" + " " + "04-08-2011\n"; 
     BILL = BILL + "----------------------------------------"; 
     BILL = BILL + "\n\n"; 
     BILL = BILL + "Total Qty:" + " " + "2.0\n"; 
     BILL = BILL + "Total Value:" + " " + "17625.0\n"; 
     BILL = BILL + "-----------------------------------------"; 

     mBTAdapter = BluetoothAdapter.getDefaultAdapter(); 

     if (mBTAdapter == null) { 
      Toast.makeText(this, "Device has no bluetooth capability",Toast.LENGTH_LONG).show(); 
      finish(); 
     } else { 
      if (!mBTAdapter.isEnabled()) { 
       Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
       startActivityForResult(i, 0); 
      } 

      // Register the BroadcastReceiver 
      IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 
      registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy 

      dialogProgress = new Dialog(BluetoothPrinterActivity.this); 
      dialogProgress.setTitle("Finding printer..."); 
      dialogProgress.setOnDismissListener(new DialogInterface.OnDismissListener() { 
         public void onDismiss(DialogInterface dialog) { 
          dialog.dismiss(); 
          setResult(RESULT_CANCELED); 
          finish(); 
         } 
        }); 
      dialogProgress.show(); 

     } 

     if (mBTAdapter.isDiscovering()) 
      mBTAdapter.cancelDiscovery(); 
     else 
      mBTAdapter.startDiscovery(); 

     System.out.println("BT Searching status :" + mBTAdapter.isDiscovering()); 

    } catch (Exception e) { 
     Log.e("Class ", "My Exe ", e); 
    } 
} 

private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     try { 
      String action = intent.getAction(); 
      // When discovery finds a device 
      if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
       // Get the BluetoothDevice object from the Intent 
       BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 

       System.out.println("***" + device.getName() + " : "+ device.getAddress()); 

       if (device.getAddress().equalsIgnoreCase(PRINTER_MAC_ID)) { 
        mBTAdapter.cancelDiscovery(); 
        dialogProgress.dismiss(); 
        Toast.makeText(BluetoothPrinterActivity.this,device.getName() + " Printing data",Toast.LENGTH_LONG).show(); 
        printBillToDevice(PRINTER_MAC_ID); 
        Toast.makeText(BluetoothPrinterActivity.this,device.getName() + " found", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } catch (Exception e) { 
      Log.e("Class ", "My Exe ", e); 
     } 
    } 
}; 


@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    try { 
     if (dialogProgress != null) 
      dialogProgress.dismiss(); 
     if (mBTAdapter != null) 
      mBTAdapter.cancelDiscovery(); 
     this.unregisterReceiver(mReceiver); 
    } catch (Exception e) { 
     Log.e("Class ", "My Exe ", e); 
    } 
} 


@Override 
public void onBackPressed() { 
    try { 
     if (mBTAdapter != null) 
      mBTAdapter.cancelDiscovery(); 
      this.unregisterReceiver(mReceiver); 
    } catch (Exception e) { 
     Log.e("Class ", "My Exe ", e); 
    } 
    setResult(RESULT_CANCELED); 
    finish(); 
} 


public void printBillToDevice(final String address) { 
    new Thread(new Runnable() { 
     public void run() { 
      runOnUiThread(new Runnable() { 
       public void run() { 
        dialogProgress.setTitle("Connecting..."); 
        dialogProgress.show(); 
       } 

      }); 

      mBTAdapter.cancelDiscovery(); 

      try { 
       System.out.println("**************************#****connecting"); 
       BluetoothDevice mdevice = mBTAdapter.getRemoteDevice(address); 
       Method m = mdevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class }); 
       mBTSocket = (BluetoothSocket) m.invoke(mdevice, 1); 

       mBTSocket.connect(); 
       OutputStream os = mBTSocket.getOutputStream(); 
       os.flush(); 

       os.write(BILL.getBytes()); 
       System.out.println(BILL); 

       setResult(RESULT_OK); 
       finish(); 
      } catch (Exception e) { 
       Log.e("Class ", "My Exe ", e); 
       e.printStackTrace(); 
       setResult(RESULT_CANCELED); 
       finish(); 

      } 

      runOnUiThread(new Runnable() { 
       public void run() { 
        try { 
         dialogProgress.dismiss(); 
        } catch (Exception e) { 
         Log.e("Class ", "My Exe ", e); 
        } 
       } 

      }); 

     } 

    }).start(); 
    } 
} 

z tego linku Bluetooth Printer issue in android

+0

używałem ten kod to działa dobrze ... ale nie drukuje ar bic tekst, więc jeśli wiesz, to możesz mi pomóc – CoronaPintu

+0

cześć pintu. Nie rozwiązałem tego problemu ... – UdiT

3

staram mojej mocy, aby dać odpowiedź przed czemu można uzyskać rozwiązanie z już poprosił questions

masz 3 opcje drukowania z Android App

1>SDK/biblioteki: (jak starmicronics, jest ograniczona do kilku urządzeń)

2>aplikacji Google Play: (bezpośrednio dzwoniąc zamiarem thirparty apps)

3>Google cloud print: (zalecane. Jest łatwy w użyciu i zintegrowany z aplikacją). Dzięki temu możemy podłączyć dowolne drukarki, takie jak drukarki klasyczne, drukarki Cloud Print.

za korzystanie z Google Print jako użytkownik perspektywy użytkownika należy aktywować usługę Google Print do konta Gmail, Google cloud print used in many places!

Konfigurowanie usługi Google Print:

Blog

https://stackoverflow.com/questions/11323805/how-to-setup-network-printer-to-google-cloud-print/14911180#14911180

Google cloud print set up1

Google cloud print set up2

Printing via gchrome

Google cloud printers

Integracja drukarek chmurze aplikacji:

W Androidzie nie ma opcji dla Airprint jak na innych platformach, ale Google wykonany opcję drukowania chmura niesamowite za to takie że dowolna drukarka może korzystać z opcji drukowania z urządzeń mobilnych.

Przykładowe kody:

funcode

Google cloud print code

Powiązane problemy