Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 11. VER İ LER İ SAKLAMA Android sistemlerinde hazırlanacak projelerde verileri saklamak için android sisteminin.

Benzer bir sunumlar


... konulu sunumlar: "MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 11. VER İ LER İ SAKLAMA Android sistemlerinde hazırlanacak projelerde verileri saklamak için android sisteminin."— Sunum transkripti:

1 MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 11

2 VER İ LER İ SAKLAMA Android sistemlerinde hazırlanacak projelerde verileri saklamak için android sisteminin sa ğ ladı ğ ı imkânlar kullanılabilir. Örnek olarak e ğ er birden fazla dil desteklenecekse dil dosyaları kullanılabilir. Uygulamada yapılacak verilerin uygulama her çalıştı ğ ında daha önceki yapılan de ğ işikliklerden etkilenecek şekilde saklanması için farklı yapılar kullanılabilir.

3 VER İ LER İ SAKLAMA Uygulamada yapılacak verilerin uygulama her çalıştı ğ ında daha önceki yapılan de ğ işikliklerden etkilenecek şekilde saklanması için farklı yapılar kullanılabilir. Uygulamada kullanıcının belirledi ğ i de ğ işiklere göre çalışması istendi ğ inde, kullanıcının belirledi ğ i parametrelere göre işlemlerine devam etmesi için veya oyun, test, e ğ itim gibi uygulamalarda kullanıcının puanlarını saklama gibi durumlarda bu tür verileri kullanıcının cihazında saklayabiliriz.

4 VER İ LER İ SAKLAMA Bu yöntemler; SQL Lite veritabanı, disk dosyaları ve Shared Preferences dir. Cihaz içerisinde saklanmak istemeyen veya faklı cihazlardan da ulaşılmak istenen veriler için a ğ ba ğ lantısı bulunan sistemlerde uzaktaki sistemlerde de saklanabilir.

5 SHARED PREFERENCES Android projelerinde android ile birlikte gelen preferences yapısı kullanılır. Bu yapıda veriler anahtar de ğ erlerle birlikte bir XML dosyası içerisinde kullanılır. Kullanıcının verilerini anahtar-de ğ er ikilisi olacak şekilde saklanacak yapılarda rahatlıkla kullanılabilir. Bu yapılar android projesinde belirli bir konumda saklanır. Büyük miktarda olmayan çeşitli ayar verilerini saklamak amacıyla rahatlıkla kullanılabilecek bir yapıdır.

6 SHARED PREFERENCES De ğ erleri aktarmak için SharedPreferences türünden bir de ğ işken oluşturmak gerekmektedir. Oluşturulan bu de ğ işkene getSharedPreferences(, ) metodu ile oluşturaca ğ ımız yapının içine ulaşıyoruz. SharedPreferences sakdos = getSharedPreferences("Sayilar", MODE_PRIVATE);

7 SHARED PREFERENCES Bu metoda gönderilen birinci parametre verilerin kaydedilece ğ i dosyanın adını, ikinci parametre ulaşım metodunu belirleyecektir. Bu ulaşım metodu dört şekilde belirlenebilir. Bu metodlar şu şekilde belirlenebilir: MODE_PRIVATE: Varsayılan metottur. Bu metotta oluşturulacak dosyaya sadece bu proje tarafından ulaşım izni verilecektir. MODE_WORLD_READABLE: Bu metot ile varolan projenin dışında di ğ er yazılımlarında bu dosyaya yazma amacıyla ulaşabilmesine izin verecektir.

8 SHARED PREFERENCES Bu metoda gönderilen birinci parametre verilerin kaydedilece ğ i dosyanın adını, ikinci parametre ulaşım metodunu belirleyecektir. Bu ulaşım metodu dört şekilde belirlenebilir. Bu metodlar şu şekilde belirlenebilir: MODE_WORLD_WRITEABLE: Bu metot ile varolan projenin dışında di ğ er yazılımlarında bu dosyaya okuma amacıyla ulaşabilmesine izin verecektir. MODE_MULTI_PROCESS: Farklı process türünde dosyaya yazma ve okuma amaçlı ulaşmak amacıyla kullanılan ulaşım metodur.

9 SHARED PREFERENCES Dosyaya erişim metodu belirlenerek dosyaya erişildikten sonra dosyaya yazma işlemini gerçekleştirmek için SharedPreferences’in Editor yapısı kullanırak yazma işlemini gerçekleştirecek bir de ğ işken oluşturulur. SharedPreferences.Editor yazici = sakdos.edit();

10 SHARED PREFERENCES Oluşturulan de ğ işkenin putString metodu ile anahtar-de ğ er atamaları gerçekleştirilir. String veri türünün dışında putBoolean, putFloat, putInt, PutLong veri türlerinde de ğ er atamaları yapılabilir. yazici.putString("SonDeger", sonDeger);

11 SHARED PREFERENCES Atamaların geçerli olması için SharedPreferences de ğ işkeninin commit metodu verilir ve de ğ işkenler dosyaya yazılır. yazici.commit();

12 SHARED PREFERENCES Yazılan de ğ erleri okumak amacıyla SharedPreferences de ğ işkeninin uygun veri türüne göre get metodu getString, getBoolean, getFloat, getInt, getLong metotlarına anahtar girilerek de ğ er elde edilir. sakdos.getString("SonDeger",null);

13 HESAPLAMA UYGULAMASı

14 import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.RadioButton;

