Korisnički alati

Site alati


2018:karlo_siladi:projektni_zadatak

Razlike

Slijede razlike između dviju inačica stranice

Poveznica na ovu usporedbu

Starije izmjene na obje strane Starija izmjena
Novija izmjena
Starija izmjena
2018:karlo_siladi:projektni_zadatak [2018/06/14 00:54]
ksiladi kod android aplikacije
2018:karlo_siladi:projektni_zadatak [2023/06/19 18:11] (trenutno)
Redak 54: Redak 54:
   * Bluetooth modul [[https://​www.olimex.com/​Products/​Components/​RF/​BLUETOOTH-SERIAL-HC-06/​resources/​hc06.pdf|HC-06]]   * Bluetooth modul [[https://​www.olimex.com/​Products/​Components/​RF/​BLUETOOTH-SERIAL-HC-06/​resources/​hc06.pdf|HC-06]]
  
-===== Arduino Uno - Centralna jedinica =====+===== Arduino Uno/​Duemilanove ​- Centralna jedinica =====
  
 Arduino Uno je razvojna platforma zasnovana na [[http://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf|ATmega328p]] mikrokontroleru. Ima 14 ulazno-izlaznih pinova (izvoda) od kojih 6 može biti iskorišteno za pulsno-širinsku modulaciju (engl. //​pulse-width modulation, PWM//), 6 analognih ulaza, kvarcni oscilator frekvencije 16MHz, USB konektor za spajanje s računalom, konektor za napajanje, ICSP ( In Circuit Serial Programming ) konektor te tipkalo za reset mikrokontrolera. Arduino Uno je razvojna platforma zasnovana na [[http://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf|ATmega328p]] mikrokontroleru. Ima 14 ulazno-izlaznih pinova (izvoda) od kojih 6 može biti iskorišteno za pulsno-širinsku modulaciju (engl. //​pulse-width modulation, PWM//), 6 analognih ulaza, kvarcni oscilator frekvencije 16MHz, USB konektor za spajanje s računalom, konektor za napajanje, ICSP ( In Circuit Serial Programming ) konektor te tipkalo za reset mikrokontrolera.
Redak 62: Redak 62:
 {{:​2018:​karlo_siladi:​uno_specifications.png?​nolink&​436x500|Arduino Uno specifications}} {{:​2018:​karlo_siladi:​uno_specifications.png?​nolink&​436x500|Arduino Uno specifications}}
  
-U našem sustavu Arduino Uno je centralna jedinica koja je zadužena za komunikaciju s ostalim podsustavima. Odabrana je zbog svoje pristupačnosti,​ cijene, kratkog vremena razvoja, jednostavnosti korištenja te cijene.+U našem sustavu Arduino Uno/​Duemilanove ​je centralna jedinica koja je zadužena za komunikaciju s ostalim podsustavima. Odabrana je zbog svoje pristupačnosti,​ cijene, kratkog vremena razvoja, jednostavnosti korištenja te cijene.
  
 ====== mp3 modul DFPlayer YX5200 ====== ====== mp3 modul DFPlayer YX5200 ======
Redak 88: Redak 88:
 ===== Shema spajanja sustava ===== ===== Shema spajanja sustava =====
  
-{{:​2018:​karlo_siladi:​shema_sustava2.png?​nolink&​400x285}}+{{:​2018:​karlo_siladi:​shema_sustava2.png?​nolink&​400x285}}{{  :​2018:​karlo_siladi:​sustav_ozicenje.png?​nolink&​400x284}} 
  
 ====== Prototipno kućište ====== ====== Prototipno kućište ======
Redak 96: Redak 97:
 Za lakše rukovanje sustav je smješten u plastično kućište. Zbog malog dometa RFID čitača isti je postavljen izvan kućišta. Također izvan se nalaze i slušalice. Za lakše rukovanje sustav je smješten u plastično kućište. Zbog malog dometa RFID čitača isti je postavljen izvan kućišta. Također izvan se nalaze i slušalice.
  
-{{:​2018:​karlo_siladi:​kuciste.jpg?​nolink&​300x400}}+{{:​2018:​karlo_siladi:​kuciste.jpg?​nolink&​300x400|kuciste.jpg}}
  
 ====== Komunikacija s vanjskim sustavima ====== ====== Komunikacija s vanjskim sustavima ======
Redak 105: Redak 106:
  
 ====== Android aplikacija ====== ====== Android aplikacija ======
 +
 +Kod je dostupan na sljedećoj poveznici: http://​pametne-kuce.zesoi.fer.hr/​lib/​exe/​fetch.php?​media=2018:​karlo_siladi:​spvp_apk.zip
  
 Struktura aplikacije je prikazana na slici: Struktura aplikacije je prikazana na slici:
  
-{{:​2018:​karlo_siladi:​struktura_apk.png?​nolink&​500x384}}+{{:​2018:​karlo_siladi:​struktura_apk.png?​direct&​500x384}} 
  
 ===== Android Studio ===== ===== Android Studio =====
  
-[[https://​developer.android.com/​studio/​|Za izradu Android aplikacije potrebno je instalirati razvojni alat Android Studio. Najnovija verzija trenutno je 3.1.3. a dostupna je za preuzimanje na sljedećoj poveznici: https://​developer.android.com/​studio/​]] ​ .+Za izradu Android aplikacije potrebno je instalirati razvojni alat Android Studio. Najnovija verzija trenutno je 3.1.3. a dostupna je za preuzimanje na sljedećoj poveznici:[[https://​developer.android.com/​studio/​|https://​developer.android.com/​studio/​]] .
  
-<font 12pt/​inherit;;​blue;;​inherit>​Detaljne upute za instalaciju razvojnog alata Android Studio</​font>​+Detaljne upute za instalaciju razvojnog alata Android Studio
  
 [[https://​developer.android.com/​studio/​install|https://​developer.android.com/​studio/​install]] [[https://​developer.android.com/​studio/​install|https://​developer.android.com/​studio/​install]]
 +
  
 ==== Kreiranje projekta ==== ==== Kreiranje projekta ====
  
-<font 12pt/​inherit;;​blue;;​inherit>​Nakon uspješne instalacije razvojnog alata potrebno je kreirati novi Android projekt. Kod stvaranja projekta potrebno je unijeti proizvoljno ime projekta. Korišteno ime je  ​CKGE_TMP_i ​SPVP_projekt ​CKGE_TMP_i ​. Stvara se novi direktorij istog imena u kojeg se spremaju programski kodovi, biblioteke te resursi potrebni za aplikaciju. Nakon toga potrebno je unijeti verziju platforme za koju se projekt izrađuje. Odabrana je verzija ​ ​CKGE_TMP_i ​API: 19 Android 4.4 (KitKat) ​CKGE_TMP_i  ​što je relativno stara verzija Android operacijskog sustava, ali je time omogućeno da se aplikacija može pokretati na većini mobilnih uređaja jer je pokretanje moguće i na svim novijim verzijama Androida.</​font>​+Nakon uspješne instalacije razvojnog alata potrebno je kreirati novi Android projekt. Kod stvaranja projekta potrebno je unijeti proizvoljno ime projekta. Korišteno ime je SPVP_projekt . Stvara se novi direktorij istog imena u kojeg se spremaju programski kodovi, biblioteke te resursi potrebni za aplikaciju. Nakon toga potrebno je unijeti verziju platforme za koju se projekt izrađuje. Odabrana je verzija API: 19 Android 4.4 (KitKat) što je relativno stara verzija Android operacijskog sustava, ali je time omogućeno da se aplikacija može pokretati na većini mobilnih uređaja jer je pokretanje moguće i na svim novijim verzijama Androida.
  
-<font 12.0pt/​inherit;;​inherit;;​inherit>​Pri kreiranju novog projekta, stvoren je novi  ​CKGE_TMP_i ​Activity ​CKGE_TMP_i  ​koji prikazuje grafičko sučelje koje vidi korisnik pri pokretanju aplikacije. Potrebno je odabrati ​ ​CKGE_TMP_i ​Empty Activity ​CKGE_TMP_i  ​i dodijeliti mu naziv  ​CKGE_TMP_i ​MainActivity. ​CKGE_TMP_i</​font>​+Pri kreiranju novog projekta, stvoren je novi Activity koji prikazuje grafičko sučelje koje vidi korisnik pri pokretanju aplikacije. Potrebno je odabrati Empty Activity i dodijeliti mu naziv MainActivity.
  
-===  AndroidManifest.xml ​ ===+=== AndroidManifest.xml ===
  
-<font 12pt/​inherit;;​inherit;;​inherit>​Kako bi aplikacija ispravno radila potrebno je u datoteku ​ ​CKGE_TMP_i ​AndroidManifest.xml ​CKGE_TMP_i  ​dodati potrebne dozvole za korištenjem ​ ​CKGE_TMP_i ​Bluetooth ​CKGE_TMP_i  ​sučelja.</​font>​+Kako bi aplikacija ispravno radila potrebno je u datoteku AndroidManifest.xml dodati potrebne dozvole za korištenjem Bluetooth sučelja.
  
-<font 9pt/​inherit;;​inherit;;​inherit><​uses-permission android:​name="​android.permission.BLUETOOTH"​ /></font>+<code> 
 +<​uses-permission android:​name="​android.permission.BLUETOOTH"​ /> 
 +<​uses-permission android:​name="​android.permission.BLUETOOTH_ADMIN"​ /> 
 +</code>
  
-<font 9pt/​inherit;;​inherit;;​inherit><​uses-permission android:​name="​android.permission.BLUETOOTH_ADMIN"​ /></​font>​+Potrebno je i navesti sve Activity java razrede koji se koriste u aplikacijiKorišteni su MainActivity , ProductInfoActivity i ProjectAboutActivity.
  
-<font 12.0pt/​inherit;;​inherit;;​inherit>​Potrebno je i navesti sve  CKGE_TMP_i Activity CKGE_TMP_i ​ java razrede koji se koriste ​aplikacijiKorišteni su  CKGE_TMP_i MainActivity CKGE_TMP_i ,  CKGE_TMP_i ProductInfoActivity CKGE_TMP_i  ​ ​CKGE_TMP_i ProjectAboutActivityCKGE_TMP_i</​font>​+Oznakom intent-filter daje se do znanja Androd OS-koju Activity treba pokrenuti prilikom pokretanja aplikacijeU manifestu se još navode ​korištene ikone.
  
-<font 12.0pt/​inherit;;​inherit;;​inherit>​Oznakom ​ CKGE_TMP_i intent-filter ​ CKGE_TMP_i daje se do znanja Androd OS-u koju Activity treba pokrenuti prilikom pokretanja aplikacije. U manifestu se još navode i korištene ikone.</​font>​+=== Struktura proizvoda ===
  
-<​code>​<font inherit/​inherit;;#​e8bf6a;;​inherit>​<?</​font><​font inherit/​inherit;;#​bababa;;​inherit>​xml version=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>​"​1.0"​</​font><​font inherit/​inherit;;#​bababa;;​inherit>​encoding=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>​"​utf-8"​</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>​?></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>​<​manifest</​font><​font inherit/​inherit;;#​bababa;;​inherit>​xmlns:</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>​=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>​"​http://​schemas.android.com/​apk/​res/​android"​</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​bababa;;​inherit>​package=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>​"​com.example.karlosiladi.bazapodataka"​</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​uses-permission</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​name=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​android.permission.BLUETOOTH_ADMIN"</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>/></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​uses-permission</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​name=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​android.permission.BLUETOOTH"</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>/></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​application</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​allowBackup=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​true"</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​icon=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​@mipmap/​ic_launcher_spvp"</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​label=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​@string/​app_name"</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​roundIcon=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​@mipmap/​ic_launcher_spvp_round"</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​supportsRtl=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​true"</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​theme=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​@style/​AppTheme"</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​activity</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​name=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​.ProductInfoActivity"</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>/></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​activity</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​name=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​.MainActivity"</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​label=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​@string/​title_activity_main"</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​screenOrientation=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​landscape"</​font><​font inherit/​inherit;;#​6a8759;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​theme=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​@style/​AppTheme.NoActionBar"</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​intent-filter></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​action</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​name=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​android.intent.action.MAIN"</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>/></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​category</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​name=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​android.intent.category.LAUNCHER"</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>/></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit></​intent-filter></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit></​activity></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit><​activity</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​android</​font><​font inherit/​inherit;;#​bababa;;​inherit>:​name=</​font><​font inherit/​inherit;;#​6a8759;;​inherit>"​.ProjectAboutActivity"</​font><​font inherit/​inherit;;#​e8bf6a;;​inherit>/></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit></​application></​font><​font inherit/​inherit;;#​e8bf6a;;​inherit></​manifest></​font></​code>+<​code>​ 
 +<?xml version="​1.0"​ encoding="​utf-8"?>​ 
 +<​manifest xmlns:​android="​http://​schemas.android.com/​apk/​res/​android"​ 
 +    ​package="​com.example.karlosiladi.bazapodataka">​
  
-=== Struktura proizvoda ===+    <​uses-permission android:​name="​android.permission.BLUETOOTH_ADMIN"​ /> 
 +    <​uses-permission android:​name="​android.permission.BLUETOOTH"​ />
  
-<code><​font inherit/inherit;;#​cc7832;;​inherit>​public class</​font>​Products { +    ​<application 
-    <​font inherit/​inherit;;#​bbb529;;​inherit>​@NonNull</font><​font inherit/​inherit;;#​bbb529;;​inherit>​@PrimaryKey<​/font><​font inherit/​inherit;;#​bbb529;;​inherit></​font><​font inherit/​inherit;;#​cc7832;;​inherit>​private</​font>​String <font inherit/​inherit;;#​9876aa;;​inherit>​productId</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​private</​font>​String <font inherit/​inherit;;#​9876aa;;​inherit>​productName</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​private</​font>​String <font inherit/​inherit;;#​9876aa;;​inherit>​productPrice</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​public</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​Products</​font>​() { +        android:​allowBackup="​true"​ 
-    } +        android:​icon="​@mipmap/ic_launcher_spvp"​ 
-    <​font inherit/inherit;;#​cc7832;;​inherit>public</font>String ​<font inherit/​inherit;;#​ffc66d;;​inherit>​getProductId</​font>​() { <font inherit/​inherit;;#​cc7832;;​inherit>​return</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​productId</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font>​} +        ​android:​label="​@string/app_name"​ 
-    <​font inherit/​inherit;;#​cc7832;;​inherit>​public void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​setProductId</​font>​(String productId) { <font inherit/​inherit;;#​cc7832;;​inherit>​this</​font>​.<font inherit/inherit;;#​9876aa;;​inherit>​productId</​font>​productId<​font inherit/inherit;;#​cc7832;;​inherit>;</​font>​} +        android:​roundIcon="​@mipmap/ic_launcher_spvp_round"​ 
-    <font inherit/​inherit;;#​cc7832;;​inherit>public</​font>​String <font inherit/​inherit;;#​ffc66d;;​inherit>​getProductName</​font>​() { <font inherit/​inherit;;#​cc7832;;​inherit>​return</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​productName</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font>​} +        ​android:​supportsRtl="​true"​ 
-    <font inherit/​inherit;;#​cc7832;;​inherit>​public void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​setProductName</​font>​(String productName) { <font inherit/​inherit;;#​cc7832;;​inherit>​this</​font>​.<font inherit/inherit;;#​9876aa;;​inherit>productName</font>productName<​font inherit/inherit;;#​cc7832;;​inherit>;</font>} +        ​android:​theme="​@style/AppTheme"​> 
-    <font inherit/inherit;;#​cc7832;;​inherit>public</font>String <font inherit/​inherit;;#​ffc66d;;​inherit>​getProductPrice</​font>​() { <font inherit/​inherit;;#​cc7832;;​inherit>​return</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​productPrice</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font>​} +        ​<activity android:​name="​.ProductInfoActivity" ​/> 
-    ​<font inherit/​inherit;;#​cc7832;;​inherit>​public void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​setProductPrice</​font>​(String productPrice) {<font inherit/​inherit;;#​cc7832;;​inherit>​this</​font>​.<​font inherit/​inherit;;#​9876aa;;​inherit>​productPrice</​font>​= productPrice<​font inherit/​inherit;;#​cc7832;;​inherit>;​</font>}+        ​<activity 
 +            ​android:​name="​.MainActivity"​ 
 +            android:​label="​@string/title_activity_main"​ 
 +            android:​screenOrientation="​landscape"​ 
 +            android:​theme="​@style/AppTheme.NoActionBar"​
 +            <intent-filter
 +                <action android:​name="​android.intent.action.MAIN" ​/> 
 +                ​<category android:​name="​android.intent.category.LAUNCHER" ​/> 
 +            ​</intent-filter
 +        </activity> 
 +        ​<activity android:​name="​.ProjectAboutActivity" ​/> 
 +    </application>
  
-}+</​manifest>​
 </​code>​ </​code>​
 +
 === Baza podataka === === Baza podataka ===
  
-<​code>​<font inherit/​inherit;;#​bbb529;;​inherit>​@Database</​font>​(<font inherit/​inherit;;#​d0d0ff;;​inherit>​entities</​font>​= {Products.<font inherit/​inherit;;#​cc7832;;​inherit>​class</​font>​}<font inherit/​inherit;;#​cc7832;;​inherit>​,</​font><​font inherit/​inherit;;#​d0d0ff;;​inherit>​version</​font>​<font inherit/​inherit;;#​6897bb;;​inherit>​1</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​,</​font><​font inherit/​inherit;;#​d0d0ff;;​inherit>​exportSchema</​font>​<font inherit/​inherit;;#​cc7832;;​inherit>​false</​font>​+<​code>​ 
-<font inherit/​inherit;;#​cc7832;;​inherit>​public abstract class</​font>​ProductDatabase ​<font inherit/​inherit;;#​cc7832;;​inherit>​extends</​font>​RoomDatabase { +@Database(entities = {Products.class},​ version = 1, exportSchema = false) 
-    ​<font inherit/​inherit;;#​cc7832;;​inherit>​private static final</​font>​String ​<font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​DATABASE_NAME</​font>​<font inherit/​inherit;;#​6a8759;;​inherit>​"​products_db"​</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​private static</​font>​ProductDatabase ​<font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​INSTANCE</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​public abstract</​font>​DaoAccess ​<font inherit/​inherit;;#​ffc66d;;​inherit>​daoAccess</​font>​() <font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​public static</​font>​ProductDatabase ​<font inherit/​inherit;;#​ffc66d;;​inherit>​getProductDatabase</​font>​(Context context) { +public abstract class ProductDatabase extends RoomDatabase { 
-   <font inherit/​inherit;;#​cc7832;;​inherit>​if</​font>​(<font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​INSTANCE</​font>​== <font inherit/​inherit;;#​cc7832;;​inherit>​null</​font>​) { + 
-   <font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​INSTANCE</​font>​+    private static final String DATABASE_NAME = "​products_db";​ 
-   ​Room.<font inherit/​inherit;;​inherit;;​inherit>​databaseBuilder</​font>​(context.getApplicationContext()<font inherit/​inherit;;#​cc7832;;​inherit>​,</​font>​ProductDatabase.<font inherit/​inherit;;#​cc7832;;​inherit>​class,</​font><​font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​DATABASE_NAME</​font>​+    ​private static ProductDatabase INSTANCE; 
-   ​.allowMainThreadQueries() +    ​public abstract DaoAccess daoAccess() ; 
-                            .build()<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​+ 
-   <font inherit/​inherit;;#​cc7832;;​inherit>​return</​font><​font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​INSTANCE</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​+    ​public static ProductDatabase getProductDatabase(Context context) { 
-    ​<font inherit/​inherit;;#​cc7832;;​inherit>​public static void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​destroyInstance</​font>​() { +        if (INSTANCE == null) { 
-   <font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​INSTANCE</​font>​<font inherit/​inherit;;#​cc7832;;​inherit>​null;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​}+            INSTANCE = 
 +                    Room.databaseBuilder(context.getApplicationContext(),​ ProductDatabase.class,​ DATABASE_NAME) 
 +                            .allowMainThreadQueries() 
 +                            .build(); 
 +        ​
 +        return INSTANCE; 
 +    ​} 
 + 
 +    public static void destroyInstance() { 
 +        INSTANCE = null; 
 +    ​}
 } }
 </​code>​ </​code>​
 +
 === Sučelje za slanje upita na bazu === === Sučelje za slanje upita na bazu ===
  
-<​code>​<font inherit/​inherit;;#​cc7832;;​inherit>​public interface</​font>​DaoAccess { +<​code>​ 
-    ​<font inherit/​inherit;;#​bbb529;;​inherit>​@Insert</​font><​font inherit/​inherit;;#​bbb529;;​inherit></​font><​font inherit/​inherit;;#​cc7832;;​inherit>​void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​insertSingleProduct</​font>​(Products product)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​bbb529;;​inherit>​@Insert</​font><​font inherit/​inherit;;#​bbb529;;​inherit></​font><​font inherit/​inherit;;#​cc7832;;​inherit>​void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​insertMultipleProducts</​font>​(List<​Products>​ productsList)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​bbb529;;​inherit>​@Query</​font>​(<font inherit/​inherit;;#​6a8759;;​inherit>​"​SELECT * FROM Products WHERE productId = :​productId"​</​font>​+ public interface DaoAccess { 
-    Products ​<font inherit/​inherit;;#​ffc66d;;​inherit>​fetchProductByProductId</​font>​(String productId)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​bbb529;;​inherit>​@Query</​font>​(<font inherit/​inherit;;#​6a8759;;​inherit>​"​SELECT * FROM Products"​</​font>​+    @Insert 
-    List<​Products> <font inherit/​inherit;;#​ffc66d;;​inherit>​getProducts</​font>​()<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​bbb529;;​inherit>​@Update</​font><​font inherit/​inherit;;#​bbb529;;​inherit></​font><​font inherit/​inherit;;#​cc7832;;​inherit>​void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​updateProduct</​font>​(Products product)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​bbb529;;​inherit>​@Delete</​font><​font inherit/​inherit;;#​bbb529;;​inherit></​font><​font inherit/​inherit;;#​cc7832;;​inherit>​void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​deleteProduct</​font>​(Products product)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font>​}+    ​void insertSingleProduct (Products product); 
 +    ​@Insert 
 +    ​void insertMultipleProducts (List<​Products>​ productsList);​ 
 +    ​@Query("​SELECT * FROM Products WHERE productId = :​productId"​) 
 +    Products fetchProductByProductId (String productId); 
 +    ​@Query("​SELECT * FROM Products"​) 
 +    List<​Products>​ getProducts();​ 
 +    ​@Update 
 +    ​void updateProduct (Products product); 
 +    ​@Delete 
 +    ​void deleteProduct (Products product); 
 +}
 </​code>​ </​code>​
 +
 === Bluetooth handler i reprodukcija zapisa === === Bluetooth handler i reprodukcija zapisa ===
  
-<​code>​<font inherit/​inherit;;#​9876aa;;​inherit>​h</​font>​<font inherit/​inherit;;#​cc7832;;​inherit>​new</​font>​Handler() { +<​code>​ 
-    <​font inherit/​inherit;;#​cc7832;;​inherit>​public void</​font><​font inherit/​inherit;;#​ffc66d;;​inherit>​handleMessage</​font>​(android.os.Message msg) { +        ​h = new Handler() { 
-   <font inherit/​inherit;;#​cc7832;;​inherit>​switch</​font>​(msg.<font inherit/​inherit;;#​9876aa;;​inherit>​what</​font>​) { +            public void handleMessage(android.os.Message msg) { 
-   <font inherit/​inherit;;#​cc7832;;​inherit>​case</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​RECIEVE_MESSAGE</​font>​+                switch (msg.what) { 
-   <font inherit/​inherit;;#​cc7832;;​inherit>​byte</​font>​[] readBuf = (<font inherit/​inherit;;#​cc7832;;​inherit>​byte</​font>​[]) msg.<font inherit/​inherit;;#​9876aa;;​inherit>​obj</​font><​font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​String strIncom = <font inherit/​inherit;;#​cc7832;;​inherit>​new</​font>​String(readBuf<font inherit/​inherit;;#​cc7832;;​inherit>​,</​font><​font inherit/​inherit;;#​6897bb;;​inherit>​0</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​,</​font>​msg.<font inherit/​inherit;;#​9876aa;;​inherit>​arg1</​font>​)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​sb</​font>​.append(strIncom)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​int</​font>​endOfLineIndex = <font inherit/​inherit;;#​9876aa;;​inherit>​sb</​font>​.indexOf(<font inherit/​inherit;;#​6a8759;;​inherit>​"</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​\r\n</​font><​font inherit/​inherit;;#​6a8759;;​inherit>​"</​font>​)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​if</​font>​(endOfLineIndex ​> <font inherit/​inherit;;#​6897bb;;​inherit>0</​font>​) { +                    case RECIEVE_MESSAGE:​ 
-   ​String sbprint = <font inherit/​inherit;;#​9876aa;;​inherit>​sb</​font>​.substring(<font inherit/​inherit;;#​6897bb;;​inherit>​0</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​,</​font>​endOfLineIndex)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​sb</​font>​.delete(<font inherit/​inherit;;#​6897bb;;​inherit>​0</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​,</​font><​font inherit/​inherit;;#​9876aa;;​inherit>​sb</​font>​.length())<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​808080;;​inherit>​//​Toast.makeText(MainActivity.this,​ "From Arduino: " + sbprint, Toast.LENGTH_SHORT).show();​</​font><​font inherit/​inherit;;#​808080;;​inherit></​font><​font inherit/​inherit;;#​cc7832;;​inherit>​if</​font>​(<font inherit/​inherit;;#​9876aa;;​inherit>​mPlayer</​font>​!= <font inherit/​inherit;;#​cc7832;;​inherit>​null</​font>​) { +                        byte[] readBuf = (byte[]) msg.obj; 
-   <font inherit/​inherit;;#​9876aa;;​inherit>​mPlayer</​font>​.stop()<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​+                        ​String strIncom = new String(readBuf,​ 0, msg.arg1); 
-   ​Products product = <font inherit/​inherit;;#​9876aa;;​inherit>​db</​font>​.daoAccess().fetchProductByProductId(sbprint)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​if</​font>​(product == <font inherit/​inherit;;#​cc7832;;​inherit>​null</​font>​){ +                        ​sb.append(strIncom);​ 
-   ​Toast.<font inherit/​inherit;;​inherit;;​inherit>​makeText</​font>​(MainActivity.<font inherit/​inherit;;#​cc7832;;​inherit>​this,</​font><​font inherit/​inherit;;#​6a8759;;​inherit>​"Ne postoji proizvod s ID: "</​font>​+ sbprint +<font inherit/​inherit;;#​6a8759;;​inherit>​" u bazi proizvoda!"​</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​,</​font>​Toast.<font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​LENGTH_SHORT</​font>​).show()<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​808080;;​inherit>​// mPlayer = MediaPlayer.create(MainActivity.this,​ R.raw.error_sound);​</​font><​font inherit/​inherit;;#​808080;;​inherit>​// mPlayer.start();​</​font><​font inherit/​inherit;;#​808080;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​mPlayer</​font>​= MediaPlayer.<font inherit/​inherit;;​inherit;;​inherit>​create</​font>​(MainActivity.<font inherit/​inherit;;#​cc7832;;​inherit>​this,</​font>​R.raw.<font inherit/​inherit;;#​9876aafont-style:​italic;;;​inherit>​nemaubazi</​font>​)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​mPlayer</​font>​.start()<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​productNameTextView</​font>​.setText(<font inherit/​inherit;;#​6a8759;;​inherit>​"​Skeniraj sljedeći proizvod..."​</​font>​)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​productPriceTextView</​font>​.setText(<font inherit/​inherit;;#​6a8759;;​inherit>​""​</​font>​)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​<font inherit/​inherit;;#​cc7832;;​inherit>​else</​font>​+                        ​int endOfLineIndex = sb.indexOf("​\r\n"​);​ 
-   <font inherit/​inherit;;#​9876aa;;​inherit>​productNameTextView</​font>​.setText(product.getProductName())<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​productPriceTextView</​font>​.setText(product.getProductPrice())<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​String id = product.getProductId()<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​int</​font>​res = MainActivity.<font inherit/​inherit;;#​cc7832;;​inherit>​this</​font>​.getResources().getIdentifier(<font inherit/​inherit;;#​6a8759;;​inherit>​"​t"​</​font>​+id<font inherit/​inherit;;#​cc7832;;​inherit>​,</​font><​font inherit/​inherit;;#​6a8759;;​inherit>​"​raw"​</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​,</​font>​MainActivity.<font inherit/​inherit;;#​cc7832;;​inherit>​this</​font>​.getPackageName())<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit>​if</​font>​(res != <font inherit/​inherit;;#​6897bb;;​inherit>​0</​font>​) { +                        ​if (endOfLineIndex>​ 0) { 
-   <font inherit/​inherit;;#​9876aa;;​inherit>​mPlayer</​font>​= MediaPlayer.<font inherit/​inherit;;​inherit;;​inherit>​create</​font>​(MainActivity.<font inherit/​inherit;;#​cc7832;;​inherit>​this,</​font>​res)<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font><​font inherit/​inherit;;#​9876aa;;​inherit>​mPlayer</​font>​.start()<font inherit/​inherit;;#​cc7832;;​inherit>;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​+                            String sbprint = sb.substring(0,​ endOfLineIndex);​ 
-   ​}+                            ​sb.delete(0,​ sb.length());​ 
 +                            ​//​Toast.makeText(MainActivity.this,​ "From Arduino: " + sbprint, Toast.LENGTH_SHORT).show();​ 
 + 
 +                            ​if(mPlayer != null) { 
 +                                mPlayer.stop();​ 
 +                            ​
 +                            Products product = db.daoAccess().fetchProductByProductId(sbprint);​ 
 +                            ​if(product == null){ 
 +                                Toast.makeText(MainActivity.this,​ "Ne postoji proizvod s ID: "+ sbprint +" u bazi proizvoda!",​ Toast.LENGTH_SHORT).show();​ 
 +                               // mPlayer = MediaPlayer.create(MainActivity.this,​ R.raw.error_sound);​ 
 +                               // mPlayer.start();​ 
 +                                ​mPlayer = MediaPlayer.create(MainActivity.this,​ R.raw.nemaubazi);​ 
 +                                ​mPlayer.start();​ 
 +                                ​productNameTextView.setText("​Skeniraj sljedeći proizvod..."​);​ 
 +                                ​productPriceTextView.setText(""​);​ 
 +                            ​} else { 
 +                                productNameTextView.setText(product.getProductName());​ 
 +                                ​productPriceTextView.setText(product.getProductPrice());​ 
 +                                ​String id = product.getProductId();​ 
 +                                ​int res = MainActivity.this.getResources().getIdentifier("​t"​+id,​ "​raw",​ MainActivity.this.getPackageName());​ 
 +                                ​if(res != 0) { 
 +                                    mPlayer = MediaPlayer.create(MainActivity.this,​ res); 
 +                                    ​mPlayer.start();​ 
 +                                ​
 +                            } 
 +                        } 
 +                        break;
                 }                 }
-                <font inherit/​inherit;;#​cc7832;;​inherit>​break;</​font><​font inherit/​inherit;;#​cc7832;;​inherit></​font>​} +            }
-    }<font inherit/​inherit;;#​cc7832;;​inherit>;</​font>​}<​font inherit/​inherit;;#​cc7832;;​inherit>;</​font>​</​code>​+        }; 
 +</​code>​
  
  
2018/karlo_siladi/projektni_zadatak.1528930451.txt.gz · Zadnja izmjena: 2023/06/19 18:10 (vanjsko uređivanje)