Slijede razlike između dviju inačica stranice
Starije izmjene na obje strane Starija izmjena | Novija izmjena Novije izmjene na obje strane | ||
2018:karlo_siladi:projektni_zadatak [2018/06/14 01:01] ksiladi |
2018:karlo_siladi:projektni_zadatak [2018/06/14 01:03] ksiladi |
||
---|---|---|---|
Redak 120: | Redak 120: | ||
==== Kreiranje projekta ==== | ==== Kreiranje projekta ==== | ||
- | 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. | + | 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. |
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. | 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. | ||
Redak 169: | Redak 169: | ||
</manifest> | </manifest> | ||
</code> | </code> | ||
+ | |||
=== Baza podataka === | === Baza podataka === | ||
+ | |||
+ | <code> | ||
+ | @Database(entities = {Products.class}, version = 1, exportSchema = false) | ||
+ | public abstract class ProductDatabase extends RoomDatabase { | ||
+ | |||
+ | private static final String DATABASE_NAME = "products_db"; | ||
+ | private static ProductDatabase INSTANCE; | ||
+ | public abstract DaoAccess daoAccess() ; | ||
+ | |||
+ | public static ProductDatabase getProductDatabase(Context context) { | ||
+ | if (INSTANCE == null) { | ||
+ | INSTANCE = | ||
+ | Room.databaseBuilder(context.getApplicationContext(), ProductDatabase.class, DATABASE_NAME) | ||
+ | .allowMainThreadQueries() | ||
+ | .build(); | ||
+ | } | ||
+ | return INSTANCE; | ||
+ | } | ||
+ | |||
+ | public static void destroyInstance() { | ||
+ | INSTANCE = null; | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
=== Sučelje za slanje upita na bazu === | === Sučelje za slanje upita na bazu === | ||
+ | <code> | ||
+ | public interface DaoAccess { | ||
+ | @Insert | ||
+ | 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> | ||
=== Bluetooth handler i reprodukcija zapisa === | === Bluetooth handler i reprodukcija zapisa === | ||
+ | |||
+ | <code> | ||
+ | <font inherit/Arial,Helvetica,sans-serif;;inherit;;inherit>h = new Handler() { | ||
+ | public void handleMessage(android.os.Message msg) { | ||
+ | switch (msg.what) { | ||
+ | case RECIEVE_MESSAGE: | ||
+ | byte[] readBuf = (byte[]) msg.obj; | ||
+ | String strIncom = new String(readBuf, 0, msg.arg1); | ||
+ | sb.append(strIncom); | ||
+ | int endOfLineIndex = sb.indexOf("\r\n"); | ||
+ | if (endOfLineIndex> 0) { | ||
+ | String sbprint = sb.substring(0, endOfLineIndex); | ||
+ | sb.delete(0, sb.length()); | ||
+ | //Toast.makeText(MainActivity.this, "From Arduino: " + sbprint, Toast.LENGTH_SHORT).show();</font> | ||
+ | <font inherit/Arial,Helvetica,sans-serif;;inherit;;inherit>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></code> | ||