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 01:01]
ksiladi
2018:karlo_siladi:projektni_zadatak [2018/06/14 01:05]
ksiladi [Kreiranje projekta]
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 128: Redak 128:
 Kako bi aplikacija ispravno radila potrebno je u datoteku CKGE_TMP_i AndroidManifest.xml dodati potrebne dozvole za korištenjem Bluetooth sučelja. Kako bi aplikacija ispravno radila potrebno je u datoteku CKGE_TMP_i 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>​ 
- +<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 9pt/​inherit;;​inherit;;​inherit><​uses-permission android:​name="​android.permission.BLUETOOTH_ADMIN"​ /></​font>​+</code>
  
 Potrebno je i navesti sve Activity java razrede koji se koriste u aplikaciji. Korišteni su MainActivity , ProductInfoActivity i ProjectAboutActivity. Potrebno je i navesti sve Activity java razrede koji se koriste u aplikaciji. Korišteni su MainActivity , ProductInfoActivity i ProjectAboutActivity.
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>​
 +        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();​
 +
 +                            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;
 +                }
 +            };
 +        };
 +</​code>​
  
  
2018/karlo_siladi/projektni_zadatak.txt · Zadnja izmjena: 2023/06/19 18:11 (vanjsko uređivanje)