У меня есть приложение android
для автомобиля rc через Wi-Fi.Я использовал esp8266 nodemcu
wifi модуль для этой цели. В моем приложении. есть 4 кнопки, которые расположены вперед, назад, вправо и влево. Я могу подключить этот модуль по Wi-Fi и выполнить некоторые основные операции для ex. двигаться вперед, двигаться назад, повернуть направо, повернуть налево. Вот коды, что делает это операции:Как справиться с двумя нажатиями кнопки в одно и то же время в android
@Override
public boolean onTouch(View v, MotionEvent event) {
String action;
if (v.getId() == moveForward.getId())
action = "/forward/";
else if (v.getId() == moveReverse.getId())
action = "/reverse/";
else if (v.getId() == moveRigth.getId())
action = "/right/";
else
action = "/left/";
String serverAddress = ipAddress.getText().toString() + ":" + "80" + action;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
HttpRequestTask requestTask = new HttpRequestTask(serverAddress);
requestTask.execute("1");
} else if (event.getAction() == MotionEvent.ACTION_UP) {
HttpRequestTask requestTask = new HttpRequestTask(serverAddress);
requestTask.execute("0");
}
return false;
}
private class HttpRequestTask extends AsyncTask<String, Void, String> {
private String serverAdress;
private String serverResponse = "";
public HttpRequestTask(String serverAdress) {
this.serverAdress = serverAdress;
}
@Override
protected String doInBackground(String... params) {
String val = params[0];
String url = "http://" + serverAdress + val;
Log.e("url", url);
try {
HttpClient client = new DefaultHttpClient();
HttpGet getRequest = new HttpGet();
getRequest.setURI(new URI(url));
HttpResponse response = client.execute(getRequest);
InputStream inputStream = null;
inputStream = response.getEntity().getContent();
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(inputStream));
serverResponse = bufferedReader.readLine();
inputStream.close();
} catch (URISyntaxException e) {
e.printStackTrace();
serverResponse = e.getMessage();
} catch (ClientProtocolException e) {
e.printStackTrace();
serverResponse = e.getMessage();
} catch (IOException e) {
e.printStackTrace();
serverResponse = e.getMessage();
}
return serverResponse;
}
Когда пользователь нажал вперед, можно также нажать правую кнопку или левую кнопку, и машина идет вперед и повернуть направо или двигаться обратным и повернуть налево, в то же время. Но я не мог понять, как я могу обработать две нажатые кнопки в одно и то же время в коде. Можете ли вы показать мне способ?
сделал ваша поддержка экрана Multi Touch? –
@OussemaAroua Я не знаю. Если это так, как с этим справиться? – user3059066
просто добавьте android: splitMotionEvents = "true" в вашем макете контента –