Daten aus dem Internet laden funktioniert nicht

  • 5 Antworten
  • Letztes Antwortdatum
L

leost

Gast
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:
Code:
package de.leonard.rpicontrol.kamera;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.Toast;
import de.leonard.rpicontrol.R;

public class Steuern extends Activity implements OnClickListener {
    
    private Button speichern;
    private Handler handler;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.kamerasteuern);
        
        //Handler setzen
        handler = new Handler();
        
        //Momentan gesetzte Einstellungen über Server abrufen und in den Textfeldern eintragen
        
        
        //Achtung!!! Bei der Abfrage von Dezimalzahlen darauf achten, dass Punkt anstatt Komma verwendet wird
        //AlertDialog bei Verbindungsfehler anzeigen
        
        //Buttons verarbeiten
        speichern = (Button) findViewById(R.id.aenderungen_speichern);
        speichern.setOnClickListener(this);
    }
    
    public void onClick(View v) {
        if (v == speichern) {
            //Alle Daten aktualisieren, aber die Einstellugnen werden noch nicht gültig, sie werden aber abgespeichert
            //Neue Daten ermitteln
            //Aktivitätsstatus
            Switch aufnahme_s = (Switch) findViewById(R.id.aufnahme_aktiv);
            final String aufnahme;
            if (aufnahme_s.isChecked()) {
                aufnahme = "1";
            } else {
                aufnahme = "0";
            }
            //Bilder-bis-stopp (bbs)
            EditText bbs_et = (EditText) findViewById(R.id.bbs);
            final String bbs = bbs_et.getText().toString();
            //Startwert Aufnahme
            EditText start_et = (EditText) findViewById(R.id.startwert);
            final String start = start_et.getText().toString();
            //Stoppwert aufnahme
            EditText stopp_et = (EditText) findViewById(R.id.stoppwert);
            final String stopp = stopp_et.getText().toString();
            //Ausgabepfad
            EditText ordner_et = (EditText) findViewById(R.id.ausgabepfad);
            final String ordner = ordner_et.getText().toString();
            //Nummer der Kammera (Zählung ab 0)
            EditText kamera_et = (EditText) findViewById(R.id.kameranummer);
            final String kamera = kamera_et.getText().toString();
            //Abfrage
            Log.d("super","bis zur abfrage sind wir ja immerhin schon ein mal");
            new Thread(new Runnable() {
                public void run() {
                    handler.post(new Runnable() {
                        public void run() {
                            Toast.makeText(Steuern.this,"thread gestartet",Toast.LENGTH_LONG).show();
                        }
                    });
                    Log.d("super","und auch der neue thread für die abfrage wird erfolgreich gestartet");
                    //Die Abfrage in einem eigenen Thread erstellen
                    //Http-Client
                    HttpClient client = new DefaultHttpClient();
                    //HTTP-Get
                    String url = "http://192.168.2.122/video/?aufnahne="+aufnahme+"&bbs="+bbs+"start="+start+"&stopp="+stopp+"&ordner="+ordner+"&kamera="+kamera;
                    HttpGet get = new HttpGet(url);
                    Log.d("super","alle daten werden auch erfolgreich erstellt, client und get exisitieren");
                    //Request
                    try {
                        //Antwort in Variable
                        HttpResponse antwort = client.execute(get);
                        //Text der Antwort lesen
                        HttpEntity entity = antwort.getEntity();
                        //Inhalt des Textes lesen
                        InputStream web = entity.getContent();
                        //Antwort konvertieren
                        Log.d("super","auch der request funktioniert problemlos");
                        try {
                            BufferedReader reader = new BufferedReader(new InputStreamReader(web,"utf-8"));
                            //Erste Zeile der Antwort ausgeben
                            String code = reader.readLine();
                            Log.d("code",code);
                        } catch (Exception e) {
                            Log.d("fehler","lesen");
                            e.printStackTrace();
                        }
                    } catch (Exception e) {
                        Log.d("fehler","abfragen");
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}
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, Leonard
 
einen Thread muss man manuell starten :razz:

Code:
new Thread(...).start();
 
Zuletzt bearbeitet:
Vielen Dank das ist das Problem :biggrin:
Hatte ich erst auch hab den Thread dann aber geändert also zwei Threads zu einem zusammengefügt und das dann wohl übersehen
Edit: Wo ist der Danke Knopf
 
Zuletzt bearbeitet:
Find ich nicht
 

Anhänge

  • tmp_Screenshot_2014-01-06-16-30-06-231563039.jpg
    tmp_Screenshot_2014-01-06-16-30-06-231563039.jpg
    83,1 KB · Aufrufe: 208
bedanken darf man sich erst ab 10(?) Beiträgen, glaube ich. :)
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben Unten