Android-сервис httpclient и sqlite - PullRequest
       23

Android-сервис httpclient и sqlite

0 голосов
/ 20 октября 2011

Я новичок в Android, и я пытаюсь поставить HttpClient и писать в таблицу Sqlite в службу, и я просто не могу сделать это правильно.Если кто-то может указать на мою ошибку, я был бы признателен.

Код проверяет местоположение GPS, затем начинает проверять, ходили вы или нет, и если да, то будет сохранять вашу скорость ходьбы или бега, а также ваш лат GPSи lng и время GPS

Это код:

    class WalkingData{
        public double lng=0.0;
        public double lat=0.0;
        public long gpsTime=0;
        public double Walking=0.0;

        public WalkingData (double ilng, double ilat, long iGPSTime, double iWalking){
           lng=ilng;
           lat=ilat;
           gpsTime=iGPSTime;
           Walking=iWalking;

        }

    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        LocationManager locationManager;
        String context = Context.LOCATION_SERVICE;
        locationManager = (LocationManager) getSystemService(context);

        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        String provider = locationManager.getBestProvider(criteria, true);

        Location location = locationManager.getLastKnownLocation(provider);
        updateWithNewLocation(location);

        locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);
    }

    private final LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            updateWithNewLocation(location);
        }

        public void onProviderDisabled(String provider) {
            updateWithNewLocation(null);
        }

        public void onProviderEnabled(String provider) {
        }

        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    };

    private void updateWithNewLocation(Location location) {
        String latLongString;
        TextView myLocationText;
        myLocationText = (TextView) findViewById(R.id.myLocationText);

        //String addressString = "No address found";

        if (location != null) {
            double lat = location.getLatitude();
            double lng = location.getLongitude();
            latLongString = "Lat:" + lat + "\nLong:" + lng;

            MyWalk =(double)location.getSpeed();
            MyGPSTime = location.getTime();
            long currentTimestamp = System.currentTimeMillis();
            myLocationText.setText("Your Current Walk: " + (MyWalk) +"\nYour Current Position is: " + latLongString + "\n" + "Time is: " + currentTimestamp+"\n\n");
            trakingWalking (MyWalk, lat, lng, MyGPSTime);


        }

         else {
            latLongString = "No location found";
        }
    }




public void trakingWalking (double Walking, double lat, double lng, long GPSTime) {

    final double ChangedWalking = Walking;
    final double ChangedLat = lat;
    final double ChangedLng = lng;
    final long ChangedGPSTime = GPSTime;
    Timer updateTimer = new Timer("pedometer");
    updateTimer.scheduleAtFixedRate(new TimerTask() {
      public void run() {
       checkWalking(ChangedWalking, ChangedLat, ChangedLng, ChangedGPSTime);
       }
    }, 0, WalkingSampleRate);
    }

private void checkWalking( double ChangedWalking1, double ChangedLat1, double ChangedLng1, long ChangedGPSTime1) {


    final double ChangedWalking2 = ChangedWalking1;
    final double ChangedLat2 = ChangedLat1;
    final double ChangedLng2 = ChangedLng1;
    final long ChangedGPSTime2 = ChangedGPSTime1;

     WalkingHandler.post(new Runnable() {
     public void run() {

         if(WalkingState==0){
             if (ChangedWalking2 >= standing) {
             }
         } //state = 0

         else if(WalkingState==1){       

             if (ChangedWalking2 >= standing) {

                 }

        }

          }


  });

}


public class SimpleService extends Service {

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(this,"Service created ...", Toast.LENGTH_LONG).show();

        public void Sticket(){
            Log.v("log_tag", "???????????????????????????????? Sticket()");
            elhgsdatabase db = new elhgsdatabase(this);
            db.open();
            z = db.getAllTitles(); //narrow down to 20 last seconds

           if (z.moveToFirst())
            {
                do {          
                SticketFunction(); 
               } while (z.moveToNext());
            }

           db.close();
        }

        public void  SticketFunction(){

            //HttpClient
            HttpClient WalkingWalking = new DefaultHttpClient();
            //Response handler
            ResponseHandler<String> res = new BasicResponseHandler();

            HttpPost postMethod = new HttpPost("www.some-site.com");

            try {
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
                //Walking
                nameValuePairs.add(new BasicNameValuePair("Walking", z.getString(1)+""));
                //Longitude
                nameValuePairs.add(new BasicNameValuePair("lat", z.getString(2)+""));
                //Latitude
                nameValuePairs.add(new BasicNameValuePair("lon", z.getString(3)+""));
                //GPS Time
                nameValuePairs.add(new BasicNameValuePair("GPSTime", z.getString(4)+""));
                //Encode and set entity
                postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
                //Execute 
                String response = WalkingWalking.execute(postMethod, res).replaceAll("<(.|\n)*?>","");
                if (response.equals("Done")){

                    //Log.v("log_tag", "!!!!!!!!!!!!!!!!!! SticketFunction got a DONE!");

                }
                else Log.v("log_tag", "!!!!!!!?????????? SticketFunction Bad or no response: ");

            } catch (ClientProtocolException e) {  
                // TODO Auto-generated catch block 
                //Log.v("log_tag", "???????????????????? SticketFunction Client Exception");
            } catch (IOException e) {  
                // TODO Auto-generated catch block
                //Log.v("log_tag", "???????????????????? IO Exception");
            } 
        }

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service destroyed ...", Toast.LENGTH_LONG).show();
    }
}

/*
 * 
 */

public void StoreWalking(){

long idy;
        elhgsdatabase db = new elhgsdatabase(this);
        db.open();
        while (!WalkingLog.isEmpty())
        {
            WalkingData tmp = WalkingLog.poll();// .pollFirst();



            //TODO: insert log_cat markups here


            idy = db.insertWalkingInfo( tmp.Walking, tmp.lat, tmp.lng, tmp.gpsTime);


    }

        db.close();
}

}
...