USBケーブルを介してコンピューターに接続されているAndroidアプリケーションがあります。TCPServerクラスを使用してメッセージを送信し、リッスンします。例えば:
次のようなメッセージを送信すると、request:x
という応答が返されます:response:x:55
受け取った応答に応じて、アクティビティを変更する必要があります。現時点では、アクティビティとアクティビティクラスオブジェクトをTCPServerのコンストラクタに渡すことで、一時的に問題を解決しました。
public TCPServer(int portNum, Activity activity, IntroActivity ia) {
super();
port = portNum;
this.activity = activity;
this.ia = ia;
}
次に、応答を受け取った後:
void updateButton(final int color, final String txt) {
activity.runOnUiThread(new Runnable() {
public void run() {
ia.getConnectionButton().setBackgroundColor(color);
ia.getConnectionButton().setText(txt);
}
});
}
ご覧のとおり、これはまったく効果的ではありません。関連する変数を受信するたびに、何らかの方法でアクティビティに通知する必要があります。GlobalVariablesのクラスを使用し、listen()の後でこれらの静的変数を変更しましたが、アクティビティの通知に問題があります。