首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android gps滞后

android gps滞后
EN

Stack Overflow用户
提问于 2012-09-21 23:08:42
回答 2查看 425关注 0票数 1

我得到了这个gps接收器方法,它将一些数据存储到数据库中。

代码语言:javascript
复制
// 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),我可以看到它,因为有一个天文台。

有人知道为什么吗?

EN

回答 2

Stack Overflow用户

发布于 2012-09-21 23:44:01

我想我得到了解决方案:

代码语言:javascript
复制
globalconstant.mlocManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, (long) update, 0,
                globalconstant.mlocListener);

在“更新”之后,它代表一个“0”。这就是我的发现:

代码语言:javascript
复制
requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)

这意味着最小距离是'0‘,所以这就是它如此’滞后‘的原因。但还是要感谢大家!

票数 1
EN

Stack Overflow用户

发布于 2012-09-21 23:23:54

GPS对处理器的要求非常高。你的手机速度变慢并不让我感到惊讶。这并不罕见。

事实上,如果你离开GPS足够长的时间,你的手机会变热,电池将很快耗尽!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12533239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档