私はこのコードを持っていますが、RxJava 2に変更する方法はわかりません。このコードはGoogle APIからJSONを取得し、私の場所(緯度と経度)を取得するのに役立ちます。助けてください:AsyncTaskをRxJavaに変更する方法
class DownloadLocal extends AsyncTask<String,Void,String> {
@Override
protected String doInBackground(String... strings) {
StringBuilder stringBuilder = new StringBuilder();
try {
URL url = new URL(strings[0]);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.connect();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = bufferedReader.readLine()) != null){
stringBuilder.append(line+"\n");
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
String address = "";
try {
JSONObject jsonObject = new JSONObject(s);
JSONArray results = jsonObject.getJSONArray("results");
for (int i =0 ;i<results.length();i++){
JSONObject object = results.getJSONObject(i);
address = object.getString("formatted_address");
JSONObject geometry = object.getJSONObject("geometry");
JSONObject location = geometry.getJSONObject("location");
latitude = (double) location.get("lat");
longitude = (double) location.get("lng");
}
if(address == null){
Toast.makeText(getActivity(),"Can't get Address !!! Try Again ...", Toast.LENGTH_SHORT).show();
return;
}
else{
googleMap.clear();
String link = "https://maps.googleapis.com/maps/api/directions/json?origin=" + locationNow.getLatitude() + "," + locationNow.getLongitude()
+ "&destination=" + latitude+ "," + longitude +"&key=APIKEY";
LatLng latLng = new LatLng(locationNow.getLatitude(),locationNow.getLongitude());
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("Me");
googleMap.addMarker(markerOptions);
Location locationPoint = new Location("");
locationPoint.setLatitude(latitude);
locationPoint.setLongitude(longitude);
double distance = locationNow.distanceTo(locationPoint)/1000;
txtdistance.setText(String.format("%.3f",distance)+" km");
LatLng latLngPoint = new LatLng(latitude,longitude);
MarkerOptions markerOptionsPoint = new MarkerOptions();
markerOptionsPoint.position(latLngPoint);
markerOptionsPoint.title("Point");
googleMap.addMarker(markerOptionsPoint);
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLngPoint,14);
googleMap.moveCamera(cameraUpdate);
mapPresenter.DislayStreet(googleMap,link);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
私はこのコードを変更する方法がわかりません。私はRxJavaについて理解していません!チュートリアルがあれば教えてください。私は自分の仕事のためにRxJavaについて学びたいと思っています。
手動のHttpURLConnectionによってダウンロード文字列からJSONを解析する必要がないようにあなたが最初の改修とGSONについての学習を検討すべきです – EpicPandaForce