akademia androida Składowanie danych część VI



Podobne dokumenty
Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Programowanie w języku Java. Bazy danych SQLite w Javie

akademia androida Intencje oraz URI część III

Bezpieczne uruchamianie apletów wg

Katalog książek cz. 2

Paweł Cieśla. Dokumentacja projektu

Zaawansowane aplikacje WWW - laboratorium

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Podstawy i języki programowania

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Podstawowe wykorzystanie Hibernate

Java. Programowanie Obiektowe Mateusz Cicheński

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Tworzenie i wykorzystanie usług

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Fragmenty są wspierane od Androida 1.6

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Strumienie, pliki. Sortowanie. Wyjątki.

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

Zasady programowania Dokumentacja

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

METODY PROGRAMOWANIA

Programowanie obiektowe

Tuning SQL Server dla serwerów WWW

Ćwiczenie dotyczące platformy Java EE zostało przygotowane z myślą o środowisku NetBeans w wersji 7.3 (do pobrania z

Systemy operacyjne na platformach mobilnych

Przechowywanie danych

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Jakarta POI. POIFS obsługa dokumentów OLE 2, HSSF dokumenty w formacie Excel'a, HWPF proste dokumenty w formacie Word 97,

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Wykład 12. Programowanie serwera MS SQL 2005 w C#

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

Metody dostępu do danych

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Aplikacje w środowisku Java

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Bartosz Jachnik - Kino

Ćwiczenia 9 - Swing - część 1

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Wykład 4: Klasy i Metody

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 5: PHP: praca z bazą danych MySQL

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Klasy i obiekty cz II

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

SPECYFIKACJA FUNKCJONALNA OPROGRAMOWANIA 11 marca 2014 XLZEBRAPRINTER

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Metody dostępu do danych

Programowanie obiektowe

Db4o obiektowa baza danych wersja.net

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Mechanizm zapisu preferencji

Ćwiczenia 2 IBM DB2 Data Studio

Automaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1,

akademia androida Http i AsyncTask część VII

Wykorzystanie plików

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Programowanie wielowarstwowe i komponentowe

WSNHiD, Programowanie 2, Lab. 3. Trwałość danych

Strumienie, pliki. Sortowanie. Wyjątki.

Wprowadzenie do Doctrine ORM

Rozdział 4 KLASY, OBIEKTY, METODY

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

POLITECHNIKA POZNAŃSKA. Oprogramowanie dla telefonów z systemem Windows Phone 8 obsługujących technologię NFC do sprawdzania listy obecności.

MVC w praktyce tworzymy system artykułów. cz. 1

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w Ruby

akademia androida Pierwsze kroki w Androidzie część I

O czym dzisiaj? krótko o refaktoryzacji; dźwięki w Android; aparat w telefonie; Baza danych; GPS.

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

[Android] Podstawy programowania

Programowanie obiektowe i zdarzeniowe

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Obsługa SMS i telefonii

Transkrypt:

akademia androida Składowanie danych część VI

agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie.

1. SharedPreferences. Jednym ze sposobów magazynowania danych w Androidzie jest mechanizm zapewniony przez API o nazwie SharedPreferences. Przechowuje on dane w formie {klucz,wartość w utworzonych automatycznie plikach XML znajdujących się w katalogu /data/data/nazwa_pakietu/shared_pref/. Najczęściej używa się go (jak sama nazwa wskazuje) do przechowywania ustawień aplikacji współdzielonych pomiędzy aktywnościami. Plik XML może mieć nazwę zdefiniowaną przez nas lub domyślną (nazwa klasy bieżącej aktywności). Dostęp do SharedPreferences uzyskujemy poprzez Context i wywołaniu odpowiedniej metody. getpreferences(int mode) getsharedpreferences(string name, int mode) Tryby dostępu: Context.MODE_PRIVATE Context.MODE_WORLD_READABLE //wycofane w API 17 Context.MODE_WORLD_WRITEABLE //wycofane w API 17 Przykład zapisu danych do SharedPreferences: SharedPreferences sharedpref = getpreferences(context.mode_private); SharedPreferences.Editor sharedpreferenceseditor = sharedpref.edit(); sharedpreferenceseditor.putstring("user_nickname", "Nick"); sharedpreferenceseditor.commit(); Przykład odczytu danych z SharedPreferences: sharedpref.getstring("user_nickname", "default value")

2. Pamięć wewnętrzna i karta SD. Zwykłe pliki możemy zapisać w pamięci wewnętrznej telefonu (dokładniej mówiąc w katalogu /data/data/nazwa_pakietu/files/) lub na karcie pamięci. Mechanizm jest podobny do tego w Java SE lub Java EE. Za pomocą poniższych metod otwieramy plik do zapisu/odczytu w pamięci wewnętrznej telefonu. FileOutputStream fos = openfileoutput("plik.txt",context.mode_private) FileInputStream fis = openfileinput("plik.txt") Aby zapisać na kartę pamięci najpierw musimy pobrać ścieżkę za pomocą metody getexternalstoragedirectory(). Przykład poniżej. File sdcarddirectory = Environment.getExternalStorageDirectory(); if (sdcarddirectory.exists() && sdcarddirectory.canwrite()) { File file = new File(sdCardDirectory.getAbsolutePath() + "/" + "plik.txt"); try { file.createnewfile(); if (file.exists() && file.canwrite()) { FileOutputStream fos = new FileOutputStream(file); catch (IOException e) { W przypadku zapisu na kartę należy pamiętać o dodaniu do AndroidManifest.xml uprawnień. <uses-permission android:name="android.permission.write_external_storage" />

3. Pliki w katalogach /res/raw i /res/xml. Istnieje możliwość umieszczenia w naszym projekcie plików dowolnego formatu w folderze /res/raw, pozostaną one tam w niezmienionej formie, może to być tekst, film, obraz etc. Po umieszczeniu ich w projekcie stają się dostępne jako zasoby w aplikacji. Przykład odwołania się do tego typu pliku: InputStream is = getresources().openrawresource(r.raw.movie); Drugim typem pliku, który krótko omówię jest plik XML w folderze /res/xml. Są to zwykłe pliki XML, które zostają automatycznie skompilowane do zasobów aplikacji. Poniżej przykład z dokumentacji XmlPullParser parsowania pliku XML: try { XmlPullParser xpp = getresources().getxml(r.xml.people); int eventtype = xpp.geteventtype(); while (eventtype!= XmlPullParser.END_DOCUMENT) { if (eventtype == XmlPullParser.START_DOCUMENT) { Log.d(TAG, "Start document"); else if (eventtype == XmlPullParser.START_TAG) { Log.d(TAG, "Start tag " + xpp.getname()); else if (eventtype == XmlPullParser.END_TAG) { Log.d(TAG, "End tag " + xpp.getname()); else if (eventtype == XmlPullParser.TEXT) { Log.d(TAG, "Text " + xpp.gettext()); eventtype = xpp.next(); Log.d(TAG, "End document"); catch (XmlPullParserException e) { catch (IOException e) { W ten sposób można parsować również pliki pobrane z serwera lub innego dowolnego miejsca.

4. Baza danych SQLite. System Android został wyposażony w lokalną bazę danych SQLite, która znakomicie sprawdza się jako magazyn dla danych naszej aplikacji. API udostępnia łatwy sposób pracy z tego typu bazą. Najbardziej zalecanym rozwiązaniem jest zgrupowanie operacji na bazie w jednej klasie, która dziedziczy po SQLiteOpenHelper. Taka klasa musi zawierać co najmniej jeden konstruktor DatabaseHandler(Context context) i dwie metody nadpisujące metody z klasy bazowej: oncreate(sqlitedatabase db) onupgrade(sqlitedatabase db, int oldversion, int newversion) W metodzie oncreate za pomocą metody db.execsql(string) tworzymy tabele (jako argument przekazując zapytanie SQL). W metodzie onupgrade powinniśmy usunąć tabele (jeżeli istnieją) i ponownie wywołać metodę oncreate(sqlitedatabase db). Przykładowa klasa: public class DatabaseHandler extends SQLiteOpenHelper { private static final int VERSION = 1; private static final String DATABASE_NAME = "mad_database"; private static final String TABLE_NAME = "zwierzeta"; private static final String ID_COLUMN = "id"; private static final String NAME_COL = "nazwa"; private static final String TYPE_COL = "rodzaj"; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, VERSION);

@Override public void oncreate(sqlitedatabase db) { String query = "CREATE TABLE " + TABLE_NAME + "(" + ID_COLUMN + "INTEGER PRIMARY KEY," + NAME_COL + " TEXT," + TYPE_COL + " TEXT" + ")"; db.execsql(query); @Override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { db.execsql("drop TABLE IF EXISTS " + TABLE_NAME); oncreate(db); Oczywiście klasa powinna poza tym zawierać metody do pobierania, aktualizowania i usuwania danych. Przykład zapisu do bazy z wnętrza klasy: SQLiteDatabase db = this.getwritabledatabase(); ContentValues newrowvalues = new ContentValues(); newrowvalues.put(name_col, "Wąż"); newrowvalues.put(type_col, "Dusiciel"); db.insert(table_name, null, newrowvalues); db.close(); Przykład pobrania danych za pomocą SELECT: SQLiteDatabase db = this.getwritabledatabase(); Cursor cursor = db.rawquery( "SELECT * FROM " + TABLE_NAME, null); if (cursor.movetofirst()) { do { int id = cursor.getint(0); String nazwa = cursor.getstring(1); String rodzaj= cursor.getstring(2); while (cursor.movetonext());

5. Zadanie. Stworzyć aktywność z sześcioma przyciskami i trzema polami tekstowymi. Przycisk Zapisz do SharedPreferences zgodnie z nazwą zapisuje dane: name Jan Kowalski age 32. Przycisk Wyczyść SharedPreferences usuwa wszystkie dane. Przycisk Dodaj do bazy zgodnie z nazwą doda do tabeli w bazie przykładowe dane osób {name,age. Pozostałe trzy przyciski służą do odczytania zapisanych wcześniej danych i wyświetlenia ich w dowolnej formie, np. poprzez pola tekstowe. Przycisk Odczytaj z XML odczytuje dane z pliku people.xml w katalogu /res/xml. Struktura pliku: <people> <person> <name>jan Kowalski</name> <age>32</age> </person>... </people>

Dziękuję za uwagę! Kontakt: sswierczek@wi.zut.edu.pl mad@zut.edu.pl