在蓝牙-Android上打印时如何设置文本大小? [英] How to set textsize while printing on bluetooth -Android?

查看:165
本文介绍了在蓝牙-Android上打印时如何设置文本大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作从Android BT(蓝牙)到BT打印机的应用程序.

我可以打印页面和文本文件,但是我无法像在文本文件中那样打印..这是我要打印的代码.



I am making app where I have to from android BT(Bluetooth) to BT printer

I can print the page and text file but i am not getting print in manner as in the text file ..This is my code to print..



import java.io.OutputStream;
import java.lang.reflect.Method;

import android.app.Activity;
import android.app.Dialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends Activity {
  BluetoothAdapter mBTAdapter;
  BluetoothSocket mBTSocket = null;
  Dialog dialogProgress;
  String BILL, TRANS_ID;
  String PRINTER_MAC_ID;
  final String ERROR_MESSAGE = "There has been an error in printing the bill.";

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

    try {

      // BILL = getIntent().getStringExtra("TO_PRINT");
      // TRANS_ID = getIntent().getStringExtra("TRANS_ID");

      // PRINTER_MAC_ID = getIntent().getStringExtra("MAC_ID");

      PRINTER_MAC_ID = "00:03:7A:25:1E:D8";
      // PRINTER_MAC_ID = "00:12:F3:0D:A3:E6";
      // TRANS_ID="12345678";
      BILL = "Sale Slip No: 12345678" + "          " + "19-11-2012\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();

      dialogProgress = new Dialog(MainActivity.this);

      try {
        if (mBTAdapter.isDiscovering())
          mBTAdapter.cancelDiscovery();
        else
          mBTAdapter.startDiscovery();
      } catch (Exception e) {
        Log.e("Class ", "My Exe ", e);
      }
      System.out.println("BT Searching status :"
          + mBTAdapter.isDiscovering());
      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.setTitle("Finding printer...");
        dialogProgress
            .setOnDismissListener(new DialogInterface.OnDismissListener() {
              public void onDismiss(DialogInterface dialog) {
                dialog.dismiss();
                setResult(RESULT_CANCELED);
                finish();
              }
            });
        dialogProgress.show();

      }

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

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

          if (mBTAdapter != null)
            mBTAdapter.cancelDiscovery();

          mBTSocket.close();
          setResult(RESULT_OK);
          finish();
        } catch (Exception e) {
          Log.e("Class ", "My Exe ", e);
          // Toast.makeText(BluetoothPrint.this, ERROR_MESSAGE,
          // Toast.LENGTH_SHORT).show();
          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();
  }

  @Override
  protected void onDestroy() {
    Log.i("Dest ", "Checking Ddest");
    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);
    }
  }

  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(MainActivity.this,
                device.getName() + " Printing data",
                Toast.LENGTH_LONG).show();
            printBillToDevice(PRINTER_MAC_ID);
            Toast.makeText(MainActivity.this,
                device.getName() + " found", Toast.LENGTH_LONG)
                .show();
          }
        }
      } catch (Exception e) {
        Log.e("Class  ", "My Exe ", e);
        // Toast.makeText(BluetoothPrint.this,
        // ERROR_MESSAGE,Toast.LENGTH_SHORT).show();

      }
    }
  };

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

}



[edit]已更正索引并添加了代码块[/edit]



[edit]indexation corrected and code block added[/edit]

推荐答案

我们必须使用移动打印命令以这种方式进行打印
像这样的cmd来设置页面

! 0200200210 1

我们必须用我们的字符串添加它....
lil有点奇怪...
We have to use mobile printing commands to print in manner
like this cmd to set page

! 0 200 200 210 1

we have to add this with our string....
lil bit odd to do...


这篇关于在蓝牙-Android上打印时如何设置文本大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