如何使用打印机(通过蓝牙打印)从Android设备打印图像和一些数据?

前端之家收集整理的这篇文章主要介绍了如何使用打印机(通过蓝牙打印)从Android设备打印图像和一些数据?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在开发一个应用程序,其中我必须打印一张收据,收据有一个徽标(静态)图像视图,我该如何打印到蓝牙打印机?我也使用GestureOverlayView进行签名,现在我必须打印该手势以及有关收据的徽标和一些数据.

我还需要打印一个阿拉伯字符串.这在文本视图中显示.
为了显示签名我在我的布局中使用图像视图.请检查图像,
我正在附上我必须打印的图像,请给我一些关于打印它的想法.

我可以改变打印格式,意味着我不必在矩形中打印数据,但图像对齐是主要问题,我将如何了解对齐?

最佳答案
尝试使用这个….

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 ",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 ",e);
    }
}


@Override
public void onBackPressed() {
    try {
        if (mBTAdapter != null)
            mBTAdapter.cancelDiscovery();
            this.unregisterReceiver(mReceiver);
    } catch (Exception e) {
        Log.e("Class ",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 ",e);
                e.printStackTrace();
                setResult(RESULT_CANCELED);
                finish();

            }

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

            });

        }

    }).start();
  }
}

来自此链接Bluetooth Printer issue in android

猜你在找的Android相关文章