私は少し珍しいことをしようとしています。私は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。何が間違っている、私はあなたが私を助けることができることを願って、私はこのすべてで非常に経験していない、それは私を狂って運転しています。