Slijede razlike između dviju inačica stranice
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:30] ksiladi [Ciljevi projekta] |
2018:karlo_siladi:projektni_zadatak [2018/06/14 00:54] ksiladi kod android aplikacije |
||
---|---|---|---|
Redak 16: | Redak 16: | ||
* <font 14px/Arial,Helvetica,sans-serif;;#333333;;white>Povezati sustav s Android aplikacijom Bluetooth modulom HC-06.</font> | * <font 14px/Arial,Helvetica,sans-serif;;#333333;;white>Povezati sustav s Android aplikacijom Bluetooth modulom HC-06.</font> | ||
* <font 14px/Arial,Helvetica,sans-serif;;#333333;;white>Unos glasovnih naredbi, prikaz cijene i proizvođača.</font> | * <font 14px/Arial,Helvetica,sans-serif;;#333333;;white>Unos glasovnih naredbi, prikaz cijene i proizvođača.</font> | ||
- | |||
====== Resursi ====== | ====== Resursi ====== | ||
Redak 64: | Redak 63: | ||
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 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 72: | Redak 70: | ||
==== Komunikacija ==== | ==== Komunikacija ==== | ||
- | Komunikacija s modulom se ostvaruje asinkronom serijskom UART komunikacijom. Potrebne su dva digitalna izvoda: Tx i Rx na Arduinu koji se spajaju na Rx i Tx izvode (UOČI: Rx→Tx; Tx→Rx) na mp3 modulu. Za rad mp3 modula potrebno je dovesti i napajanje (GND i +5V) s Arduino Uno razvojne platforme. Na Arduino Uno razvojnoj platformi odnosno na ATmega328p mikrokontroleru postoji sklopovlje za asinkronu serijsku komunikaciju koje je spojeno na USB kako bi se mogla ostvariti komunikacija s računalom. Zbog uhodavanja i nadogradnje sustava asinkrona serijska komunikacija sa mp3 modulom ostvarit će se programski. Pritom će se koristiti ugrađena biblioteka [[https://www.arduino.cc/en/Reference/SoftwareSerial|SoftwareSerial]] koja se već nalazi u Arduino IDE. | + | Komunikacija s modulom se ostvaruje asinkronom serijskom UART komunikacijom. Potrebne su dva digitalna izvoda: Tx i Rx na Arduinu koji se spajaju na Rx i Tx izvode (UOČI: Rx→Tx; Tx→Rx) na mp3 modulu. Za rad mp3 modula potrebno je dovesti i napajanje (GND i +5V, može i 3v3) s Arduino Uno razvojne platforme. Na Arduino Uno razvojnoj platformi odnosno na ATmega328p mikrokontroleru postoji sklopovlje za asinkronu serijsku komunikaciju koje je spojeno na USB kako bi se mogla ostvariti komunikacija s računalom. Zbog uhodavanja i nadogradnje sustava asinkrona serijska komunikacija sa mp3 modulom ostvarit će se programski. Pritom će se koristiti ugrađena biblioteka [[https://www.arduino.cc/en/Reference/SoftwareSerial|SoftwareSerial]] koja se već nalazi u Arduino IDE. |
===== RFID čitač ===== | ===== RFID čitač ===== | ||
Redak 81: | Redak 79: | ||
==== MFRC522 ==== | ==== MFRC522 ==== | ||
+ | |||
+ | MFRC522 modul je RFID čitač/pisač proizvođača NXP Semiconductors koji je namijenjen za očitavanje pasivnih RFID oznaka propisanih ISO/IEC 14443 protokolom. Komunikacija između modula i RFID oznaka se odvija na 13.56 MHz. Komunikacija je ostvarena SPI komunikacijom linijama: MISO, MOSI, SS, CLK. Nedostatak: mali domet. Napredak: Zapis info o proizvodima na RFID oznaku (engl. //tag//). Napajanje 5V ili 3v3. S 5V ostvaren nešto veći domet. | ||
+ | |||
+ | ===== Bluetooth modul ===== | ||
+ | |||
+ | Bluetooth modul HC-06. Odabran zbog jednostavnog rukovanja. Serijska komunikacija izvedena softverski. Jednostavno spajanje na Android mobilnoj aplikaciji. | ||
+ | |||
+ | ===== Shema spajanja sustava ===== | ||
+ | |||
+ | {{:2018:karlo_siladi:shema_sustava2.png?nolink&400x285}} | ||
+ | |||
+ | ====== Prototipno kućište ====== | ||
+ | |||
+ | Uređaj je prenosiv pa je napajanje izvedeno baterijom nazivnog napona 9V. Napredak: punjive baterije, prekidač | ||
+ | |||
+ | 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}} | ||
====== Komunikacija s vanjskim sustavima ====== | ====== Komunikacija s vanjskim sustavima ====== | ||
- | Ako dođe do greške prilikom povezivanja preko bluetooth veze, sustav može komunicirati izravno nakon očitavanja jedinstvenog koda proizvoda preko .mp3 modula. | + | Uređaj se povezuje s mobilnom aplikacijom pomoću Bluetooth komunikacije. Napredak: koristiti BLE zbog manje potrođnje |
+ | |||
+ | Ako dođe do greške prilikom povezivanja preko bluetooth veze, sustav može komunicirati izravno nakon očitavanja jedinstvenog koda proizvoda preko .mp3 modula odnosno reproducirati glasovni zapis s informacijama o proizvodu. Napredak: baza glasovnih zapisa na vanjskom poslužitelju. Snimanje zapisa na samom uređaju. | ||
+ | |||
+ | ====== Android aplikacija ====== | ||
+ | |||
+ | Struktura aplikacije je prikazana na slici: | ||
+ | |||
+ | {{:2018:karlo_siladi:struktura_apk.png?nolink&500x384}} | ||
+ | |||
+ | ===== 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/]] . | ||
+ | |||
+ | <font 12pt/inherit;;blue;;inherit>Detaljne upute za instalaciju razvojnog alata Android Studio</font> | ||
+ | |||
+ | [[https://developer.android.com/studio/install|https://developer.android.com/studio/install]] | ||
+ | |||
+ | ==== 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> | ||
+ | |||
+ | <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> | ||
+ | |||
+ | === 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> | ||
+ | |||
+ | <font 9pt/inherit;;inherit;;inherit><uses-permission android:name="android.permission.BLUETOOTH" /></font> | ||
+ | |||
+ | <font 9pt/inherit;;inherit;;inherit><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /></font> | ||
+ | |||
+ | <font 12.0pt/inherit;;inherit;;inherit>Potrebno je i navesti sve CKGE_TMP_i Activity CKGE_TMP_i java razrede koji se koriste u aplikaciji. Korišteni su CKGE_TMP_i MainActivity CKGE_TMP_i , CKGE_TMP_i ProductInfoActivity CKGE_TMP_i i CKGE_TMP_i ProjectAboutActivity. CKGE_TMP_i</font> | ||
+ | |||
+ | <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> | ||
+ | |||
+ | <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> | ||
+ | |||
+ | === Struktura proizvoda === | ||
+ | |||
+ | <code><font inherit/inherit;;#cc7832;;inherit>public class</font>Products { | ||
+ | <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>() { | ||
+ | } | ||
+ | <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>} | ||
+ | <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>} | ||
+ | <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>} | ||
+ | <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>} | ||
+ | <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>} | ||
+ | <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>} | ||
+ | |||
+ | } | ||
+ | </code> | ||
+ | === 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>) | ||
+ | <font inherit/inherit;;#cc7832;;inherit>public abstract class</font>ProductDatabase <font inherit/inherit;;#cc7832;;inherit>extends</font>RoomDatabase { | ||
+ | <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) { | ||
+ | <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>= | ||
+ | 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>) | ||
+ | .allowMainThreadQueries() | ||
+ | .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>} | ||
+ | <font inherit/inherit;;#cc7832;;inherit>public static void</font><font inherit/inherit;;#ffc66d;;inherit>destroyInstance</font>() { | ||
+ | <font inherit/inherit;;#9876aafont-style:italic;;;inherit>INSTANCE</font>= <font inherit/inherit;;#cc7832;;inherit>null;</font><font inherit/inherit;;#cc7832;;inherit></font>} | ||
+ | } | ||
+ | </code> | ||
+ | === Sučelje za slanje upita na bazu === | ||
- | ====== ====== | + | <code><font inherit/inherit;;#cc7832;;inherit>public interface</font>DaoAccess { |
+ | <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>) | ||
+ | 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>) | ||
+ | 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>} | ||
+ | </code> | ||
+ | === Bluetooth handler i reprodukcija zapisa === | ||
- | ====== Plan projekta ====== | + | <code><font inherit/inherit;;#9876aa;;inherit>h</font>= <font inherit/inherit;;#cc7832;;inherit>new</font>Handler() { |
+ | <font inherit/inherit;;#cc7832;;inherit>public void</font><font inherit/inherit;;#ffc66d;;inherit>handleMessage</font>(android.os.Message msg) { | ||
+ | <font inherit/inherit;;#cc7832;;inherit>switch</font>(msg.<font inherit/inherit;;#9876aa;;inherit>what</font>) { | ||
+ | <font inherit/inherit;;#cc7832;;inherit>case</font><font inherit/inherit;;#9876aa;;inherit>RECIEVE_MESSAGE</font>: | ||
+ | <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>) { | ||
+ | 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>) { | ||
+ | <font inherit/inherit;;#9876aa;;inherit>mPlayer</font>.stop()<font inherit/inherit;;#cc7832;;inherit>;</font><font inherit/inherit;;#cc7832;;inherit></font>} | ||
+ | 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>){ | ||
+ | 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>{ | ||
+ | <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>) { | ||
+ | <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>} | ||
+ | } | ||
+ | } | ||
+ | <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> | ||