Android uygulaması geliştirme konusunda bir süredir paylaşım yapmadığımı fark ederek yeni bir uygulama eklemek istedim. Daha önceki paylaşımlarımdan bazıları:
bkz: Android uygulamasında hata mesajı göstermek
bkz: Android Studio'da Package Name Nerede Yazar?
bkz: Android uygulamasının paket adını (package name) değiştirmek
bkz: Enlem ve Boylam bilgilerini veren Android Uygulaması
bkz: Android Uygulamasında Spinner Kullanımı
bkz: Sanal Android Cihazlarda (AVD) Konumu Değiştirmek
Volley, Android ile native uygulamalar geliştirirken kullanabileceğiniz bir HTTP kütüphanesi. Volley github sayfasına da buradan ulaşabilirsiniz. Android ile bir uygulama geliştirirken Volley kütüphanesini kullanarak şunları yapabilirsiniz:
- İstekleri takvime bağlamak ve düzenli olarak istekler oluşturmak
- Birden çok isteği aynı anda yönetebilmek
- API'lerden kolaylıkla veri çekebilmek.
Android projenize Volley kütüphanesini entegere edebilmek için module seviyesindeki build.gradle dosyasına aşağıdaki dependency satırını eklemelisiniz:
implementation 'com.android.volley:volley:1.1.1'
implementation satırını kopyalayarak dependency'lerin sonuna eklediğinizde Android Studio'da sağ üstte Sync Now yazısı belirecektir. Bu düğmeye bastığınızda gerekli kurulumlar projenize gerçekleştirilmiş olur.
Volley kütüphanesinin ücretsiz bir JSON API'si ile uygulamasını yapalım. Bunun için canı sıkılan kişilere aktivite önerisi yapan ücretsiz bir servis olan boredapi'yi kullanacağız.
https://www.boredapi.com/api/activity adresine girdiğinizde ve sayfayı tarayıcıda her güncellediğinizde API size farklı bir aktivite önerisinde bulunacaktır. Örneğin;
{"activity":"Make bread from scratch","type":"cooking","participants":1,"price":0.2,"link":"","key":"4809815","accessibility":0.2}
Bu JSON dosyasında;
activity: Aktivite
type: Tür
participants: aktivite için gerekli kişi sayısı
price: Maliyeti
link: Bağlantı
key: anahtar
accessibility: Erişim düzeyi
Şimdi bu API'yi Android uygulamamıza Volley kütüphanesi ile entegre ederek basit bir uygulama geliştirelim.
Not: API url'si mutlaka https ile başlamalıdır, http ile başlayan url'ler hata verecektir.
Not 2 : Uygulamanın çalışabilmesi için AndroidManifest.xml dosyasından internete erişim izni verilmelidir.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
MainActivity.java dosyası:
package com.utku33.aktivite;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestQueue = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,
"https://www.boredapi.com/api/activity",
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i("Erişim başarılı", response + " ");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("API response hatası", error.getMessage());
}
});
requestQueue.add(jsonObjectRequest);
}
}
Logcat çıktısı:
I/Erişim başarılı: {"activity":"Conquer one of your fears","type":"recreational","participants":1,"price":0.1,"link":"","key":"8344539","accessibility":0.1}