leonard
- Forum-Beiträge: 10
06.01.2014, 14:38:38 via Website
06.01.2014 14:38:38 via Website
Hallo,
ich habe eine App geschrieben, die Einstellungsmöglichkeiten für eine von mir Programmierte Kamera an einem Raspberry Pi bietet. Dazu möchte ich die Daten an ein PHP-Script auf dem Pi schicken. Der Code der Klasse, die diese Aufgabe hat, ist:
PS: Das adresse steht für die wirkliche Adresse, die ich aber leider nicht posten darf
ich habe eine App geschrieben, die Einstellungsmöglichkeiten für eine von mir Programmierte Kamera an einem Raspberry Pi bietet. Dazu möchte ich die Daten an ein PHP-Script auf dem Pi schicken. Der Code der Klasse, die diese Aufgabe hat, ist:
1package de.leonard.rpicontrol.kamera;
2
3import java.io.BufferedReader;
4import java.io.InputStream;
5import java.io.InputStreamReader;
6
7import org.apache.http.HttpEntity;
8import org.apache.http.HttpResponse;
9import org.apache.http.client.HttpClient;
10import org.apache.http.client.methods.HttpGet;
11import org.apache.http.impl.client.DefaultHttpClient;
12
13import android.app.Activity;
14import android.os.Bundle;
15import android.os.Handler;
16import android.util.Log;
17import android.view.View;
18import android.view.View.OnClickListener;
19import android.widget.Button;
20import android.widget.EditText;
21import android.widget.Switch;
22import android.widget.Toast;
23import de.leonard.rpicontrol.R;
24
25public class Steuern extends Activity implements OnClickListener {
26
27 private Button speichern;
28 private Handler handler;
29
30 public void onCreate(Bundle savedInstanceState) {
31 super.onCreate(savedInstanceState);
32 setContentView(R.layout.kamerasteuern);
33
34 //Handler setzen
35 handler = new Handler();
36
37 //Momentan gesetzte Einstellungen über Server abrufen und in den Textfeldern eintragen
38
39
40 //Achtung!!! Bei der Abfrage von Dezimalzahlen darauf achten, dass Punkt anstatt Komma verwendet wird
41 //Logo selber entwerfen
42 //AlertDialog bei Verbindungsfehler anzeigen
43
44 //Buttons verarbeiten
45 speichern = (Button) findViewById(R.id.aenderungen_speichern);
46 speichern.setOnClickListener(this);
47 }
48
49 public void onClick(View v) {
50 if (v == speichern) {
51 //Alle Daten aktualisieren, aber die Einstellugnen werden noch nicht gültig, sie werden aber abgespeichert
52 //Neue Daten ermitteln
53 //Aktivitätsstatus
54 Switch aufnahme_s = (Switch) findViewById(R.id.aufnahme_aktiv);
55 final String aufnahme;
56 if (aufnahme_s.isChecked()) {
57 aufnahme = "1";
58 } else {
59 aufnahme = "0";
60 }
61 //Bilder-bis-stopp (bbs)
62 EditText bbs_et = (EditText) findViewById(R.id.bbs);
63 final String bbs = bbs_et.getText().toString();
64 //Startwert Aufnahme
65 EditText start_et = (EditText) findViewById(R.id.startwert);
66 final String start = start_et.getText().toString();
67 //Stoppwert aufnahme
68 EditText stopp_et = (EditText) findViewById(R.id.stoppwert);
69 final String stopp = stopp_et.getText().toString();
70 //Ausgabepfad
71 EditText ordner_et = (EditText) findViewById(R.id.ausgabepfad);
72 final String ordner = ordner_et.getText().toString();
73 //Nummer der Kammera (Zählung ab 0)
74 EditText kamera_et = (EditText) findViewById(R.id.kameranummer);
75 final String kamera = kamera_et.getText().toString();
76 //Abfrage
77 Log.d("super","bis zur abfrage sind wir ja immerhin schon ein mal");
78 new Thread(new Runnable() {
79 public void run() {
80 handler.post(new Runnable() {
81 public void run() {
82 Toast.makeText(Steuern.this,"thread gestartet",Toast.LENGTH_LONG).show();
83 }
84 });
85 Log.d("super","und auch der neue thread für die abfrage wird erfolgreich gestartet");
86 //Die Abfrage in einem eigenen Thread erstellen
87 //Http-Client
88 HttpClient client = new DefaultHttpClient();
89 //HTTP-Get
90 String url = "adresse";
91 HttpGet get = new HttpGet(url);
92 Log.d("super","alle daten werden auch erfolgreich erstellt, client und get exisitieren");
93 //Request
94 try {
95 //Antwort in Variable
96 HttpResponse antwort = client.execute(get);
97 //Text der Antwort lesen
98 HttpEntity entity = antwort.getEntity();
99 //Inhalt des Textes lesen
100 InputStream web = entity.getContent();
101 //Antwort konvertieren
102 Log.d("super","auch der request funktioniert problemlos");
103 try {
104 BufferedReader reader = new BufferedReader(new InputStreamReader(web,"utf-8"));
105 //Erste Zeile der Antwort ausgeben
106 String code = reader.readLine();
107 Log.d("code",code);
108 } catch (Exception e) {
109 Log.d("fehler","lesen");
110 e.printStackTrace();
111 }
112 } catch (Exception e) {
113 Log.d("fehler","abfragen");
114 e.printStackTrace();
115 }
116 }
117 });
118 }
119 }
120}
Ich habe mehrere Logeinträge eingebaut, um zu erkennen, wie weit der Code ausgeführt wird. Es wird aber nur der Logeintrag "bis zur abfrage sind wir ja immerhin schon ein mal" ausgegeben, d.h. der Thread für die Übermittlung der Daten wird nicht gesendet. Ansonsten werden keine Logeinträge wie Fehler ausgegeben, die App gibt bei Buttondruck nur den einen Logeintrag aus. Vielen Dank für Hilfe, Leonard2
3import java.io.BufferedReader;
4import java.io.InputStream;
5import java.io.InputStreamReader;
6
7import org.apache.http.HttpEntity;
8import org.apache.http.HttpResponse;
9import org.apache.http.client.HttpClient;
10import org.apache.http.client.methods.HttpGet;
11import org.apache.http.impl.client.DefaultHttpClient;
12
13import android.app.Activity;
14import android.os.Bundle;
15import android.os.Handler;
16import android.util.Log;
17import android.view.View;
18import android.view.View.OnClickListener;
19import android.widget.Button;
20import android.widget.EditText;
21import android.widget.Switch;
22import android.widget.Toast;
23import de.leonard.rpicontrol.R;
24
25public class Steuern extends Activity implements OnClickListener {
26
27 private Button speichern;
28 private Handler handler;
29
30 public void onCreate(Bundle savedInstanceState) {
31 super.onCreate(savedInstanceState);
32 setContentView(R.layout.kamerasteuern);
33
34 //Handler setzen
35 handler = new Handler();
36
37 //Momentan gesetzte Einstellungen über Server abrufen und in den Textfeldern eintragen
38
39
40 //Achtung!!! Bei der Abfrage von Dezimalzahlen darauf achten, dass Punkt anstatt Komma verwendet wird
41 //Logo selber entwerfen
42 //AlertDialog bei Verbindungsfehler anzeigen
43
44 //Buttons verarbeiten
45 speichern = (Button) findViewById(R.id.aenderungen_speichern);
46 speichern.setOnClickListener(this);
47 }
48
49 public void onClick(View v) {
50 if (v == speichern) {
51 //Alle Daten aktualisieren, aber die Einstellugnen werden noch nicht gültig, sie werden aber abgespeichert
52 //Neue Daten ermitteln
53 //Aktivitätsstatus
54 Switch aufnahme_s = (Switch) findViewById(R.id.aufnahme_aktiv);
55 final String aufnahme;
56 if (aufnahme_s.isChecked()) {
57 aufnahme = "1";
58 } else {
59 aufnahme = "0";
60 }
61 //Bilder-bis-stopp (bbs)
62 EditText bbs_et = (EditText) findViewById(R.id.bbs);
63 final String bbs = bbs_et.getText().toString();
64 //Startwert Aufnahme
65 EditText start_et = (EditText) findViewById(R.id.startwert);
66 final String start = start_et.getText().toString();
67 //Stoppwert aufnahme
68 EditText stopp_et = (EditText) findViewById(R.id.stoppwert);
69 final String stopp = stopp_et.getText().toString();
70 //Ausgabepfad
71 EditText ordner_et = (EditText) findViewById(R.id.ausgabepfad);
72 final String ordner = ordner_et.getText().toString();
73 //Nummer der Kammera (Zählung ab 0)
74 EditText kamera_et = (EditText) findViewById(R.id.kameranummer);
75 final String kamera = kamera_et.getText().toString();
76 //Abfrage
77 Log.d("super","bis zur abfrage sind wir ja immerhin schon ein mal");
78 new Thread(new Runnable() {
79 public void run() {
80 handler.post(new Runnable() {
81 public void run() {
82 Toast.makeText(Steuern.this,"thread gestartet",Toast.LENGTH_LONG).show();
83 }
84 });
85 Log.d("super","und auch der neue thread für die abfrage wird erfolgreich gestartet");
86 //Die Abfrage in einem eigenen Thread erstellen
87 //Http-Client
88 HttpClient client = new DefaultHttpClient();
89 //HTTP-Get
90 String url = "adresse";
91 HttpGet get = new HttpGet(url);
92 Log.d("super","alle daten werden auch erfolgreich erstellt, client und get exisitieren");
93 //Request
94 try {
95 //Antwort in Variable
96 HttpResponse antwort = client.execute(get);
97 //Text der Antwort lesen
98 HttpEntity entity = antwort.getEntity();
99 //Inhalt des Textes lesen
100 InputStream web = entity.getContent();
101 //Antwort konvertieren
102 Log.d("super","auch der request funktioniert problemlos");
103 try {
104 BufferedReader reader = new BufferedReader(new InputStreamReader(web,"utf-8"));
105 //Erste Zeile der Antwort ausgeben
106 String code = reader.readLine();
107 Log.d("code",code);
108 } catch (Exception e) {
109 Log.d("fehler","lesen");
110 e.printStackTrace();
111 }
112 } catch (Exception e) {
113 Log.d("fehler","abfragen");
114 e.printStackTrace();
115 }
116 }
117 });
118 }
119 }
120}
PS: Das adresse steht für die wirkliche Adresse, die ich aber leider nicht posten darf
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.