2016-11-05 71 views
0

所以我試圖做一些事情有點不尋常,它只是爲了好玩。我有一個使用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。它有什麼問題,我希望你能幫助我,我並不是很有經驗,這讓我發瘋。

回答

0

我不能看到,如果這是你的代碼中情況,但如果您呼叫平臺的具體方法,應該在特定於平臺項目的子項目來完成。

有關如何做到這一點,你可以看看這個頁的詳細信息: https://github.com/libgdx/libgdx/wiki/Interfacing-with-platform-specific-code

因此,如果您LibGDX遊戲中有一個函數說,「setBluetooth」每個平臺都會有自己的執行所述方法。當您爲Android或iOS編譯時,這會有所不同。

如果你試圖調用平臺特定的代碼在你的核心遊戲可能會無法正常工作。

希望它能幫助,也許你已經做了,在這種情況下,你可以忽略我的意見。

相關問題