Ошибка Android TCP при прошивке с андроида: onClick - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь подключить модуль ESP8266 к приложению Android.Сервер работает в модуле, а клиент работает в Apk.Сервер работает отлично (я тестировал приложения для PlayStore).Проблема в клиенте.Я нашел этот Git: https://github.com/omplanet/async-socket-android для управления соединением.Он прекрасно подключается к устройству, но когда я нажимаю кнопку и пытаюсь использовать функцию записи, я получаю сообщение об ошибке: «Не удалось выполнить метод для android: onClick».Это происходит, когда он использует BufferedWriter.flush ()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if(!hasPermissions(this, PERMISSIONS)){
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }
    tcpConection = new AsyncConnection(SERVER_IP,SERVERPORT,0,MainActivity.this);
    tcpConection.execute();

}
public void sendButton(View view){
    tcpConection.write("Hello torno!");
}

@Override
public void didReceiveData(String data) {

}

@Override
public void didDisconnect(Exception error) {

}

@Override
public void didConnect() {

}

Есть ли способ не использовать сброс, поэтому я могу использовать метод Write внутри кнопки?Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 16 мая 2019

Поскольку sendButton () выполняется в потоке пользовательского интерфейса, и в потоке пользовательского интерфейса запрещена работа в Интернете.Попробуйте обернуть "tcpConection.write (" Привет, Торно! ");"вызовите в другом потоке работающий объект, например:

        new Thread(new Runnable() {
            @Override
            public void run() {
                tcpConection.write("Hello torno!");
            }
        }).start();
...