Android上的蓝牙三星Galaxy XCover总是成功的

时间:2012-07-25 13:52:20

标签: android bluetooth

Android蓝牙连接有点问题。我在Zebra MZ320打印机上使用蓝牙打印。到目前为止,我对任何手机都没有任何问题(三星Galaxy Mini,三星Galaxy Ace,三星Galaxy Nexus S,三星Galaxy S2,三星Galaxy Nexus S,三星Galaxy Note,HTC Desire Z,没有任何问题。 HTC Desire S,HTC Desire,HTC Legend,HTC Flyer,三星Galaxy Tab),但最近我买了三星Galaxy XCover,打印不起作用。

经过一天的研究,我做了这个程序:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  Button bTest = (Button)findViewById(R.id.button1);
  bTest.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
      if (new File("/sdcard/logDat.txt").exists()) {
        new File("/sdcard/logDat.txt").delete();
      }
      Toast.makeText(TestPrinterActivity.this, "abcd1234", Toast.LENGTH_SHORT).show();
      String macAddr = "00:22:58:07:BD:A5";
      //sendCpclOverBluetooth(macAddr);
      BluetoothSocket bSocket = null;
      OutputStream outStream = null;
      InputStream inStream = null;
      try {
        log("try... \tMAC address: "+macAddr);
        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(macAddr);
        Method m = device.getClass().getMethod("createRfcommSocket", new Class[] { Integer.TYPE });
        //Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] { Integer.TYPE });
        bSocket = (BluetoothSocket)m.invoke(device, new Object[] { Integer.valueOf(1) });
        //bSocket = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(macAddr).createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
        //bSocket = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(macAddr).createInsecureRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
        log("\tconnect()");
        bSocket.connect();
        log("\tgetOutputStream");
        outStream = bSocket.getOutputStream();
        log("\tgetInputStream");
        inStream = bSocket.getInputStream();
        String cpclData = "! U1 SETLP ARI08ITA.CPF 0 20\r\n test123\r\n";
        // Send the data to printer as a byte array.
        log("\twriting: "+cpclData);
        outStream.write(cpclData.getBytes());
        log("\tflush");
        outStream.flush();
        Sleeper.sleep(1000);
        log("\tfinish1");
      } catch (Exception e) {
        log("\t\tERROR: "+e.getMessage());
        e.printStackTrace();
        Toast.makeText(TestPrinterActivity.this, "ERROR: "+e.getMessage(), Toast.LENGTH_SHORT).show();
      } finally {
        try {
          log("\tbSocket.close");
          bSocket.close();
          log("\toutStream.close");
          outStream.close();
          log("\tinStream.close");
          inStream.close();
        } catch (Exception e) {
          log("\t\tERROR while closing: "+e.getMessage());
          e.printStackTrace();
          Toast.makeText(TestPrinterActivity.this, "ERROR while closing: "+e.getMessage(), Toast.LENGTH_SHORT).show();
        }
      }
      log("endTry");
    }
  });
}

private void log(String str) {
  if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED ) == false)
    return;
  try {
    BufferedWriter buffWr = new BufferedWriter(new FileWriter("/sdcard/logDat.txt", true));
    buffWr.write(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ": "+ str);
    buffWr.newLine();
    buffWr.close();
  } catch(Exception e) {
    Toast.makeText(TestPrinterActivity.this, "ERROR writing to log file: "+e, Toast.LENGTH_SHORT).show();
  }
}

以下是CORRECT和WRONG输出。每个输出包含两个场景(打印机打开和关闭的位置)。

好像在三星Galaxy XCover蓝牙即使离线也总能成功连接到打印机......

任何建议做什么/尝试的建议将不胜感激。

---------------------------------------------------------------------
  When printer is turned on:
---------------------------------------------------------------------
2012-07-25 14:53:36: try...     MAC address: 00:22:58:07:BD:A5
2012-07-25 14:53:36:    connect()
2012-07-25 14:53:43:    getOutputStream
2012-07-25 14:53:43:    getInputStream
2012-07-25 14:53:43:    writing: ! U1 SETLP ARI08ITA.CPF 0 20
  test123

2012-07-25 14:53:43:    flush
2012-07-25 14:53:44:    finish1
2012-07-25 14:53:44:    bSocket.close
2012-07-25 14:53:44:    outStream.close
2012-07-25 14:53:44:    inStream.close
2012-07-25 14:53:44: endTry

---------------------------------------------------------------------
  When printer is off
---------------------------------------------------------------------
2012-07-25 14:53:07: try...     MAC address: 00:22:58:07:BD:A5
2012-07-25 14:53:07:    connect()
2012-07-25 14:53:12:        ERROR: Host is down
2012-07-25 14:53:12:    bSocket.close
2012-07-25 14:53:12:    outStream.close
2012-07-25 14:53:12:        ERROR while closing: null
2012-07-25 14:53:12: endTry

Output from Samsung Galaxy XCover (2.3.6):
---------------------------------------------------------------------
  When printer is turned on:
---------------------------------------------------------------------
2012-07-25 15:00:48: try...     MAC address: 00:22:58:07:BD:A5
2012-07-25 15:00:48:    connect()
2012-07-25 15:00:48:    getOutputStream
2012-07-25 15:00:48:    getInputStream
2012-07-25 15:00:48:    writing: ! U1 SETLP ARI08ITA.CPF 0 20
  test123

2012-07-25 15:00:48:    flush
2012-07-25 15:00:49:    finish1
2012-07-25 15:00:49:    bSocket.close
2012-07-25 15:00:49:    outStream.close
2012-07-25 15:00:49:    inStream.close
2012-07-25 15:00:49: endTry

---------------------------------------------------------------------
  When printer is off
---------------------------------------------------------------------
2012-07-25 15:01:25: try...     MAC address: 00:22:58:07:BD:A5
2012-07-25 15:01:25:    connect()
2012-07-25 15:01:25:    getOutputStream
2012-07-25 15:01:25:    getInputStream
2012-07-25 15:01:25:    writing: ! U1 SETLP ARI08ITA.CPF 0 20
  test123

2012-07-25 15:01:25:    flush
2012-07-25 15:01:26:    finish1
2012-07-25 15:01:26:    bSocket.close
2012-07-25 15:01:26:    outStream.close
2012-07-25 15:01:26:    inStream.close
2012-07-25 15:01:26: endTry

0 个答案:

没有答案