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
Novija izmjena Novije izmjene na obje strane
2018:karlo_siladi:projektni_zadatak [2018/06/14 00:54]
ksiladi kod android aplikacije
2018:karlo_siladi:projektni_zadatak [2018/06/14 01:22]
ksiladi [Shema spajanja sustava]
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_1.png?​nolink&​385x500}} 
  
 ====== 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 112: Redak 113:
 ===== 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/​]] ​ .+[[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/​]] .
  
 <font 12pt/​inherit;;​blue;;​inherit>​Detaljne upute za instalaciju razvojnog alata Android Studio</​font>​ <font 12pt/​inherit;;​blue;;​inherit>​Detaljne upute za instalaciju razvojnog alata Android Studio</​font>​
Redak 120: Redak 121:
 ==== 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.txt · Zadnja izmjena: 2023/06/19 18:11 (vanjsko uređivanje)