İki Butona Aynı Anda Basılı Olma Durumu
29.04.2016 - 12:34
Arkadaşlar android ile kontrol edilebilen bir wifi car yapıyorum.4 tane butonum var; ileri , geri , sağ ve sol. İleri butonuna bastığım andan butondan elimi çekene kadar yani basılı tuttuğum sürece arabanın ileri gitmesi gerekiyor mantıken.Bunu handle etmek için şöyle bir kod yazdım ve sorunsuz bir şekilde çalışıyor.
@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;
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;
}
Fakat şöyle bir senaryo da var. İleri veya geri butonlarına basılı olduğu sırada sağ ve sol a dönme butonlarına da basılı olabilir ve bu durumda ileri sağa veya ileri sola gidebilmesi lazım.Fakat aynı anda iki butonun basılı olması durumunu nasıl handle edeceğim bir yol bulamadım.Herhangi bir öneriniz var mı?
301
Görüntülenme
0 Beğeni