に私はそれから現在のlatitude
とlongitude
ともaddress
を取得するためにJSON
を使用するアプリケーションを構築しようとしていますが、できるだけ早く私はbutton
をクリックすると私が取得しますBasicNetwork.performRequest:予期しない応答コード400アンドロイド
E /ボレー:私のログにエラー[5807] BasicNetwork.performRequest:予期しない応答コード400 https://maps.googleapis.com/maps/api/geocode/json?latlng=0.00.0
コードのために以下に与えられる:
Gps3Activity.java
public class Gps3Activity extends AppCompatActivity {
private Button display;
private LocationManager locationManager;
private LocationListener locationListener;
private RequestQueue requestQueue;
private double lat;
private double lng;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gps3);
display = (Button) findViewById(R.id.displayL);
requestQueue = Volley.newRequestQueue(this);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new myLocationlistener();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
display.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("Latitude", String.valueOf(lat));
Log.e("Longitude", String.valueOf(lng));
JsonObjectRequest request = new JsonObjectRequest("http://maps.googleapis.com/maps/api/geocode/json?latlng="+ lat+","+lng +"&sensor=true", new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String address = response.getJSONArray("results").getJSONObject(0).getString("formatted_address");
//textViewCity.setText(address);
Toast.makeText(getApplicationContext(), "City : " + address, Toast.LENGTH_LONG);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(request);
}
});
}
private class myLocationlistener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
lat = location.getLatitude();
lng = location.getLongitude();
}
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
}
}
07-30 01:18:33.287 9750-9750/com.example.shaloin.gps2 W/System.err: org.json.JSONException: Index 0 out of range [0..0)
07-30 01:18:33.288 9750-9750/com.example.shaloin.gps2 W/System.err: at org.json.JSONArray.get(JSONArray.java:293)
07-30 01:18:33.288 9750-9750/com.example.shaloin.gps2 W/System.err: at org.json.JSONArray.getJSONObject(JSONArray.java:521)
07-30 01:18:33.288 9750-9750/com.example.shaloin.gps2 W/System.err: at com.example.shaloin.gps2.Gps3Activity$1$1.onResponse(Gps3Activity.java:63)
07-30 01:18:33.288 9750-9750/com.example.shaloin.gps2 W/System.err: at com.example.shaloin.gps2.Gps3Activity$1$1.onResponse(Gps3Activity.java:58)
logcatはまた、私はなぜ私が0.0
としてlatitude
とlongitude
の値を取得していますへと把握することはできませんよ。
誰でも手助けできますか?
まず:
JsonObjectRequest()
のフォーマットは完全に間違っているように思わありがとう:)
私はこのアプリを作っている間、https://stackoverflow.com/questions/20238197/get-current-location-using-json/20238474#20238474に従っています。あなたがapiキーについて述べたように、投稿はそれを持っていませんでした。 –
あなたが3歳のansに従って行くことを望むなら、あなたのところまで選択してください。ユーザーが「暗黙的」であると思った場合、またはこれらのAPIの所有者であるこれらの[google docs](https://developers.google.com/maps/documentation/geocoding/intro)を信じている場合 – ZeekHuge
あなたが昏睡状態に陥ったと言いましたように、私はそれを修正しました。ログには次のようなものが表示されます: 'W/System.err:org.json.JSONException:インデックス0が範囲外です[0..0)' –