0

私はデバイスの場所を取得する必要があるアプリを構築していました。使用したコードはこちらです

Double latitude = 0.0;
    Double longitude = 0.0;
    String TAG = "HomeActivity";
    Location gpsLoc = null, networkLoc = null, finallLoc = null;
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                    ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                            ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_NETWORK_STATE) != PackageManager.PERMISSION_GRANTED){
                Toast.makeText(this,"Not Granted",Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(this,"Granted",Toast.LENGTH_LONG).show();
            }
            try{
                gpsLoc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                networkLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            }catch(Exception e){
                e.printStackTrace();
            }
            if(gpsLoc!= null){
                finallLoc = gpsLoc;
                latitude = finallLoc.getLatitude();
                longitude = finallLoc.getLongitude();
            }else if(networkLoc!=null){
                finallLoc = networkLoc;
                latitude = finallLoc.getLatitude();
                longitude = finallLoc.getLongitude();
            }else{
                latitude = 0.0;
                longitude=0.0;
            }
            try{
                Geocoder geocoder = new Geocoder(getApplicationContext(),Locale.getDefault());
                List<Address> addresses = geocoder.getFromLocation(latitude,longitude,1);
                if(addresses!=null && addresses.size()>0){
                    String country = addresses.get(0).getCountryName();
                    String address = addresses.get(0).getAddressLine(0);
                    String city = addresses.get(0).getLocality();

                }

            }catch (Exception e){
                e.printStackTrace();
            }

このアプリをデプロイする準備がほぼ整ったので、このコードを使用して位置を正しく取得できるかどうかを確認したいと思いましたか?そうでない場合は、どのような改善を行う必要がありますか? コードは正常に動作します。不足しているものがあるかどうか、または特定の条件下でエラーにつながる可能性があるかどうかを知りたいだけです。

4

2 に答える 2

0

上記のコードを使用して、gps/network から最後に認識された場所を取得できます。ただし、現在の場所を取得できるかどうかわからないか、場所を取得できない場合があります。

場所が必須の場合は、ユーザーに gps をオンにして現在の場所を取得するように強制する必要があります。これは、LocationManager.requestLocationUpdates

リンクをたどってくださいhttps://stackoverflow.com/a/10917500/3886504

于 2019-05-06T19:47:06.113 に答える