Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:aml:lab3 [2013/10/25 10:00]
esimon [Baza danych]
pl:dydaktyka:aml:lab3 [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Dostęp do danych GPS w Androidzie ====== ====== Dostęp do danych GPS w Androidzie ======
 ===== Ambient Profile ===== ===== Ambient Profile =====
-Zintegruj program [[https://​sbobek@bitbucket.org/​sbobek/​aml_gpstracker|GPS Tracker]] z projektem GUI [[https://​sbobek@bitbucket.org/​sbobek/​aml_ambientprofile|Ambient Profile]], tak aby:+Zintegruj program [[https://​sbobek@bitbucket.org/​sbobek/​aml_gpstracker_studio|GPS Tracker]] z projektem GUI [[https://​sbobek@bitbucket.org/​sbobek/​aml_ambientprofile|Ambient Profile]], tak aby:
  
 {{:​pl:​dydaktyka:​aml:​ambient-profile.png?​300 |}}  {{:​pl:​dydaktyka:​aml:​ambient-profile.png?​300 |}} 
   * Pierwszy fragment (**Status**) umożliwiał włączanie i wyłączanie usługi śledzenia.   * Pierwszy fragment (**Status**) umożliwiał włączanie i wyłączanie usługi śledzenia.
-  * Drugi fragment (**Profiles**) wyświetlał listę profili jakie użytkownik aktualnie ma. Dodaj przycisk i aktywność (FragmentDialog) umożliwiający dodanie nowego profilu. Zaprojektuj klasę reprezentującą profil, przechowującą różne rodzaje profilu (nazwa, co ma się dziać kiedy profil jest aktywny)+  * Drugi fragment (**Profiles**) wyświetlał listę profili jakie użytkownik aktualnie ma. Dodaj przycisk i aktywność (FragmentDialog) umożliwiający dodanie nowego profilu. ​**Zaprojektuj** klasę reprezentującą profil, przechowującą różne rodzaje profilu (nazwa, co ma się dziać kiedy profil jest aktywny) 
 +  * Przetestuj działanie aplikacji za pomocą DDMS
   * **Zadanie dodatkowe** Trzeci fragment (Map) wyświetlać powinien mapę z ikonami profili w obszarach ich aktywacji   * **Zadanie dodatkowe** Trzeci fragment (Map) wyświetlać powinien mapę z ikonami profili w obszarach ich aktywacji
 +  * **Zadanie dodatkowe** Do detekcji tego czy ktoś pojawił się w obszarze aktywacji danego profilu wykorzystaj //​geopłoty//​ [[http://​developer.android.com/​training/​location/​geofencing.html|Geofences]]
   ​   ​
 ===== Baza danych ===== ===== Baza danych =====
 Dodaj do projektu klasy odpowiedzialne za zapisywanie i odczyt profili użytkownika z i do bazy SQLite. Dodaj do projektu klasy odpowiedzialne za zapisywanie i odczyt profili użytkownika z i do bazy SQLite.
-Poniżej znajdują się przykłady takich klas do przechowywania danych GPS.+Poniżej znajdują się przykłady takich klas do przechowywania danych GPS. **Zmodyfikuj** je tak aby umożliwiały przechowywanie profili zaprojektowanych w poprzednim ćwiczeniu.
  
-==== GPS ====+Przykładowe wykorzystanie klas poniżej:
 <code java> <code java>
-package com.indect.datasource;​+//W onCreate tworzymy uchwyt do źródła danych 
 +GPSDataSource datasource = new GPSDataSource(getBaseContext());​ 
 +datasource.open(); 
 + 
 +//Gdzieś dalej w kodzie wrzucamy dane do bazy: 
 +if(datasource ​!= null){ 
 +  datasource.createGPSEntry( 
 +     ​currentLocation.getLatitude(),​  
 +     ​currentLocation.getLongitude(),​ 
 +     ​Long.toString(currentTime),​ 
 +     ​refreshFrequency,​  
 +     ​batteryLevel 
 +  );
  
 +//Zamykamy źródło danych w onStop albo onDestroy
 +datasource.close();​
 +</​code>​
 +==== GPS ====
 +Poniżej klasa reprezentująca rekord danych.
 +<file java GPS.java>​
 public class GPS { public class GPS {
     private long id;     private long id;
Linia 24: Linia 44:
     private int battery;     private int battery;
  
-    double getLat() { +    double getLat() { return lat;} 
-          ​return lat; +    void setLat(double lat) { this.lat = lat; } 
-  }+    double getLon() { return lon;} 
 +    void setLon(double lon) { this.lon = lon;} 
 +    String getTimestamp() { return timestamp; } 
 +    void setTimestamp(String timestamp) { this.timestamp = timestamp; } 
 +    public long getId() { return id; } 
 +    public void setId(long id) { this.id = id; } 
 +    public int getBattery() { return battery; } 
 +    public void setBattery(int battery) { this.battery = battery; } 
 +    public int getFrequency() { return frequency; } 
 +    public void setFrequency(int frequency) {this.frequency = frequency; ​}
  
-  void setLat(double lat) { 
-          this.lat = lat; 
-  } 
- 
-  double getLon() { 
-          return lon; 
-  } 
- 
-  void setLon(double lon) { 
-          this.lon = lon; 
-  } 
- 
-  String getTimestamp() { 
-          return timestamp; 
-  } 
- 
-  void setTimestamp(String timestamp) { 
-          this.timestamp = timestamp; 
-  } 
- 
-  public long getId() { 
-      return id; 
-  } 
- 
-  public void setId(long id) { 
-          this.id = id; 
 } }
  
-  public int getBattery() { +</file>
-          return battery; +
-  } +
- +
-  public void setBattery(int battery) { +
-          this.battery = battery; +
-  } +
- +
-  public int getFrequency() { +
- return frequency;​ +
-  } +
- +
-  public void setFrequency(int frequency) { +
- this.frequency = frequency;​ +
-  } +
- +
-+
- +
-</code>+
  
 ==== DataBaseHelper ==== ==== DataBaseHelper ====
- +Poniżej klasa służąca za uchwyt do bazy danych. 
-<code java>+Tworzy bazę danych i umożliwia operację na tabelach i danych. 
 +Jest wykorzystywana przez klasę //​GPSDataSource//​. 
 +<file java DataBaseHelper.java>
 import android.content.Context;​ import android.content.Context;​
  
Linia 116: Linia 103:
   @Override   @Override
   public void onCreate(SQLiteDatabase database) {   public void onCreate(SQLiteDatabase database) {
- // System.err.println(DATABASE_CREATE);​ 
       database.execSQL(DATABASE_CREATE);​       database.execSQL(DATABASE_CREATE);​
   }   }
Linia 131: Linia 117:
  
  
-</code>+</file>
  
  
 ==== GPSDataSource ==== ==== GPSDataSource ====
 +Klasa opakowuje klasę //​DataBaseHelper//​ udostępniając interfejs dedykowany dla operacji na obiektach klasy //GPS//.
  
-<code java> +<file java GPSDataSource.java>
 import java.util.ArrayList;​ import java.util.ArrayList;​
 import java.util.List;​ import java.util.List;​
Linia 179: Linia 165:
     values.put(DataBaseHelper.COLUMN_FREQUENCY,​ frequency);     values.put(DataBaseHelper.COLUMN_FREQUENCY,​ frequency);
     values.put(DataBaseHelper.COLUMN_BATTERY_LEVEL,​ battery);     values.put(DataBaseHelper.COLUMN_BATTERY_LEVEL,​ battery);
-    ​ 
-   //​System.err.println("​creating:​ Lat: "​+lat+"​ Lon: "​+lon+"​ time: "​+timestamp+ " freq: "​+frequency+"​ battery: "​+battery);​ 
     ​     ​
     long insertId = database.insert(DataBaseHelper.TABLE_GPS,​ null,     long insertId = database.insert(DataBaseHelper.TABLE_GPS,​ null,
Linia 196: Linia 180:
   public void deleteGPS(GPS gps) {   public void deleteGPS(GPS gps) {
     long id = gps.getId();​     long id = gps.getId();​
-    //​System.out.println("​Comment deleted with id: " + id);+
     database.delete(DataBaseHelper.TABLE_GPS,​ DataBaseHelper.COLUMN_ID     database.delete(DataBaseHelper.TABLE_GPS,​ DataBaseHelper.COLUMN_ID
         + " = " + id, null);         + " = " + id, null);
Linia 202: Linia 186:
  
   public List<​GPS>​ getAllGPS() {   public List<​GPS>​ getAllGPS() {
-    List<​GPS> ​comments ​= new ArrayList<​GPS>​();​+    List<​GPS> ​gpses = new ArrayList<​GPS>​();​
  
     Cursor cursor = database.query(DataBaseHelper.TABLE_GPS,​     Cursor cursor = database.query(DataBaseHelper.TABLE_GPS,​
         allColumns, null, null, null, null, null);         allColumns, null, null, null, null, null);
  
-    cursor.moveToFirst(); +    ​if(cursor.moveToFirst()){ 
-    while (!cursor.isAfterLast()) { +      while (!cursor.isAfterLast()) { 
-      GPS gps = cursorToGPS(cursor);​ +        GPS gps = cursorToGPS(cursor);​ 
-      ​comments.add(gps);​ +        gpses.add(gps);​ 
-      cursor.moveToNext();​+        cursor.moveToNext();​ 
 +      }
     }     }
     // Make sure to close the cursor     // Make sure to close the cursor
     cursor.close();​     cursor.close();​
-    return ​comments;+    return ​gpses;
   }   }
  
   private GPS cursorToGPS(Cursor cursor) {   private GPS cursorToGPS(Cursor cursor) {
-   ​GPS gps = null; +    ​GPS gps = null; 
-   ​if (cursor != null) { +    if (cursor != null) { 
-     if (cursor.moveToFirst()) { +       ​gps = new GPS();  
-     ​gps = new GPS(); +       ​gps.setId(cursor.getLong(0));​ 
-  +       ​gps.setLat(cursor.getDouble(cursor.getColumnIndex(DataBaseHelper.COLUMN_LAT)));​ 
-     ​gps.setId(cursor.getLong(0));​ +       ​gps.setLon(cursor.getDouble(cursor.getColumnIndex(DataBaseHelper.COLUMN_LON)));​ 
-     ​gps.setLat(cursor.getDouble(cursor.getColumnIndex(DataBaseHelper.COLUMN_LAT)));​ +       ​gps.setTimestamp(cursor.getString(cursor.getColumnIndex(DataBaseHelper.COLUMN_TIME)));​ 
-     ​gps.setLon(cursor.getDouble(cursor.getColumnIndex(DataBaseHelper.COLUMN_LON)));​ +       ​gps.setFrequency(cursor.getInt(cursor.getColumnIndex(DataBaseHelper.COLUMN_FREQUENCY)));​ 
-     ​gps.setTimestamp(cursor.getString(cursor.getColumnIndex(DataBaseHelper.COLUMN_TIME)));​ +       ​gps.setBattery(cursor.getInt(cursor.getColumnIndex(DataBaseHelper.COLUMN_BATTERY_LEVEL)));​ 
-     ​gps.setFrequency(cursor.getInt(cursor.getColumnIndex(DataBaseHelper.COLUMN_FREQUENCY)));​ +    }  
-     ​gps.setBattery(cursor.getInt(cursor.getColumnIndex(DataBaseHelper.COLUMN_BATTERY_LEVEL)));​ +    return gps;
-     } +
-   ​+
-   ​return gps;+
   }   }
  
 +</​file>​
  
- 
-</​code>​ 
  
  
  
-===== Geopłoty ​ ===== 
  
  
  
  
pl/dydaktyka/aml/lab3.1382688011.txt.gz · ostatnio zmienione: 2019/06/27 15:51 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0