以脱机模式检索数据

时间:2013-10-09 19:10:33

标签: android parsing

我在互联网上有一些针对每个特定经度和纬度的数据。如果用户输入特定的纬度和经度,则从Web下载数据,然后将其用于进一步的计算。我想保存这些数据,以便下次用户输入相同的纬度和经度时,它会绕过网络连接并继续使用现有数据。

我的输入类:

public class OpTilt extends Activity implements OnClickListener {
EditText latitude, longitude;
Button go;
String data1, data2, link, link1;
double dat1, dat2;
TextView gps;
SharedPreferences dataurl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.optilt);
    initialize();
    go.setOnClickListener(this);

}

private void initialize() {
    // TODO Auto-generated method stub
    go = (Button) findViewById(R.id.loaddata);
    latitude = (EditText) findViewById(R.id.lat);
    longitude = (EditText) findViewById(R.id.lon);
    dataurl = getSharedPreferences("url", 0);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    data1 = longitude.getText().toString();
    data2 = latitude.getText().toString();
    dat1 = Double.parseDouble(data1);
    dat2 = Double.parseDouble(data2);
    link = ("http://www.otilt.com/api.php?lat=" + dat2 + "&lon=" + dat1);
    SharedPreferences.Editor editor = dataurl.edit();
    editor.putString("key", link);
    editor.commit();
    Intent i = new Intent(OpTilt.this, DataRetrieve.class);
    startActivity(i);

}
}

我的解析课程:

public class DataRetrieve extends Activity {

HttpClient client;
String URL, re, element;
JSONObject json, getjson;
int i, j, statusCode;
HttpGet httpget;
HttpResponse response;
HttpEntity entity;
InputStream is;
BufferedReader reader;
StringBuilder sb, sb1;
WakeLock w;
SharedPreferences getinput, passjson;
ProgressDialog pd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    w = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "tag");
    super.onCreate(savedInstanceState);
    w.acquire();
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.dataretrieve);
    // Bundle gotBasket = getIntent().getExtras();
    // URL = gotBasket.getString("key");
    getinput = getSharedPreferences("url", 0);
    URL = getinput.getString("key", null);

    Read r = new Read();
    r.execute();

}

public class Read extends AsyncTask<String, Integer, String> {
    @Override
    protected void onPreExecute() {
        pd = new ProgressDialog(DataRetrieve.this);
        pd.setTitle("Processing...");
        pd.setMessage("Please wait.");
        pd.setCancelable(false);
        pd.setIndeterminate(true);
        pd.show();
    }

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub
        re = null;
        is = null;
        json = null;
        try {
            client = new DefaultHttpClient();
            httpget = new HttpGet(URL);
            response = client.execute(httpget);
            entity = response.getEntity();
            is = entity.getContent();
            statusCode = response.getStatusLine().getStatusCode();

        } catch (Exception e) {
            statusCode = -1;
            Log.e("log_tag", "Erro http " + e.toString());
        }
        if (statusCode == 200) {

            try {
            reader = new BufferedReader(new InputStreamReader(is,
                        "UTF-8"), 8);
                sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                re = sb.toString();

            } catch (Exception e) {
                Log.e("log_tag", "Erro conversão " + e.toString());
            }

        }
        return re;

    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        pd.dismiss();
        try {

            json = new JSONObject(result);
            getjson = json.getJSONObject("Solar");
            String H[] = new String[getjson.length()];
            for (i = 0, j = 1; i < getjson.length(); i++, j++) {
                H[i] = getjson.getString("" + j);

            }

            Bundle bundle = new Bundle();
            bundle.putStringArray("key1", H);
            Intent f = new Intent(DataRetrieve.this, Calculator.class);
            f.putExtras(bundle);
            startActivity(f);

        }

        catch (JSONException e) {
            Log.e("log_tag", "Erro dados " + e.toString());
        }

    }
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    w.release();
    finish();
}

}

那么,我怎样才能实现目标呢?

0 个答案:

没有答案