2016-11-05 10 views
0

私は少し珍しいことをしようとしています。私はlibgdxを使って作ったゲームを持っています。それは撃つことができる船で構成されています。私がしたいのは、いくつかの外部プッシュボタンを使って移動することです。プッシュボタンは信号をarduinoに送り、arduinoはarduinoをHC-05ブルートゥースモジュールに送ります。しかし、私は事のアンドロイド側については非常に疑問です。libgdx(Bluetoothを使用)を使用するアンドロイドアプリにarduinoを接続する

私はlibgdxに取り組んでいます。私はBluetoothDudeというインターフェースを作成しました.3つのメソッドsetBluetooth()(特定のプラットフォーム向けにBluetoothを設定します)、String whatIsTheMessage()電話に送信された内容を通知します)、ブール値isActive()を使用して、ブルートゥースが有効かどうかを知ることができます。

MainGameはBluetoothDudeを受信します。そのため、Shipのような特定のクラスでは、メッセージにアクセスして反応することができます。 https://developer.android.com/guide/topics/connectivity/bluetooth.html

を、それはソケットを作成するとき、それは印刷することができますので、私は、それが適切に接続されたと確信している:

は、その後、私は非常に密接にこのガイドに続く)(setBluetoothで、アンドロイド用のBluetoothの特定の実装を行いました"HC-05との接続成功"(私はBTConnect()と呼ばれるソケットを作成するメソッドがtrueを返す場合にのみ出力されます)。

問題は、データの読み取りであると思われる、私が使用しているコードは、私は多くを持って、この

if (device != null) { 
     if (BTconnect()) { 
      isActive = true; 
      connectedThread = new ConnectedThread(socket,handler); 
      System.out.println("connection success with" + device.getName() + " message: " + message); 

     } 

ようsetBluetoothにこのクラスのオブジェクトを作っ

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; 
      } 
     } 
    } 

です疑問がある 最初にここのターゲットは、mHandlerはBluetoothDudeで作成されたので、ターゲットは?、私はかなりスレッドが実行されていないと確信しているので、私はSystem.out.println "run")run()の中で私は1兆回ものような行を表示しませんアプリケーションが実行されるときのlogcat。何が間違っている、私はあなたが私を助けることができることを願って、私はこのすべてで非常に経験していない、それは私を狂って運転しています。

答えて

0

これはあなたのコードからはわかりませんが、プラットフォーム固有のメソッドを呼び出す場合は、プラットフォーム固有のプロジェクトサブプロジェクトで実行する必要があります。あなたはこのページをチェックアウトすることができますことを実行する方法の詳細については

https://github.com/libgdx/libgdx/wiki/Interfacing-with-platform-specific-code

だからあなたLibGDXゲームが機能を持っている場合は、各プラットフォームは、前記方法の独自の実装を持っています、「setBluetooth」と言います。 AndroidやiOS向けにコンパイルすると、それは異なります。

コアゲームでプラットフォーム固有のコードを呼び出そうとすると、おそらく動作しません。

希望している場合は、私のコメントを無視することができます。

関連する問題