我可以將數據從手機發送到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藍牙通信