Android studio Wetter daten abrufen und ausgeben

  • Antworten:10
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 6

21.06.2017, 17:36:36 via Website

hallo ich scripte gerade meine eigene app und habe mich bis part 8 von diesem tut vorangearbeitet

programmierenlernenhq.de/tutorial-android-daten-von-webseite-abfragen/

jedoch komme ich jetzt leider nicht weiter ich würde gerne von 1 stadt stündlich (wenns geht ) das wetter abrufen jedoch finde ich kein tut das mir das erklärt vielleicht könnt ihr mir helfen ?

lg

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

21.06.2017, 19:02:56 via Website

Was hast du denn bisher?

Wie bekommst du das Wetter angezeigt?

In einer WebView oder holst du die Daten per API und wertest diese aus?
Hast du ein Widget oder Nofitification das dir ddas Wetter anzeigt?
Denn wenn nein, warum dann stünlich aktualisieren?- Da reicht dann ein Button den der user drücken kann.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 6

21.06.2017, 19:49:24 via Website

Möchte keine stündliche aktualisierung
Sondern das der ganze tag das wetter angezeigt wird z.b.
Wetter in ... um7
Wetter in ... um 9
Usw.
Und möchte das abrufen und in meiner app ausgeben das sie wissen wie warm es wird und ob es regnet
Lg

Antworten
  • Forum-Beiträge: 6

21.06.2017, 19:50:33 via Website

Hab keine Widget oder Nofitification
und es sollte ca so aussehen nur wetter dateien statt aktienkurse

protected String[] doInBackground(String... strings) {

    if (strings.length == 0) { // Keine Eingangsparameter erhalten, daher Abbruch
        return null;
    }

    // Exakt so muss die Anfrage-URL an die YQL Platform gesendet werden:
    /*
    query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url
    %3D'http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3D
    BMW.DE%2CDAI.DE%2C%255EGDAXI%26f%3Dsnc4xl1d1t1c1p2ohgv%26e%3D.csv'%20and%20columns%3D'
    symbol%2Cname%2Ccurrency%2Cexchange%2Cprice%2Cdate%2Ctime%2Cchange%2Cpercent%2C
    open%2Chigh%2Clow%2Cvolume'&diagnostics=true";
    */

    // Wir konstruieren die Anfrage-URL für die YQL Platform
    final String URL_PARAMETER = "query.yahooapis.com/v1/public/yql";
    final String SELECTOR = "select%20*%20from%20csv%20where%20";
    final String DOWNLOAD_URL = "download.finance.yahoo.com/d/quotes.csv";
    final String DIAGNOSTICS = "'&diagnostics=true";

    String symbols = "BMW.DE,DAI.DE,^GDAXI";
    symbols = symbols.replace("^", "%255E");
    String parameters = "snc4xl1d1t1c1p2ohgv";
    String columns = "symbol,name,currency,exchange,price,date,time," +
         "change,percent,open,high,low,volume";

    String anfrageString = URL_PARAMETER;
    anfrageString += "?q=" + SELECTOR;
    anfrageString += "url='" + DOWNLOAD_URL;
    anfrageString += "?s=" + symbols;
    anfrageString += "%26f=" + parameters;
    anfrageString += "%26e=.csv'%20and%20columns='" + columns;
    anfrageString += DIAGNOSTICS;

    Log.v(LOG_TAG, "Zusammengesetzter Anfrage-String: " + anfrageString);

    // Die URL-Verbindung und der BufferedReader, werden im finally-Block geschlossen
    HttpURLConnection httpURLConnection = null;
    BufferedReader bufferedReader = null;

    // In diesen String speichern wir die Aktiendaten im XML-Format
    String aktiendatenXmlString = "";

    try {
    URL url = new URL(anfrageString);

    // Aufbau der Verbindung zur YQL Platform
    httpURLConnection = (HttpURLConnection) url.openConnection();

    InputStream inputStream = httpURLConnection.getInputStream();

    if (inputStream == null) { // Keinen Aktiendaten-Stream erhalten, daher Abbruch
        return null;
    }
    bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    String line;

    while ((line = bufferedReader.readLine()) != null) {
        aktiendatenXmlString += line + "\n";
    }
    if (aktiendatenXmlString.length() == 0) { // Keine Aktiendaten ausgelesen, Abbruch
        return null;
    }
    Log.v(LOG_TAG, "Aktiendaten XML-String: " + aktiendatenXmlString);
    publishProgress(1,1);

    } catch (IOException e) { // Beim Holen der Daten trat ein Fehler auf, daher Abbruch
        Log.e(LOG_TAG, "Error ", e);
        return null;
    } finally {
        if (httpURLConnection != null) {
            httpURLConnection.disconnect();
        }
        if (bufferedReader != null) {
            try {
                bufferedReader.close();
            } catch (final IOException e) {
                Log.e(LOG_TAG, "Error closing stream", e);
            }
        }
    }

    // Hier parsen wir später die XML Aktiendaten

    return null;
}

Edit by Mod Ludy: Code lesbarer gestaltet

— geändert am 23.06.2017, 18:24:52 durch Moderator

Antworten
  • Forum-Beiträge: 6

23.06.2017, 16:13:13 via Website

hat jemand eine idee wie ich das wetter einbauen kann?

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.158

23.06.2017, 18:28:08 via Website

Hallo Shapiro,

bitte nicht pushen.

Nur am Rande erwähnt, deine Url ist so nicht richtig und wird zur exception führen. Sie muss mit http oder https angeführt werden.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

Pascal P.

Antworten
  • Forum-Beiträge: 6

24.06.2017, 11:15:31 via Website

das ist schon klar :)
jedoch ist es neulingen nicht erlaubt urls zu posten und ohne http geht es :D

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.158

24.06.2017, 12:16:54 via Website

Um was gehts denn eigentlich? Du willst beim öffnen der App das aktuelle Wetter angezeigt bekommen?

Der Code ist für finance.yahoo.com und du willst den jetzt für Wetter nutzen?
Hier ist die Api fürs Wetter https://developer.yahoo.com/weather/

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

Shapiroswa00

Antworten
  • Forum-Beiträge: 2.901

24.06.2017, 13:38:56 via Website

Anm :

Aber dann auf die Lizenzbestimmungen achten, wenn du die App veröffentlichen möchtest.
Das kann schnell teuer werden
(max 2000 requests am tag mit ein und dem gleichen Key, danach kostet es )

— geändert am 24.06.2017, 21:20:29

Liebe Grüße - Stefan
[ App - Entwicklung ]

Shapiro

Antworten

Empfohlene Artikel