Professional Documents
Culture Documents
Original PDF
Original PDF
Original PDF
Kasım ADALAN
Elektronik ve Haberleşme Mühendisi
Freelance Software Developer
Kasım ADALAN 1
Eğitim İçeriği
• Restful API
• Volley Kütüphanesi
• Retrofit 2 Kütüphanesi
• Firebase Realtime Database
• Picasso kütüphanesi
Kasım ADALAN 2
RESTful Web Services
• REST : Representational State Transfer
• Web servise , Bilgileri basit bir formatta transfer etmek için kullanılır.
• XML ve JSON en çok kullanılan formattır.
• Web tabanlı olduğu için internet izni istenmektedir.
<uses-permission android:name="android.permission.INTERNET"/>
RESTful Çalışma Mimarisi
Cevap :
JSON veya XML formatındadır.
Web Service
Eğer gönderilen HTTP isteği
RESTful SERVER
ile beraber veri
(MySql Veri
Tabanı) gönderilmek istenirse
GET ve POST metotları
kullanılmalıdır.
HTTP ile
JSON veya XML JSON veya XML Kullanıcıya
Formatında Parse yapılır. Sunulur.
cevap alınır.
ALINAN CEVAP
PARSE EDİLMEYE GİDER
MySQL Veritabanı Yapısı
filmler
film_id int
film_ad varchar
film_yil int
film_resim varchar
kategori_id int
yonetmen_id int
kategoriler yonetmenler
kategori_id int yonetmen_id int
kategori_ad varchar yonetmen_ad varchar
Filmler
Yönetmenler
CREATE TABLE yonetmenler (
yonetmen_id int(11) primary key auto_increment,
yonetmen_ad varchar(100) not null
);
Kategoriler
CREATE TABLE kategoriler (
kategori_id int(11) primary key auto_increment,
kategori_ad varchar(100) not null
);
Örn:
PHP
• Android uygulama ile Veritabanın bulunduğu server arasındaki
bağlantıyı php ile yapabiliriz.
db_config.php
<?php
define('DB_USER', "u139539474_root");
define('DB_PASSWORD', ”123456");
define('DB_DATABASE', "u139539474_movie");
define('DB_SERVER', "mysql.hostinger.web.tr");
?>
tum_kisiler.php
Çalıştırmak istediğimiz
PHP kod
tum_kisiler_arama.php
Çalıştırmak
istediğimiz PHP
kod
delete_kisiler.php
Çalıştırmak
istediğimiz
PHP kod
insert_kisiler.php
Çalıştırmak
istediğimiz PHP kod
update_kisiler.php
Çalıştırmak istediğimiz
PHP kod
Client Desteği
• İki adet client bğlantı türü vardır.
• Apache HTTP Client
• DefaultHttpClient ve AndroidHttpClient kullanır.
• Güçlü ve esnektir.
• Andoid yazılım ekibi destek vermemektedir.
• Bu yüzden android studioda yer almamaktadır.
• Eclipse projelerinde kullanılabilir.
• Java’s HttpURLConnection
• Java.net sınıfını kullanır.
• Java.io sınıfı ile işlemler yapılır.Yani input-output stream kullanılır.
• Android yazılım ekibi destek vermektedir.
Apache HTTP Örneği
AndroidHttpClient client =
AndroidHttpClient .newInstance(“AndroidUserAgent”);
HttpGet istek= new HttpGet(URL);
httpResponse cevap= client.execute(istek);
String stringResponse =
EntityUtils.toString(cevap.getEntity);
HttpURLConnection Örneği
Eğer gönderilen HTTP isteği
RESTful SERVER
ile beraber veri
(MySql Veri
Tabanı) gönderilmek istenirse
GET ve POST metotları
kullanılmalıdır.
HTTP ile
JSON veya XML JSON veya XML Kullanıcıya
Formatında Parse yapılır. Sunulur.
cevap alınır.
ALINAN CEVAP
PARSE EDİLMEYE GİDER
Bu metot HTTP İsteğine
karşılık gelen cevabı
almaktadır. Bu cevap JSON
veya XML olabilir.
HTTP İsteğine karşılık gelen
cevabı görülmektedir. Bu
cevap JSON formatındadır.
Sonucun Türü
Kasım ADALAN 26
İlermeyi
tetikler.
Kasım ADALAN 27
İnceleme onPostExecute() metodunda adapter ihtiyacı
olduğu için doInBackground() adapter
• RecyclerView gibi döndürmelidir. Bundan dolayı AsyncTask
yapılara adapter parametrelerinde biri adapter’ın bulunduğu
yükleme işlemi sınıftan olmalıdır.
onPostExecute()
metodunda
gerçekleşir.
• Sebebi ;
doInBackgroud()
içerisinde işlem
yaparken yani
veri tabanından
veri çekildikten
sonra
RecyclerView’e
adapter eklenir.
Veri tabanı üzerindeki işlemler
İşlem türü JSON Parse yapılmalı mı ? HTTP istek
türü
Veri göndermeden EVET Klasik HTTP
sadece veri almak. isteği
Sadece veri göndermek. HAYIR GET veya POST
public Contacts() {
}
}
JSON
[ parantez bir dizi başlangıcı olduğunu gösterir
JSON PARSE ve bu diziye ulaşmak için
JSONArray gelenDizi = new JSONArray (“contacts”);
AsynchTask’in çalıştırılması
Yeni kayıt işlemi
Çalıştırmak istediğimiz PHP kod
insert_kisiler.php
PHP koduna
uygun http
metodu
update_kisiler.php
PHP
koduna
uygun
http
metodu
AsynchTask’in çalıştırılması
Volley
Volley
• http kütüphanesidir.
• Json desteklemektedir.
• Google tarafından geliştirilmiştir.Android işletim sistemi ile uyumlu
çalışır.
• Network bağlantısı oldukça hızlıdır.
• En güncel teknolojiye sahiptir.
• Kütüphane olduğu için dependencies aşağıdaki kod eklenerek
projemize dahil edilir.
implementation 'com.android.volley:volley:1.1.1'
<uses-permission android:name="android.permission.INTERNET"/>
Güncelleme
• http ile başlayan web servisler varsayılan olarak çalışmamaktadır.
• https ile başlayan web servislerde sorun yaşanmamaktadır.
• Bu sorunu çözmek için aşağıdaki ifadeyi manifest dosyasına eklemeniz gereklidir.
Volley Avantajları
• Otomatik olarak istek kuyruğu oluşturur.
• Aynı anda birden çok bağlantıya izin verir.
AsyncTask vs Volley MySQL Database
SERVER
doInBackground() HTTP Request
Arkada Çalışan Thread
HTTP Response
Ana Thread
Cach Miss
Response
Request
Ana Thread Cache Dispatcher
Response
Request
Response
HTTP Request
Network Thread
Volley Çalışma Yapısı HTTP Response
Volley İstekleri
• StringRequest : Döndürdüğü cevap String’dir . XML veya JSON
formatına kolayca parse edilir.
İstek oluşturulduktan sonra istek kuyruğuna koyularak , performanslı bir hale gelir.
JSONObjectRequest
İstek oluşturulduktan sonra istek kuyruğuna koyularak , performanslı bir hale gelir.
Tüm Verilerin Alınması
tum_kisiler.php
Çalıştırmak istediğimiz
PHP kod
Android Tarafı Kodlama
Çalıştırmak
istediğimiz PHP
kod
Android Tarafı Kodlama
Silme İşlemi
delete_kisiler.php
Çalıştırmak
istediğimiz
PHP kod
Android Tarafı Kodlama
Kayıt İşlemi
insert_kisiler.php
Çalıştırmak
istediğimiz PHP kod
Android Tarafı Kodlama
Güncelleme İşlemi
update_kisiler.php
Çalıştırmak istediğimiz
PHP kod
Android Tarafı Kodlama
ImageRequest
( Resim verilerini alıp bitmap formatında kullanabiliriz)
String url = "http://kasimadalan.pe.hu/resimler/thehatefuleight.jpg";
Volley.newRequestQueue(this).add(imgRequest);
Retrofit
Retrofit Kütüphanesinin kullanımı
Güncelleme
• http ile başlayan web servisler varsayılan olarak çalışmamaktadır.
• https ile başlayan web servislerde sorun yaşanmamaktadır.
• Bu sorunu çözmek için aşağıdaki ifadeyi manifest dosyasına eklemeniz gereklidir.
Retrofit Kütüphane kullanım aşaması
1. Gerekli kütüphaneler gradle ile yüklenecek,internet izni alınacak.
2. JSON formatında alınacak bilgi POJO yapısına dönüştürülecek ve
Java sınıfları oluşturulacak.
3. JSON verilerini almak için bir adet interface oluşturulacak.
4. Retrofit nesnesi alınacak.
5. Alınan retrofit nesnesi ile oluşturduğumuz interface bağlanacak.
6. Çalıştırmak istediğimiz interface’in içinde bulunan metod çağrılır ve
çalıştırılır.
1.Kütüphane yüklenmesi ve izin alınması
2. JSON bilgisini
POJO haline getirme
• http://www.jsonschema2p
ojo.org/
• POJO (Plain Old Java
Objects )
• Projemizin paket ismi
girilir.
• Oluşturmak istediğimiz ana
sınıf adı girilir.
3. Interface oluşturma
Yapmak istediğimiz
işlemin metodu yazıyoruz
ve muhtemel geri dönüş
değerini belirtiyoruz eğer
gerekiyorsa veride
gönderebiliyoruz.
4. Retrofit Nesnesi Alınır
Not : BASE_URL ana path olmalı yani bu yoldan sonra /kisiler/tum_kisiler.php geliyorsa bu yol interface
içerisinde belirtilmelidir.Ana domain burda yer alamalı geri kalan uzantı interface içerisinde yer almalıdır.
6. Interface metodunun çağrılması
Interface içerisindeki metodları her kullanmak için ilgili interface’in nesnesi alındı.
Get Metodu kullanımı (Sadece veri almak için)
GET Annotation’ı ile hangi url uzantısı kullanılacağı belirleniyor.
Response nesnesinin body metoduyla
FilmlerSample içerisine erişebiliyoruz
Post metodu kullanma (Veri gönderme)
Veri gönderip veri alma
Sonuç : http://kasimadalan.pe.hu/kisiler/delete_kisiler.php/kisi_id=2
Post metodu türevleri
Delete ( Silme )
Insert ( Kayıt )
Update ( Güncelleme )
Firebase Realtime Database
Firebase Realtime Database
http://square.github.io/picasso/
Picasso – Kullanabildiği kaynaklar.
• Harici depolama.
• Internet.
• Android resource (drawable vb.)
Picasso - Internet
• Resim kaynağı internettir ve resim yerini bir url ile belirtiriz.
• Sadece internet izni yeterlidir.
Picasso – Android Kaynağı
Picasso.get()
.load(dosya)
.into(imageViewResim);
Picasso – Image Trasformations
• Url den alınan resim üzerinde anlık değişimler yapabiliriz.
• resize(genişlik,yükselik) : resmin boyutlarında x ve y koordinatları kadar
oynama yapılır.
• rotate(derece) : Resmi verilen derece kadar döndürür.
Picasso – Placeholder ve Error FallBack
• Placeholder : Resim yüklenene kadar gösterilen varsayılan resim.
• Error : Yükleme sırasında hata oluştuğunda gösterilen resim.
Picasso.get()
.load(url)
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.into(imageViewResim);
Uygulama
Teşekkürler...