How to print image and some data from an android device, using printer (print via bluetooth)?

后端 未结 2 515
迷失自我
迷失自我 2020-12-30 16:16

I am developing one app in which i have to print one receipt, receipt has one logo(static) image view, how can i print this to bluetooth printer? and also i have taken signa

相关标签:
2条回答
  • 2020-12-30 17:00

    I try my best to give the answer before that you can get the solution from already asked questions

    you have 3 options for printing from android app

    1>SDKs/Libraries: (like starmicronics, it's limited to few devices)

    2>Google Play Apps: (directly calling the intent to thirparty apps)

    3>Google cloud print: (recommended. It's easy to use and integrate into an app) By this we connect any printers like Classic printers, Cloud Print printers.

    for using Google print as user perspective user should activate google print service to gmail account, Google cloud print used in many places!

    Setting up the google print service:

    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

    Integrating Cloud printers to App:

    In Android there no option for Airprint like other platforms, but Google made awesome cloud printing option for that such that any printer can use the print option from mobile devices.

    Sample codes:

    funcode

    Google cloud print code

    0 讨论(0)
  • 2020-12-30 17:18

    Try using this one....

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

    from this link Bluetooth Printer issue in android

    0 讨论(0)
提交回复
热议问题