mHandler = new Handler(new Callback() { @Override public boolean handleMessage(final Message msg) { Log.i("MainActivity.java | handleMessage", "|" + msg.what + "|"); runOnUiThread(new Runnable() { @Override public void run() { try { // TODO 화면에 표시 byte[] readBuf = (byte[]) msg.obj; _text1.setText("|" + bytes2String(readBuf, msg.arg1) + "|"); } catch (Exception e) { e.printStackTrace(); } } }); return false; } });
블루투스 장비에서 받은 신호를 화면에 표시한다.
private String bytes2String(byte[] b, int count) { StringBuilder ret = new StringBuilder(); for (int i = 0; i < count; i++) { String myInt = Integer.toHexString((int) (b[i] & 0xFF)); ret.append("0x" + myInt); } return ret.toString(); }
출처 : http://stackoverflow.com/questions/9270965/bluetooth-spp-receive-some-the-package-frame-can-lost-or
16진수로 변환한다.
0x410x540x20x50x00x0 이런 식으로 변환된다.
풀어서 쓰자면 0x41, 0x54, 0x2, 0x5, 0x0, 0x0 이 된다.
10진수는 65, 84, 2, 5, 0, 0
mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer).sendToTarget();
블루투스 신호를 받는 부분에서 handler 로 보내준다.
예제 소스 : https://github.com/susemi99/TestBluetoothSPP
간단히 만드느라 BroadcastReceiver는 안 달아놨다.
정보 얻은 곳 :
- http://goldenking.tistory.com/10
- http://hardroid.net/profiles/blogs/bluetooth
- android bluetooth chat sample code