Hallo,
ist das wirklich notwendig? ich programmiere sehr viel in Java mit Eclipse und muss dann für das Programmieren mit Android eine andere Entwicklungsumgebung benutzen? Ich verstehe nicht, wie die Comunity das akzeptiert?
Gruß
Pfeiffy
Beiträge von Pfeiffy
-
-
Hallo,
ich bin nun schon seit Tagen daran meine Entwicklungsumgebung neu einzurichten. Ich arbeite mit Eclipse Oxygen und dem (neuesten) Android-Plugin. Ich habe auch schon versucht beides neu herunter zu laden, aber ich bekomme beim Starten einer Anwendung immer den Fehler: "Unable to build: the file dx.jar was not loaded from the SDK folder!" Die Datei dx.jar ist aber vorhanden. Dies geht bis zu einer Android-version 5.1.1. Wernn ich ein Projekt ab Android 6.0 starten möchte kommt die Meldung ich müsste das ADT-Plugin updaten, da die Version neuer ist als das Plugin, ichhabe aber die aktuellste Version.
Ich möchte nicht mit dem Studio arbeiten.Gruß
Pfeiffy -
Hallo,
ja, das tue ich ja - ich möchte, wie gesagt bei jeder Bewegung des Joysticks etwas senden, deswegen mache ich bei jeder Bewegung eine neue Instanz der AsyncTask-Klasse. hierbei wird dann aber nur bei er ersten Instanz die doInBackground aufgerufen: hier mein Code:Java
Alles anzeigenpackage com.client.cclient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import com.example.cclient.R; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.telephony.TelephonyManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.joystick.*; import com.joystick.JoyStick.JoyStickListener; import android.widget.TextView; public class MainActivity extends Activity { TextView labelXout; TextView labelYout; TextView buttonArming; TextView textPitch; TextView textYaw; TextView textRoll; TextView textThrottle; TextView textAux1; static int pitch = 1111; static int yaw = 2222; static int roll = 3333; static int throttle = 4444; static int aux1 = 5555; static int aux2 = 6666; private static final String TAG = MainActivity.class.getSimpleName(); private Button bottonHoleMotorDaten; private static String ip = "10.0.2.2"; // private static String ip = "localhost"; // private static String ip = "raspberrypi"; private static int port = 9090; String motordaten = ""; int progressChanged = 0; JoyStick joy1 = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Socket aufbauen labelXout = (TextView) findViewById(R.id.labelXout); labelYout = (TextView) findViewById(R.id.labelYout); bottonHoleMotorDaten = (Button) findViewById(R.id.getMotorDaten); textPitch = (TextView) findViewById(R.id.textPitch); textYaw = (TextView) findViewById(R.id.textYaw); textRoll = (TextView) findViewById(R.id.textRoll); textThrottle = (TextView) findViewById(R.id.textThrottle); textAux1 = (TextView) findViewById(R.id.textAux1); joy1 = (JoyStick) findViewById(R.id.joy1); joy1.setPadColor(Color.BLUE); joy1.setButtonColor(Color.RED); joy1.setxPut(1000); joy1.setyPut(0); joy1.enableStayPutX(true); joy1.setListener(new JoyStickListener() { @Override public void onMove(JoyStick joyStick, double angle, double power) { } // wen irgendetwas passiert public void onHappening(JoyStick joyStick, double angle, double power) { System.out.println("------onHappening-------"); labelXout.setText(joy1.getPosRelX() + ""); labelYout.setText(joy1.getPosRelY() + ""); roll = (int) joy1.getPosRelX(); throttle = (int) joy1.getPosRelY(); // bei jedem happening soll an den server gesendet // hier sollte er jedesmal die doInBackground aufrufen, tut er aber nicht new SendeDatenAsynch(ip, port, getMotorDaten()).execute(); } }); } private class SendeDatenAsynch extends AsyncTask<Void, Void, Void> { String dstAddress; int dstPort; String dstBefehl = ""; String response = ""; SendeDatenAsynch(String addr, int port, String befehl) { System.out.println(addr + " " + port + " " + befehl); dstAddress = addr; dstPort = port; dstBefehl = befehl; } @Override protected Void doInBackground(Void... arg0) { System.out.println("in doBackground: " + dstAddress + " " + port + " " + dstBefehl); Socket s = null; PrintWriter out; BufferedReader input; try { s = new Socket(ip, 9090); out = new PrintWriter(s.getOutputStream(), true); out.print(dstBefehl); input = new BufferedReader(new InputStreamReader(s.getInputStream())); response = input.readLine(); System.out.println(" response: " + response); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (s != null) { try { s.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } System.out.println("Ende dobackground"); return null; } } protected void motordatenVerarbeitung(String modaten) { System.out.println(" motordaten: " + modaten); pitch = Integer.parseInt(modaten.substring(6, 10)); yaw = Integer.parseInt(modaten.substring(10, 14)); roll = Integer.parseInt(modaten.substring(14, 18)); throttle = Integer.parseInt(modaten.substring(18, 22)); aux1 = Integer.parseInt(modaten.substring(22, 26)); aux2 = Integer.parseInt(modaten.substring(26, 30)); } public String ID() { TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); return telephonyManager.getDeviceId(); } String getMotorDaten() { return "$R<300" + String.format("%04d", pitch) + String.format("%04d", yaw) + String.format("%04d", roll) + String.format("%04d", throttle) + String.format("%04d", aux1) + String.format("%04d", aux2); } }
-
Hallo,
ja, hatte ich ja schon probiert, aber der asynctask für die Methode doInBackground nur einmal aus, auch wenn ich ihn neu initialisiere -
Hallo,
ich möchte einen Java-Server am PC über einen Android-Client ansprechen. Dies klappt eigentlich auch, jedoch habe ich Problem mit der Rückantwort - kann mir hier jemand sagen, wie bzw. wo ich diese am besten anbringe. Hier mein Code des Clients (auf Android). Das Problem ist, dass er beim Empfang der Antwort (Zeile 108) rummeckert, mit "network-Communication on MainThrad Exception" - klar, ich muss es in einen Thread verpacken - aber wie bekomme ich dann die den Response auf den Request, welcher ja dann in einem anderen Thread abgeschickt wird gehandelt, kann ich in einem Thread den Request abschicken und in einem anderen Thread dann die Antwort empfangen - das macht doch auch Probleme.
Schonmal Dank für die Hilfe!Java
Alles anzeigenpackage com.client.cclient; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import com.example.cclient.R; import com.helper.Helper; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.telephony.TelephonyManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.joystick.*; import com.joystick.JoyStick.JoyStickListener; import android.widget.TextView; public class MainActivity extends Activity { TextView labelXout; TextView labelYout; TextView buttonArming; TextView textPitch; TextView textYaw; TextView textRoll; TextView textThrottle; TextView textAux1; static int pitch = 1111; static int yaw = 2222; static int roll = 3333; static int throttle = 4444; static int aux1 = 5555; static int aux2 = 6666; private Button bottonHoleMotorDaten; private static String ip = "10.0.2.2"; // private static String ip = "localhost"; // private static String ip = "raspberrypi"; private static int port = 9090; private Socket socket; String motordaten = ""; int progressChanged = 0; JoyStick joy1 = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Socket aufbauen labelXout = (TextView) findViewById(R.id.labelXout); labelYout = (TextView) findViewById(R.id.labelYout); bottonHoleMotorDaten = (Button) findViewById(R.id.getMotorDaten); textPitch = (TextView) findViewById(R.id.textPitch); textYaw = (TextView) findViewById(R.id.textYaw); textRoll = (TextView) findViewById(R.id.textRoll); textThrottle = (TextView) findViewById(R.id.textThrottle); textAux1 = (TextView) findViewById(R.id.textAux1); new Thread(new ClientThread()).start(); BufferedReader input; joy1 = (JoyStick) findViewById(R.id.joy1); joy1.setPadColor(Color.BLUE); joy1.setButtonColor(Color.RED); joy1.setxPut(1000); joy1.setyPut(0); joy1.enableStayPutX(true); joy1.setListener(new JoyStickListener() { @Override public void onMove(JoyStick joyStick, double angle, double power) { } // wen irgendetwas passiert public void onHappening(JoyStick joyStick, double angle, double power) { System.out.println("------onHappening-------"); labelXout.setText(joy1.getPosRelX() + ""); labelYout.setText(joy1.getPosRelY() + ""); roll = (int) joy1.getPosRelX(); throttle = (int) joy1.getPosRelY(); try { PrintWriter out = new PrintWriter( new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); out.println(getMotorDaten()); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(" inputStream: " + input.readLine()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } protected void motordatenVerarbeitung(String modaten) { System.out.println(" motordaten: " + modaten); pitch = Integer.parseInt(modaten.substring(6, 10)); yaw = Integer.parseInt(modaten.substring(10, 14)); roll = Integer.parseInt(modaten.substring(14, 18)); throttle = Integer.parseInt(modaten.substring(18, 22)); aux1 = Integer.parseInt(modaten.substring(22, 26)); aux2 = Integer.parseInt(modaten.substring(26, 30)); } public String ID() { TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); return telephonyManager.getDeviceId(); } String getMotorDaten() { return "$R<300" + String.format("%04d", pitch) + String.format("%04d", yaw) + String.format("%04d", roll) + String.format("%04d", throttle) + String.format("%04d", aux1) + String.format("%04d", aux2); } class ClientThread implements Runnable { @Override public void run() { try { InetAddress serverAddr = InetAddress.getByName(ip); socket = new Socket(serverAddr, port); } catch (UnknownHostException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } } }