所以我試圖做一些事情有點不尋常,它只是爲了好玩。我有一個使用libgdx創建的遊戲,它包含一個可以拍攝的船。我想要做的是使用一些外部按鈕來移動它。按鈕將信號發送給arduino,然後將它們發送到HC-05藍牙模塊。然而,我很懷疑事情的android方面。我做的基本上是以下幾點:連接到Arduino的Android應用程序,它使用libgdx(使用藍牙)
因爲我在使用libgdx我創建了一個名爲BluetoothDude的接口,它有三個方法setBluetooth()(它將爲特定平臺設置藍牙),String whatIsTheMessage()會告訴你發送給手機的內容)和布爾值isActive(),以瞭解當然藍牙是否處於活動狀態。
的MainGame將收到BluetoothDude使得特定類,如船舶有權訪問消息,並能夠對其作出反應。
然後我做了針對Android的特定實現藍牙,在setBluetooth()我遵循這個指南非常密切:https://developer.android.com/guide/topics/connectivity/bluetooth.html
我敢肯定它是正確連接,因爲當它創建的插座就可以打印「與HC-05的連接成功」(只有在創建套接字的方法(我稱之爲BTConnect()返回true)時纔會打印)。
這個問題似乎是在讀取數據時,我正在使用的代碼是
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
private Handler handler;
public ConnectedThread(BluetoothSocket socket,Handler mHandler) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
handler = mHandler;
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) {
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = mmInStream.read(buffer);
handler.obtainMessage(MESSAGE_READ, bytes, -1, buffer).sendToTarget();
} catch (IOException e) {
break;
}
}
}
我setBluetooth使這個類的一個對象像這樣
if (device != null) {
if (BTconnect()) {
isActive = true;
connectedThread = new ConnectedThread(socket,handler);
System.out.println("connection success with" + device.getName() + " message: " + message);
}
我有很多懷疑 首先這裏的目標是什麼,mHandler是在BluetoothDude中創建的,那麼目標是什麼?第二,我很確定線程甚至沒有運行,因爲如果我把一行像System.out.println( 「運行」)內運行()它並沒有顯示出像萬億英寸的行執行應用程序時的logcat。它有什麼問題,我希望你能幫助我,我並不是很有經驗,這讓我發瘋。