1

私はこの gps レシーバー メソッドを取得しました。これは、いくつかのデータをデータベースに保存します。

// GPS
    private void addGPSListener() {
        globalconstant.db.setVersion(1);
        globalconstant.db.setLocale(Locale.getDefault());
        globalconstant.db.setLockingEnabled(true);
    final String gps =

    "CREATE TABLE IF NOT EXISTS GPS_Values ("

            + "id INTEGER PRIMARY KEY AUTOINCREMENT, Latitude float(10, 8), Longitude float(10, 8),Accuracy INTEGER,Speed INTEGER,City TEXT,timestamp TIMESTAMP);";
    globalconstant.db.execSQL(gps);


    float f = Float.valueOf(globalconstant.gps_update_value.trim())
            .floatValue();
    Log.d("FESTIVALE :: ", "Frissítési idő: "
            + f);
    float update = f;


    globalconstant.mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    globalconstant.mlocListener = new MyLocationListener();
    globalconstant.mlocManager.requestLocationUpdates(
            LocationManager.GPS_PROVIDER, (long) update, 0,
            globalconstant.mlocListener);
}

public class MyLocationListener implements LocationListener {

    public void onLocationChanged(Location loc) {

        float szel = (float) loc.getLatitude();
        float hossz = (float) loc.getLongitude();
        int horiAcc = (int) (loc.getAccuracy());
        // int speed=(int) ((loc.getSpeed()*3600)/1000); //sebesség km/h-ban
        int speed = 0;

        if (loc.hasSpeed()) {
            speed = (int) ((loc.getSpeed() * 3600) / 1000); // sebesség
                                                            // km/h-ban
        } else {
            speed = 0;
        }

        String test = String.format("%.08f", szel);
        String test2 = String.format("%.08f", hossz);

        Geocoder geocoder = new Geocoder(main.this, Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocation(szel, hossz,
                    1);
            city = addresses.get(0).getLocality();
        } catch (IOException e) {
            e.printStackTrace();
        }

        ContentValues gps_values = new ContentValues();

        gps_values.put("Latitude", test);
        gps_values.put("Longitude", test2);
        gps_values.put("Accuracy", horiAcc);
        gps_values.put("Speed", speed);
        gps_values.put("City", city);

        SimpleDateFormat dateFormat = new SimpleDateFormat(
                "yyyy-MM-dd HH:mm:ss");
        Date date = new Date(System.currentTimeMillis());

        gps_values.put("timestamp", dateFormat.format(date));

        try {
            globalconstant.db.beginTransaction();
            globalconstant.db.insert("GPS_Values", null, gps_values);
            globalconstant.db.setTransactionSuccessful();
        } finally {
            globalconstant.db.endTransaction();
        }

        Log.d("FESTIVALE :: ", "Hely " + test + ", " + test2 + " , "
                + horiAcc + " , " + speed + " , " + city + "," + dateFormat.format(date));
        // String Text = "My current location is: " + "Latitude = "
        // + loc.getLatitude() + "\nLongitude = " + loc.getLongitude();

        // Toast.makeText(getApplicationContext(), "Hely" +test + "\n" +
        // test2 + "\n" + horiAcc + "\n" +speed + "\n" +city,
        // Toast.LENGTH_SHORT)
        // .show();

    }

    public void onProviderDisabled(String provider) {
        Toast.makeText(getApplicationContext(), "Gps Disabled",
                Toast.LENGTH_SHORT).show();
        DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                switch (which) {
                case DialogInterface.BUTTON_POSITIVE:
                    // show gps otions
                    Intent gpsOptionsIntent = new Intent(
                            android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    startActivity(gpsOptionsIntent);
                    break;

                case DialogInterface.BUTTON_NEGATIVE:
                    dialog.cancel();
                    break;
                }
            }
        };

        AlertDialog.Builder builder = new AlertDialog.Builder(main.this);
        builder.setMessage("A GPS nincs aktiválva!\nAktiválja most?")
                .setPositiveButton("Aktivál", dialogClickListener)
                .setNegativeButton("Nem", dialogClickListener).show();
    }

    public void onProviderEnabled(String provider) {
        Toast.makeText(getApplicationContext(), "Gps Enabled",
                Toast.LENGTH_SHORT).show();

    }

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

}// gps vége

平均更新時間は 1 秒です。しかし、私の電話は遅れています(galaxy s2)クロノメーターがあるので、私はそれを見ることができます.

誰かが理由について何か考えがありますか?

4

2 に答える 2

1

私は解決策を得たと思います:

globalconstant.mlocManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, (long) update, 0,
                globalconstant.mlocListener);

「更新」の後は「0」になります。そしてここに私が見つけたものがあります:

requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)

つまり、最小距離が「0」だったので、これが「ラグ」だった理由です。しかし、誰かに感謝します!

于 2012-09-21T15:44:00.800 に答える
0

GPS は非常にプロセッサを集中的に使用します。あなたの電話が遅くなっても不思議ではありません。これは珍しいことではありません。

実際、GPS を長時間オンにしておくと、携帯電話が熱くなり、バッテリーが急速に消耗します。

于 2012-09-21T15:23:53.687 に答える