Android编程中蓝牙数据传输问题

在两部手机之间传输数据,但是我的手机始终不接收另一部手机传出来的数据,代码如下:
public Handler mHandler = new MyHandler(this);
public static class MyHandler extends Handler{
public final WeakReference<Activity> mActivity;
public MyHandler(Activity activity) {
mActivity = new WeakReference<Activity>(activity);
}

// 处理从Service发来的消息的Handler
//public final Handler mHandler = new Handler() {
// @Override
public void handleMessage(Message msg) {
// com.bn.ball.Constant.turn=1;//这个地方当蓝牙连接后就可以有动作
switch (msg.what) {
case Constant.MSG_READ://这一句始终没有得到执行
com.bn.ball.Constant.turn=1;//这个地方没有后续动作
byte[] readBuf = (byte[]) msg.obj;
String readMessage = new String(readBuf, 0, msg.arg1);
//String readMessage = msg.obj.toString();
message=readMessage;
//com.bn.ball.Constant.turn=1;没有运行到这个地方
if(r.equals(message))
{
com.bn.ball.Constant.turn=1;
//小车往右转
}
if(l.equals(message))
{
com.bn.ball.Constant.turn=2;
//小车往左转
}
break;
}
在content中有以下定义:
//由Service中的Handler发送的消息类型
public static final int MSG_READ = 2;
public static final int MSG_DEVICE_NAME = 4;
// 从Service中的Handler发来的主键名
public static final String DEVICE_NAME = "device_name";
public static float turn;//运动的方向
求各位大神帮帮忙

// com.bn.ball.Constant.turn=1;//这个地方当蓝牙连接后就可以有动作
switch (msg.what) {
case Constant.MSG_READ://这一句始终没有得到执行

说明并没有走这个case
可以使用debug跟踪一下msg到底是什么,或者在switch (msg.what) { 后面使用System.out.println(msg.toString),在控制台里看一下收到的是什么消息。追问

我debug之后确实是直接跳过了case Content.MSG_READ,但是我不知道为什么会跳过,而且他下面还有一个case语句却没有跳过:
case Constant.MSG_DEVICE_NAME:
// 获取已连接的设备名称,并弹出提示信息
这个我就不能理解了,您能否解答下?

追答

case语句如果加了break就应该只走一个跳过其余所有的啊。
收到的message就是4吧?
如果想在收到message后执行某些操作,就把相应操作写到case Constant.MSG_DEVICE_NAME:后面。

如果想让收到的消息是Constant.MSG_READ,那么应该在发消息的地方进行修改,那么这段代码应该没问题。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网