Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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 当我的wi-fi和移动数据处于关闭状态时,是否可以仅通过GPS从lat long获取地址?_Android_Gps_Location_Location Client - Fatal编程技术网

Android 当我的wi-fi和移动数据处于关闭状态时,是否可以仅通过GPS从lat long获取地址?

Android 当我的wi-fi和移动数据处于关闭状态时,是否可以仅通过GPS从lat long获取地址?,android,gps,location,location-client,Android,Gps,Location,Location Client,我正在测试一款应用程序,该应用程序借助三星平板电脑上的GPS测量纬度和经度。我能够从GPS装置上获取当前的纬度、经度。现在我想使用经纬度从这些位置获取地址,而不使用互联网,即wi-fi和移动数据 我的做法如下: public String getAddress(Context ctx, double latitude, double longitude) { StringBuilder result = new StringBuilder(); try {

我正在测试一款应用程序,该应用程序借助三星平板电脑上的GPS测量纬度和经度。我能够从GPS装置上获取当前的纬度、经度。现在我想使用经纬度从这些位置获取地址,而不使用互联网,即wi-fi和移动数据

我的做法如下:

public  String getAddress(Context ctx, double latitude, double longitude) {
        StringBuilder result = new StringBuilder();
        try {
            Geocoder geocoder = new Geocoder(ctx, Locale.getDefault());
            List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
            if (addresses.size() > 0) {
                Address address = addresses.get(0);

                String locality=address.getLocality();
                String city=address.getCountryName();
                String region_code=address.getCountryCode();
                String zipcode=address.getPostalCode();
                double lat =address.getLatitude();
                double lon= address.getLongitude();

                result.append(locality+" ");
                result.append(city+" "+ region_code+" ");
                result.append(zipcode);

            }
        } catch (IOException e) {
            Log.e("tag", e.getMessage());
        }

        return result.toString();
    }

    private class GetCurrentAddress extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {
    // this lat and log we can get from current location but here we given hard coded
            double latitude=12.916523125961666;
            double longitude=77.61959824603072;

        String address= getAddress(context, latitude, longitude);
            return address;
        }

        @Override
        protected void onPostExecute(String resultString) {
            dialog.dismiss();
            result.setText(resultString);

        }
    }  
公共字符串getAddress(上下文ctx、双纬度、双经度){
StringBuilder结果=新建StringBuilder();
试一试{
Geocoder Geocoder=新的地理编码器(ctx,Locale.getDefault());
列表地址=geocoder.getFromLocation(纬度,经度,1);
如果(地址.size()>0){
地址=地址。获取(0);
String locality=address.getLocality();
字符串city=address.getCountryName();
字符串region_code=address.getCountryCode();
字符串zipcode=address.getPostalCode();
双lat=地址。getLatitude();
double lon=address.getLongitude();
result.append(locality+“”);
结果。追加(城市+“”+地区\代码+“”);
结果:追加(zipcode);
}
}捕获(IOE异常){
Log.e(“tag”,e.getMessage());
}
返回result.toString();
}
私有类GetCurrentAddress扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…URL){
//我们可以从当前位置获取lat和日志,但这里我们给出了硬编码
双纬度=12.916523125961666;
双经度=77.6195982463072;
字符串地址=getAddress(上下文、纬度、经度);
回信地址;
}
@凌驾
受保护的void onPostExecute(字符串resultString){
dialog.dismise();
result.setText(resultString);
}
}  
在mainfest中,我做以下输入:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


这是不可能的,因为地理编码器需要依赖互联网的外部服务

这是不可能的,因为地理编码器需要依赖于互联网的外部服务

是的,如果您只需要获得使用GPS的用户的lat/long,这是可能的

当考虑到地理编码的任何情况时,您将需要网络连接,以便访问谷歌API


希望它满足您的查询

是的,如果您只需要获得使用GPS的用户的lat/long,这是可能的

当考虑到地理编码的任何情况时,您将需要网络连接,以便访问谷歌API


希望它满足您的查询

没有互联网就不可能从Lat Lang获得地址,因为谷歌也进行地理编码

     Geocoder geocoder = new Geocoder(ctx, Locale.getDefault());
        List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
Geocoder-Geocoder=new-Geocoder(ctx,Locale.getDefault());
列表地址=geocoder.getFromLocation(纬度,经度,1);
这个getFromLocation()方法应该在asynTask和internet中运行,然后它会给出所需的结果

    <uses-permission android:name="android.permission.INTERNET" />


互联网许可也需要

没有互联网就不可能从Lat Lang获得地址,因为谷歌也进行地理编码

     Geocoder geocoder = new Geocoder(ctx, Locale.getDefault());
        List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
Geocoder-Geocoder=new-Geocoder(ctx,Locale.getDefault());
列表地址=geocoder.getFromLocation(纬度,经度,1);
这个getFromLocation()方法应该在asynTask和internet中运行,然后它会给出所需的结果

    <uses-permission android:name="android.permission.INTERNET" />


互联网许可也需要

不,这是不可能的,因为地理编码员需要后端(外部)服务。不,这是不可能的,因为地理编码员需要后端(外部)服务。我能知道投票否决我答案的原因吗?我能知道投票否决我答案的理由吗?