рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдореМрд╕рдо рдПрдкреАрдЖрдИ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╡реЙрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╣рд░ Android рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдХрдИ рдУрдкрди рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд░реЗрдЯреНрд░реЛрдлрд┐рдЯ, рдУрдХреНрд╣реЗрдЯрдк рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЙрд▓реА, рдЬрд┐рд╕реЗ рд╣рдо рдЖрдЬ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдПрдВрдЧреЗред

рддреЛ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреИрд╕рд╛ рд╣реИ?

рд╡реЙрд▓реА рдПрдХ HTTP рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдФрд░ рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
GitHub рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб ред

рдЗрд╕рд▓рд┐рдП, рд╡реЙрд▓реА рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕реЗ build.gradle (рдореЙрдбреНрдпреВрд▓: рдРрдк) рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

dependencies {
    ...
    implementation 'com.android.volley:volley:1.1.1'
}

рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдЬреЛрдбрд╝рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

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

рдЖрдЧреЗ рд╣рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдореИрдВ openweathermap.org/api рд╕реЗ рдореМрд╕рдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ ред

рдЗрд╕ API рдХрд╛ рдЙрджрд╛рд╣рд░рдг

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо API (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рд╕реЗ рд▓рд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдорд╛рд░реНрдХрдЕрдк рдмрдирд╛рдПрдВрдЧреЗред

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tempTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=": "
        android:textSize="20sp"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="50dp"
        android:layout_alignParentTop="true"
        android:layout_marginTop="50dp"
        />

    <TextView
        android:id="@+id/windTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="50dp"
        android:textSize="20sp"
        android:layout_marginTop="10dp"
        android:text=" :"
        />

</RelativeLayout>

рдЕрдЧрд▓рд╛, MainActivity рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдПрдВ:

private static final String testUrl = "https://samples.openweathermap.org/data/2.5/weather?id=2172797&appid=b6907d289e10d714a6e88b30761fae22"; //url,      JSON- 
RequestQueue mRequestQueue; //  
TextView tempTextView,windTextView; //     
double temp = 0,windSpeed = 0; //      JSON

рд╣рдо рдСрдирдХреНрд░рд┐рдПрдЯ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдлрд╝реАрд▓реНрдб рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ:

tempTextView = findViewById(R.id.tempTextView);
windTextView = findViewById(R.id.windTextView);

mRequestQueue = Volley.newRequestQueue(this);

рдЕрдм рд╣рдо рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдореБрдЦреНрдп рд╡рд┐рд╖рдп рдкрд░ рдЖрддреЗ рд╣реИрдВ - рд╡реЛрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдкреАрдЖрдИ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛:

1) рдореЗрдирдРрдХреНрдЯрд┐рд╡рд┐рдЯреА рдореЗрдВ рд╣рдо рдЧреЗрдЯрд╡реЗрдерд░ рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ:

private void getWeather(String url) {
        final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, //GET - API-   
                url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONObject weather = response.getJSONObject("main"),wind = response.getJSONObject("wind"); // JSON- main  wind (   - ,   -  (JSONArray).
                    temp = weather.getDouble("temp"); 
                    windSpeed = wind.getDouble("speed");
                    //      API
                    setValues(); //   setValues    
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() { //    
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });

        mRequestQueue.add(request); //    
}

рдЫрд╡рд┐
jsonformatter рдХрд╛ рдЙрдкрдпреЛрдЧ json рдХреЛ рдЙрд╕рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд╛рдо рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рд╣рдорд╛рд░реЗ API рдореЗрдВ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╡реЗ рдмрд╕ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗред

2) рдмрдирд╛рдПрдБ, рд╕реАрдзреЗ, setValues тАЛтАЛрд╡рд┐рдзрд┐:

private void setValues() {
        tempTextView.setText(": " + temp);
        windTextView.setText(" : " + windSpeed);
}

3) GetWeather () рдФрд░ setValues тАЛтАЛ() рддрд░реАрдХреЛрдВ рдХреЛ onCreate () рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВ:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getWeather(testUrl);
        setValues();
}

4) рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ ... рдХрд┐рдпрд╛!

рдЫрд╡рд┐

рдкреБрдирд╢реНрдЪ: рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

рд╡реЙрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди

рдПрдкреАрдЖрдИ

рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рд░ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП

JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдирд╛

P.SS: GitHub рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╛рдЗрд▓реЗрдВ

All Articles