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 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>​
  
  
2018/karlo_siladi/projektni_zadatak.txt · Zadnja izmjena: 2023/06/19 18:11 (vanjsko uređivanje)