Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Wifi时查找当前位置有效,但使用GPS时无法查找当前位置_Android_Geolocation - Fatal编程技术网

Android 使用Wifi时查找当前位置有效,但使用GPS时无法查找当前位置

Android 使用Wifi时查找当前位置有效,但使用GPS时无法查找当前位置,android,geolocation,Android,Geolocation,我开发了一个应用程序,可以使用GPS查找用户的位置 在这方面没有错误。它正确地使用Wifi查找位置,但在GPS模式下它不会返回任何值。我在清单中添加了所需的权限,GPS已打开 有人能告诉我如何使用Gps定位吗 我已在此处包含我的代码: package c.g.a.loation; public class UseGps extends Activity { @Override public void onCreate(Bundle savedInstanceState) {

我开发了一个应用程序,可以使用GPS查找用户的位置

在这方面没有错误。它正确地使用Wifi查找位置,但在GPS模式下它不会返回任何值。我在清单中添加了所需的权限,GPS已打开

有人能告诉我如何使用Gps定位吗

我已在此处包含我的代码:

package c.g.a.loation;

public class UseGps extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener mlocListener = new MyLocationListener();
        mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
                mlocListener);
    }

    /* Class My Location Listener */
    public class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location loc) {
            Geocoder gp = new Geocoder(getBaseContext());
            try {
                ArrayList<Address> address = (ArrayList<Address>) gp
                        .getFromLocation(loc.getLatitude(), loc.getLongitude(),
                                1);
                if (address != null && address.size() > 0) {
                    Toast.makeText(getBaseContext(), address.get(0).toString(),
                            Toast.LENGTH_LONG).show();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onProviderDisabled(String provider) {}

        @Override
        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}

        @Override
        public void onProviderEnabled(String arg0) {}
    }

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

    public void onStatusChanged(String provider, int status, Bundle extras) {}
}
c.g.a.loation包;
公共类使用GPS扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
LocationManager mlocManager=(LocationManager)getSystemService(Context.LOCATION\u服务);
LocationListener mlocListener=新建MyLocationListener();
mlocManager.RequestLocationUpdate(LocationManager.GPS_提供程序,0,0,
mlocListener);
}
/*类我的位置侦听器*/
公共类MyLocationListener实现LocationListener{
@凌驾
位置更改后的公共无效(位置loc){
地理编码器gp=新地理编码器(getBaseContext());
试一试{
ArrayList地址=(ArrayList)gp
.getFromLocation(loc.getLatitude(),loc.getLatitude(),
1);
if(address!=null&&address.size()>0){
Toast.makeText(getBaseContext(),address.get(0).toString(),
Toast.LENGTH_LONG).show();
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){}
@凌驾
public void onStatusChanged(字符串arg0,int arg1,Bundle arg2){}
@凌驾
公共无效onProviderEnabled(字符串arg0){}
}
公共无效onProviderEnabled(字符串提供程序){
//Toast.makeText(
//getApplicationContext(),“启用Gps”,Toast.LENGTH_SHORT.show();
}
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){}
}
我有两个想法

  • 您的代码未检查以确保GPS提供商已启用。我看到注释掉的代码在启用任何提供程序时发送Toast,但您可能希望在onCreate()中检查GPS提供程序是否已启用

  • 你要等多久才能得到GPS定位?GPS_提供商有时需要一段时间才能获得GPS定位。我在两分钟前见过TTFF(首次修复时间)值。更糟糕的是,我在不同版本的Android和不同的设备上看到了巨大的TTFF差异

  • 我建议您也尝试从另一个应用程序获取GPS定位,看看需要多长时间。我通常会启动谷歌地图或GPS状态(从市场上免费提供),以了解获得GPS定位所需的时间。如果您尝试谷歌地图,请确保它得到的是GPS定位,而不仅仅是来自网络提供商的位置(屏幕顶部的GPS图标应停止闪烁)