在两部手机之间传输数据,但是我的手机始终不接收另一部手机传出来的数据,代码如下:
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;//运动的方向
求各位大神帮帮忙
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,那么应该在发消息的地方进行修改,那么这段代码应该没问题。