我可以将数据从手机发送到arduino并获得手机响应,但只是在同一活动中,出于实际原因,我需要显示手机中接收的数据另一个活动,所以我尝试使用put extras选项传递接收到的数据,但是我得到一个错误并且应用程序崩溃,因为数据正在其他线程中接收,我认为如果接收的数据未完成之前可能会导致问题启动第二个活动,任何sugestions?安卓蓝牙通信与2活动
0
A
回答
0
好的我已经在很长一段时间之前完成了这个工作,我不记得我在蓝牙示例中做了哪些更改,所以只需按照以下步骤操作即可发送和接收来自任何课程的字符串。
,如果你使用的是Android SDK中的样品在蓝牙聊天例子,然后执行以下操作:
- 在bluetoothchat类: *变“私” BluetoothChatService mChatService成“公”。 然后在活动要从做派一个字符串这
BluetoothChat.mChatService.write(byteArray);
其中的ByteArray是因为它的声音字节数组,所以你需要AA串到字节数组转换器让一切变得简单:
public static byte[] convertStringToByteArray(String s)
{
byte[] byteArray = null;
if(s!=null)
{
if(s.length()>0)
{
try
{
byteArray = s.getBytes();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
return byteArray;
}
这是用于发送,并作为接收:
我所做的是让一个布尔进入和退出特定的类,所以例如当我进入一类,我会做这个布尔真实和转发我收到的字符串在Bluetoothchat类中到我想要的,例如像你会去蓝牙聊天类的这些代码行类:
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf, 0, msg.arg1);
mConversationArrayAdapter.add(mConnectedDeviceName+": " + readMessage);
其中readMessage是您收到的字符串消息,但你却会使其“readMessage”公共静态变量.....所以你会说如果我在活动例如第一个然后设置静态布尔值为真,你会做一个函数例如称为更新,它检查布尔是否为真然后获取readMessage字符串并做任何你想要的东西,比如设置文本,例如:
if(Bluetoothchat.one==true)
tv.settext(Bluetoothchat.readMessage);
然后你需要改变这个布尔值为false,当你退出当前活动,您是这样的应用程序不会崩溃,所以你可以做这样的事情:
@Override
public void onBackPressed() {
BluetoothChatone.one=false;
super.onBackPressed();
}
,如果你得到错误,告诉我,让我可以看到什么我已经错过了告诉你。
相关问题
- 1. 安卓蓝牙激活错误
- 2. 蓝牙通信
- 3. 安卓与obd2的蓝牙连接
- 4. 安卓连接蓝牙SPP
- 5. 安卓蓝牙问题
- 6. 蓝牙安卓到Windows 7
- 7. 蓝牙分享到安卓
- 8. 蓝牙java安卓info
- 9. 安卓:从蓝牙设备
- 10. 禁用安卓蓝牙
- 11. 汽车平视显示器和安卓蓝牙通信
- 12. Python通过蓝牙与Arduino通信
- 13. 通过蓝牙通信
- 14. 与Arduino + Android的蓝牙通信
- 15. 与外部设备的蓝牙通信
- 16. Android:蓝牙活动启动
- 17. 安卓蓝牙文件传输失败
- 18. 安卓蓝牙HDP血压计
- 19. 安卓蓝牙配对请求
- 20. 安卓:Wifi和蓝牙搜索一起
- 21. 安卓蓝牙聊天应用程序
- 22. 安卓蓝牙许可问题
- 23. 安卓到外部蓝牙轮询
- 24. 安卓蓝牙服务名称
- 25. 安卓蓝牙:丢弃数据包
- 26. 安卓蓝牙插槽连接错误
- 27. 蓝牙SPP(串行)glitchs(安卓)
- 28. 通过蓝牙解答来自PC的安卓手机通话
- 29. nxj中的蓝牙通信
- 30. Xamarin android蓝牙通信