[android] bluetooth SPP received data

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는 안 달아놨다.

 

정보 얻은 곳 :