2

我正在使用此代码进行打印:

public class BPrinterActivity extends Activity implements Runnable {
protected static final String TAG = "TAG";
private static final int REQUEST_CONNECT_DEVICE = 1;
private static final int REQUEST_ENABLE_BT = 2;
private Button mScan, mPrint, mDisc;
private UUID applicationUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
private ProgressDialog mBluetoothConnectProgressDialog;
private BluetoothSocket mBluetoothSocket;
private BluetoothDevice mBluetoothDevice;
private BluetoothAdapter mBluetoothAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_bprinter);

    mScan = (Button) findViewById(R.id.Scan);
     mScan.setOnClickListener(new View.OnClickListener() {
         public void onClick(View mView) {
             mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
             if (mBluetoothAdapter == null) {
                 Toast.makeText(BPrinterActivity.this, "Message1", 2000).show();
             } else {
                 if (!mBluetoothAdapter.isEnabled()) {
                     Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                     startActivityForResult(enableBtIntent,REQUEST_ENABLE_BT);
                 } else {
                     ListPairedDevices();
                     Intent connectIntent = new Intent(BPrinterActivity.this,DeviceListActivity.class);
                     startActivityForResult(connectIntent,REQUEST_CONNECT_DEVICE);
                 }
             }
         }
     });

     mPrint = (Button) findViewById(R.id.mPrint);
     mPrint.setOnClickListener(new View.OnClickListener() {
         public void onClick(View mView) {
             Thread t = new Thread() {
                 public void run() {
                     try {

                         String BILL = "";
                         BILL = "1234567812345678ABCDEFGH";
                         BILL="الرئيسية";
                         BILL = "ABCDEFGH";
                         OutputStream os = mBluetoothSocket.getOutputStream();



                         os.write(BILL.getBytes());

                     } catch (Exception e) {
                         Log.e("Main", "Exe ", e);
                     }
                 }
             };
             t.start();
         }
     });

     mDisc = (Button) findViewById(R.id.dis);
     mDisc.setOnClickListener(new View.OnClickListener() {
         public void onClick(View mView) {
             if (mBluetoothAdapter != null)
                 mBluetoothAdapter.disable();
         }
     });

 }// onCreate

 @Override
 protected void onDestroy() {
     super.onDestroy();
     try {
         if (mBluetoothSocket != null)
             mBluetoothSocket.close();
     } catch (Exception e) {
         Log.e("Tag", "Exe ", e);
     }
 }

 @Override
 public void onBackPressed() {
     try {
         if (mBluetoothSocket != null)
             mBluetoothSocket.close();
     } catch (Exception e) {
         Log.e("Tag", "Exe ", e);
     }
     setResult(RESULT_CANCELED);
     finish();
 }

 public void onActivityResult(int mRequestCode, int mResultCode,Intent mDataIntent) {
     super.onActivityResult(mRequestCode, mResultCode, mDataIntent);

     switch (mRequestCode) {
     case REQUEST_CONNECT_DEVICE:
         if (mResultCode == Activity.RESULT_OK) {
             Bundle mExtra = mDataIntent.getExtras();
             String mDeviceAddress = mExtra.getString("DeviceAddress");
             Log.v(TAG, "Coming incoming address " + mDeviceAddress);
             mBluetoothDevice = mBluetoothAdapter.getRemoteDevice(mDeviceAddress);
             mBluetoothConnectProgressDialog = ProgressDialog.show(this,"Connecting...", mBluetoothDevice.getName() + " : "+ mBluetoothDevice.getAddress(), true, false);
             Thread mBlutoothConnectThread = new Thread(this);
             mBlutoothConnectThread.start();
             // pairToDevice(mBluetoothDevice); This method is replaced by
             // progress dialog with thread
         }
         break;

     case REQUEST_ENABLE_BT:
         if (mResultCode == Activity.RESULT_OK) {
             ListPairedDevices();
             Intent connectIntent = new Intent(BPrinterActivity.this,DeviceListActivity.class);
             startActivityForResult(connectIntent, REQUEST_CONNECT_DEVICE);
         } else {
             Toast.makeText(BPrinterActivity.this, "Message", 2000).show();
         }
         break;
     }
 }

 private void ListPairedDevices() {
     Set<BluetoothDevice> mPairedDevices = mBluetoothAdapter.getBondedDevices();
     if (mPairedDevices.size() > 0) {
         for (BluetoothDevice mDevice : mPairedDevices) {
             Log.v(TAG, "PairedDevices: " + mDevice.getName() + "  "+ mDevice.getAddress());
         }
     }
 }

 public void run() {
     try {
         mBluetoothSocket = mBluetoothDevice.createRfcommSocketToServiceRecord(applicationUUID);
         mBluetoothAdapter.cancelDiscovery();
         mBluetoothSocket.connect();
         mHandler.sendEmptyMessage(0);
     } catch (IOException eConnectException) {
         Log.d(TAG, "CouldNotConnectToSocket", eConnectException);
         closeSocket(mBluetoothSocket);
         return;
     }
 }

 private void closeSocket(BluetoothSocket nOpenSocket) {
     try {
         nOpenSocket.close();
         Log.d(TAG, "SocketClosed");
     } catch (IOException ex) {
         Log.d(TAG, "CouldNotCloseSocket");
     }
 }

 private Handler mHandler = new Handler() {
     @Override
     public void handleMessage(Message msg) {
         mBluetoothConnectProgressDialog.dismiss();
         Toast.makeText(BPrinterActivity.this, "DeviceConnected", 5000).show();
     }
 };


 public static byte intToByteArray(int value) {
     byte[] b = ByteBuffer.allocate(4).putInt(value).array();
     for (int k = 0; k < b.length; k++) {
         System.out.println("Selva  [" + k + "] = " + "0x"+ UnicodeFormatter.byteToHex(b[k]));
     }
     return b[3];
 }

 public byte[] sel(int val) {
     ByteBuffer buffer = ByteBuffer.allocate(2);
     buffer.putInt(val);
     buffer.flip();
     return buffer.array();
 }
}

此代码运行良好,但在打印之前将扫描设备配对然后打印现在我有打印机设备地址现在我直接想打印而不扫描或配对

4

0 回答 0