Rady a tipy pro vyvojRada pro začátečníka - uložení dat

Moderátoři: mArtinko5MB, mArtinko5MB

Odpovědět
lachim16
Nové Androidě
Příspěvky: 1
Registrován: pát 20. dub 2018 19:08:57

Rada pro začátečníka - uložení dat

Příspěvek od lachim16 »

Ahoj, snad se nebudete zlobit za tohle téma. Chtěl bych se naučit dělat android aplikace a nejlépe mi to jde praxí, než biflováním z knížek. Tak jsem se naučil sám programovat v Php. Android je ale úplně jiný, než jsem si ho představoval a trochu v něm tápu, tak bych chtěl poprosit o pár rad.

Udělal jsem si v Arduinu meteostanici, kde zasílám data přes příkazy GET na webové stránky a tam je ukládám do mysql. V php souboru generuji JSON a ten si dekóduji v android aplikaci - tohle mi vše funguje dle návodů na internetu.

Potřeboval bych poradit s vhodným typem uložení těchto dat - v budoucnu budu potřebovat uložit 48x sérii výpisů (data za celý den měřené po půl hodině) a každá série informací bude vypadat cca takto:

Kód: Vybrat vše

[{"City":"Valašské Meziříčí","Country":"cz","Id":1,"Time":"19:59","Day":"20.04.2018","Temperature":24.5,"Humidity":21.6,"Pressure":987.4,"Light":14,"Rain":"none"}]
Co jsem pochopil, tak se dají v Androidu použít (v offline verzi) tyto možnosti:
- Uložit data v souboru
- Cache files
- Shared preferences
- Android databases

Potřeboval bych mít k nim přístup jak v aplikaci (nastavení, grafy, přehledy atp.) tak i ve widgetu (základní info + nějaký jednoduchý graf pokud půjde vytvořit).

Který způsob uložení bude nejvhodnější?

.........................

Další dotaz bych měl, kde vypracovat uložení těchto dat?
V PHP bych to buď dal vše do jedné funkce a postupně by se to vypracovalo, nebo bych si vytvořil novou funkci a zavolal ji.
V android aplikaci mám class fetchData, která mi stahuje a dékoduje data z webu, ale co jsem zkoušel některou z možností (například Cache files nebo Shared preferences), tak mi v této class použít nešly :(

Kód: Vybrat vše

package arduino.weatherstation;


import android.os.AsyncTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;




public class fetchData extends AsyncTask<Void,Void,Void> {
    String data = "";
    private String dataParsed = "";
    private String singleParsed = "";


    @Override
    protected Void doInBackground(Void... voids) {

        try {
            URL url = new URL("https://weatherstation.michalmasarik.cz/output.php?meteo_pass=vt08LgA6kX");

            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line = "";
            while(line != null) {
                line = bufferedReader.readLine();
                data = data + line;
            }


            JSONArray JA = new JSONArray(data);
            for(int i = 0; i < JA.length(); i++) {
                JSONObject JO = (JSONObject) JA.get(i);
                singleParsed =  "Day:" + JO.get("Day") + "\n"+
                                "Time:" + JO.get("Time") + "\n"+
                                "Temperature:" + JO.get("Temperature") + "\n"+
                                "Humidity:" + JO.get("Humidity") + "\n"+
                                "Pressure:" + JO.get("Pressure") + "\n"+
                                "Light:" + JO.get("Light") + "\n"+
                                "Rain:" + JO.get("Rain") + "\n"+
                                "City:" + JO.get("City") + "\n"+
                                "Country:" + JO.get("Country") + "\n"+
                                "Id:" + JO.get("Id") + "\n";
                dataParsed = dataParsed + singleParsed;
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);

        MainActivity.data.setText(this.dataParsed);

    }
}

MainActivity.java :

Kód: Vybrat vše

package arduino.weatherstation;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {
    Button click;
    public static TextView data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        click = (Button) findViewById(R.id.button);
        data = (TextView) findViewById(R.id.fetcheddata);

        click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                fetchData process = new fetchData();
                process.execute();

            }
        });

    }
}
Za každou radu budu rád :palec:
Odpovědět

Zpět na „Rady a tipy pro vyvoj“