无法获取当前GPS定位坐标(Unable to get current GPS Location c

2019-10-17 16:02发布

我一直在努力让我的当前位置的GPS坐标,但我的应用始终锁定在了GPS卫星。

在通知区域的图标GPS只是不断闪烁。

虽然我尝试使用谷歌地图Android版(预安装的应用程序),并且事情是能够以约LOCKON 60秒! 在两种情况下我的3G数据连接被打开和工作。

更新 :我使用的是Android 2.3.3(HTC Desire S的(工厂安装的操作系统,没有更新适用))logcat的输出是在这里 。 现在,这是无需设置LocationUpdates()的最小时间和更新之间最小距离为0,0。

更新2:我前面的代码是在这里 (引擎收录链接)。

更新#3:现在,我显示吐司后得到一个强制关闭。“可用”。在onStatusChanged()

更新#4:Finally..I得到它的工作。

-
那么,是不是像在谷歌地图的应用程序使用用于锁定到GPS信号的一些专有代码? 我一直在使用各种版本的我的代码尝试。 尝试使用标准(一个或多个),但从来没有得到他们与GPS合作。 对我来说,通过GPS获取精确(〜50英尺精度)的位置坐标是必须的。

我的代码:

public class LocationDemoActivity extends Activity implements LocationListener {
    LocationManager locationManager;
    StringBuilder builder;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000l, 50.0f, this);
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        locationManager.removeUpdates(this);
        locationManager = null;
        Intent i = new Intent(
                android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivity(i);

    }

    @Override
    public void onLocationChanged(Location location) {
//      builder = new StringBuilder();
        double lati=location.getLatitude();
        double longi=location.getLongitude();
        double alti=location.getAltitude();
        float acc=location.getAccuracy();
        float speed=location.getSpeed();
        long time=location.getTime();

        System.out.println(lati);
        System.out.println(longi);
        System.out.println(alti);
        System.out.println(acc);
        System.out.println(speed);
        System.out.println(time);

        /*Toast.makeText(this, "Lati: " + lati,Toast.LENGTH_SHORT).show();
        Toast.makeText(this, "Long: " + longi,Toast.LENGTH_SHORT).show();
        Toast.makeText(this, "Alti: " + alti,Toast.LENGTH_SHORT).show();
        Toast.makeText(this, "Acc.: " + acc,Toast.LENGTH_SHORT).show();
        Toast.makeText(this, "Speed: " + speed,Toast.LENGTH_SHORT).show();
        Toast.makeText(this, "Time: " + time,Toast.LENGTH_SHORT).show();*/


        builder.append("Longitide: " + location.getLongitude());
        builder.append('\n');
        builder.append("Latitude: " + location.getLatitude());
        builder.append('\n');
        builder.append("Altitude: " + location.getAltitude());
        builder.append('\n');
        builder.append("Accuracy: " + location.getAccuracy());
        builder.append('\n');
        builder.append("TimeStamp:" + location.getTime());
        builder.append('\n');
        System.out.println(builder.toString());

        Toast.makeText(this, builder.toString(), Toast.LENGTH_LONG).show();

    }

    @Override
    public void onProviderDisabled(String provider) {
        System.out.println("Provider Disabled:");
        Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivity(intent);
    }

    @Override
    public void onProviderEnabled(String provider) {
        System.out.println("Provider Enabled:");
        Toast.makeText(this, "GPS is now enabled...", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        switch (status) {
        case LocationProvider.OUT_OF_SERVICE:
            System.out.println("Status Changed: Out of Service");
            Toast.makeText(this, "Status Changed: Out of Service",
                    Toast.LENGTH_SHORT).show();
            break;
        case LocationProvider.TEMPORARILY_UNAVAILABLE:
            System.out.println("Status Changed: Temporarily Unavailable");
            Toast.makeText(this, "Status Changed: Temporarily Unavailable",
                    Toast.LENGTH_SHORT).show();
            break;
        case LocationProvider.AVAILABLE:
            System.out.println("Status Changed: Available");
            Toast.makeText(this, "Status Changed: Available",
                    Toast.LENGTH_SHORT).show();
            break;
        }
    }

}

请做答案,因为它是对我非常紧迫和任何帮助是极大的明显:)

谢谢..

Answer 1:

它接缝很明显,你不会得到任何位置更新,因为你已经设置了minDistance才会到50米或164.042英尺您似乎准确混淆这一点。

minDistance参数是位置更新之间的最小距离。 所以,你必须移动至少50米获得位置更新。

另外,还要确保你有天空的清晰视图,以便有GPS信号。

更多的文档中

http://developer.android.com/reference/android/location/LocationManager.html



Answer 2:

我问一个相关的问题在这里 。

对我来说,看起来就像你在手机上的GPS是不是能看到SAT的。 你需要让你的办公室/家庭的我们在露天。 就我而言,我搬到NetworkProvider因为GPS是太笨拙。

另外请注意,你给的距离和时间的参数是不是字面,其best guess是,API使。 所以不要从API回调响应时间/距离计数。



Answer 3:

你有这些明显的权限?

ACCESS_COARSE_LOCATION

ACCESS_FINE_LOCATION

ACCESS_LOCATION_EXTRA_COMMANDS

ACCESS_MOCK_LOCATION

CONTROL_LOCATION_UPDATES

INTERNET


文章来源: Unable to get current GPS Location co-ordinates