私は、ウェブサイトから場所の高度を取得する方法を作成しようとしています: https://maps.googleapis.com/maps/api/elevation/json?locations=0,0(ここで0,0は任意の座標で置き換えられます)。Android getInputStreamが正しく機能していない
ただし、URL接続からInputStream
を取得するときに問題が発生しました。
private double altitude(double lat, double longi) {
String elevation = "";
try {
URL alt = new URL("https://maps.googleapis.com/maps/api/elevation/json?locations="+lat+","+longi);
HttpURLConnection altFind = (HttpURLConnection) alt.openConnection();
altFind.setDoInput(true);
BufferedReader in = new BufferedReader(new InputStreamReader(altFind.getInputStream()));
String inputLine;
OUT:
while ((inputLine = in.readLine()) != null) {
if (inputLine.contains("elevation")) {
for (int i = 23; ; i++) {
if (inputLine.charAt(i) != ',') {
elevation = elevation + "" + inputLine.charAt(i);
} else {
break OUT;
}
}
}
}
return Double.parseDouble(elevation);
} catch (MalformedURLException e) {}
catch (IOException e) {}
return 0;
}
方法であると私はここからそれを呼び出すこと:
private TextView t;
private LocationManager locationManager;
private LocationListener listener;
double elev;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
Intent intent = getIntent();
String longlat = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
longlat = longlat.replaceAll(" ", "");
String [] longilati = longlat.split(",");
final double [] coord = new double[2];
coord[0] = Double.parseDouble(longilati[0]);
coord[1] = Double.parseDouble(longilati[1]);
t = (TextView) findViewById(R.id.textView);
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
elev = altitude(coord[0], coord[1]);
} else {
Toast.makeText(this, "No connection available", Toast.LENGTH_LONG).show();
}
私は無駄に同様の質問に、次の試してみました。
「正しく動作していません」と定義してください。間違いはありますか?それはクラッシュしますか?予期しないことは何ですか? – Knossos
'URL接続からInputStreamを取得する際に問題が発生しました。どの問題? – greenapps
あなたは 'NetworkOnMainThreadException'を持っています。そしてあなたのアプリはクラッシュしています。あなたはそのすべてに言わなければなりませんでした! – greenapps