15 HESAPLAMA UYGULAMASı public class MainActivity extends Activity { private void SonDegeriKaydet(String sonDeger){ SharedPreferences sakdos = getSharedPreferences("Sayilar", MODE_PRIVATE); SharedPreferences.Editor yazici = sakdos.edit(); yazici.putString("SonDeger", sonDeger); yazici.commit(); }

16 HESAPLAMA UYGULAMASı private String SonDegeriAl(){ SharedPreferences sakdos = getSharedPreferences("Sayilar", MODE_PRIVATE); return sakdos.getString("SonDeger",null); }

17 HESAPLAMA UYGULAMASı EditText sayi1;EditText sayi2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String deger=SonDegeriAl(); sayi1=(EditText) findViewById(R.id.editText1); sayi1.setText(deger); sayi2=(EditText) findViewById(R.id.editText2); }

18 HESAPLAMA UYGULAMASı public void hesapla(View v) { double s1=Double.parseDouble(sayi1.getText().toString()); double s2=Double.parseDouble(sayi2.getText().toString()); double sonuc; RadioButton carp=(RadioButton) findViewById(R.id.carp); RadioButton bol=(RadioButton) findViewById(R.id.bol); RadioButton topla=(RadioButton) findViewById(R.id.topla); RadioButton cikar=(RadioButton) findViewById(R.id.cikar);

19 HESAPLAMA UYGULAMASı if(carp.isChecked()) sonuc=s1*s2; else if(bol.isChecked()) sonuc=s1/s2; else if(topla.isChecked()) sonuc=s1+s2; else if(cikar.isChecked()) sonuc=s1-s2; else sonuc=0; sayi1.setText(String.valueOf(sonuc)); sayi2.setText(""); SonDegeriKaydet(String.valueOf(sonuc)); }

20 DOSYADAN OKUMA YAZMA Verileri kalıcı olarak saklamak amacıyla kullanılacak yöntemlerden biride verileri dosyalara kaydederek daha sonra dosyadan okuma işlemini gerçekleştirmektir. Cihazda bulunan dosya ile iletişime geçmek için OpenFileOutput metodundan yararlanılır.

21 DOSYADAN OKUMA YAZMA Bu metot iki parametre alacaktır. Bu parametrelerden birincisi verilerin kaydedilece ğ i dosyanın adıdır. Di ğ eri ise dosyaya erişim türüdür. FileOutputStream dosya=openFileOutput("deneme", Context.MODE_PRIVATE))

22 DOSYADAN OKUMA YAZMA Dosyaya erişme türleri şu şekilde belirlenebilir: MODE_PRIVATE: Varsayılan metottur. Bu metotta oluşturulacak dosyaya sadece bu proje tarafından ulaşım izni verilecektir. MODE_WORLD_READABLE: Bu metot ile varolan projenin dışında di ğ er yazılımlarında bu dosyaya yazma amacıyla ulaşabilmesine izin verecektir.

23 DOSYADAN OKUMA YAZMA Dosyaya erişme türleri şu şekilde belirlenebilir: MODE_WORLD_WRITEABLE: Bu metot ile varolan projenin dışında di ğ er yazılımlarında bu dosyaya okuma amacıyla ulaşabilmesine izin verecektir. MODE_MULTI_PROCESS: Farklı process türünde dosyaya yazma ve okuma amaçlı ulaşmak amacıyla kullanılan ulaşım metodur. MODE_ENABLE_WRITE_AHEAD_LOGGING: Dosyaya yazma işleminden önce dosyanın işaretlenerek açık bırakılması sa ğ lanır.

24 DOSYAYA YAZMA Dosyaya yazma işlemini gerçekleştirmek için OutputStreamWriter sınıfından bir de ğ işken oluşturulmalıdır. OutputStreamWriter yazmaislemi = new OutputStreamWriter(dosya));

25 DOSYAYA YAZMA Yazılacak de ğ erleri dosyaya oluşturulan de ğ işkenin write metodu ile gerçekleştirilir. yazmaislemi.write(deger);

26 DOSYAYA YAZMA Yazılacak de ğ erleri dosyaya oluşturulan de ğ işkenin write metodu ile gerçekleştirilir. yazmaislemi.write(deger);

27 DOSYAYA YAZMA try { FileOutputStream dosya=openFileOutput("deneme", Context.MODE_PRIVATE); OutputStreamWriter okumaislemi = new OutputStreamWriter(dosya); okumaislemi.write(data); okumaislemi.close(); } catch (IOException e) { }

28 DOSYADAN OKUMA Dosyadan okuma yapabilmek için dosyaya InputStream yapısı ile ulaşılmalıdır. InputStream okunacakdosya = openFileInput(dosya);

29 DOSYADAN OKUMA dosyadaki de ğ erleri okumak için InputStreamReader sınıfından birde ğ işken tanımlanır. InputStreamReader okunacak = new InputStreamReader(okunacakdosya);

30 DOSYADAN OKUMA Okunacak de ğ eri bufferlamak için BufferedReader yapısı kullanılır. BufferedReader okunacaklar = new BufferedReader(okunacak);

31 DOSYADAN OKUMA De ğ eri okumak için BufferedReader de ğ işkeninin readLine metodu kullanılır. Okunacaklar.readLine()

32 DOSYADAN OKUMA String ret = ""; try { InputStream inputStream = openFileInput("deneme"); if ( inputStream != null ) { InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String receiveString = ""; StringBuilder stringBuilder = new StringBuilder();

33 DOSYADAN OKUMA while ( (receiveString = bufferedReader.readLine()) != null ) { stringBuilder.append(receiveString); } inputStream.close(); ret = stringBuilder.toString(); }} catch (FileNotFoundException e) } catch (IOException e) { }

34 KAYNAKLAR http://osman-koc.blogspot.com/2012/06/androidde-veri-kaydetmek.html


"MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 11. VER İ LER İ SAKLAMA Android sistemlerinde hazırlanacak projelerde verileri saklamak için android sisteminin." indir ppt

Benzer bir sunumlar


Google Reklamları