Kata Pengantar
Dengan nama Allah yang Maha Pengasih Maha Penyayang. Segala puji bagi Allah SWT, Tuhan yang telah menolong hamba-Nya menyelesaikan laporan ini. Tanpa pertolongan-Nya mungkin kami tidak sanggup menyelesaikannya dengan baik.
Kami Mengucapkan terimakasih kepada semua pihak yang terlibat dalam pembuatan makalah ini.
Kami juga meminta maaf kepada pembaca jika masih terdapat kekurangan dalam makalah ini, karena kami juga masih belajar dalam membuat laporan seperti ini.
Walaupun masih ada kekurangannya kami berharap laporan ini dapat memberikan wawasan yang lebih luas kepada pembaca. Selanjutnya kami berharap semoga makalah ini bermanfaat.
Purwokerto, 22 Januari 2019
Ketua Kelompok 4
Rafli Firdausy Irawan
BAB I
PENDAHULUAN
1.1 Latar Belakang
Dalam era globalisasi dan teknologi dewasa ini, penggunaan smartphone sebagai salah satu alat teknologi informasi sangat dibutuhkan keberadaannya hampir disetiap aspek kehidupan. Penggunaan perangkat mobile sebagai perangkat pendukung manajemen dan pengolahan data adalah sangat tepat dengan mempertimbangkan kuantitas dan kualitas data, dengan demikian penggunaan perangkat mobile dalam setiap informasi sangat mendukung sistem pengambilan keputusan. Dalam melakukan penyewaan, biasanya seseorang yang ingin melihat-lihat barang sebelum menyewa, maka harus datang langsung ke tempat rental tersebut, namun dengan adanya sistem informasi melalui internet, pihak customer dapat memilih berbagai barang yang sesuai dengan apa yang diinginkannya tanpa harus datang ke tempat rental tersebut. Atas dasar itulah, kami ingi membuat aplikasi rental berbasis android (Zona Rental) untuk membantu masyarakat dalam menyewa berbagai barang secara online agar lebih efisien. Zona Rental merupakan aplikasi tempat sewa-menyewa berbagai macam barang secara online. Jadi user bisa bertindak sebagai pihak penyewa ataupun customer. Jika sebagai penyewa, aplikasi ini bisa dijadikan sebagai media untuk menyewa berbagai produk yang disewakan secara online. Penyewa bisa mengupload gambar produk yang disewakan dan melengkapi informasi produk seperti batas waktu penyewaan, batas jumlah barang yang dapat disewa dan lain-lain. Jika sebagai customer, aplikasi ini bisa dijadikan sebagai media untuk melihat-lihat dan memilih produk yang ingin disewa sesuai kebutuhan. Customer bisa menentukan berapa lama waktu sewa dan jumlah barang yang ingin disewa sesuai kebutuhan.
1.1 Rumusan masalah
Adapun rumusan masalah dalam tugas akhir ini adalah sebagai berikut:
- Bagaimana aplikasi Zona Rental dapat memerikan solusi dalam kegiatan rental merental ?
1.1 Batasan masalah
Agar dalam pengerjaan tugas akhir ini bisa terfokus maka ditentukan batasan masalah diantaranya sebagai berikut :
- Program ini merupakan sebuah aplikasi tempat sewa-menyewa berbagai macam barang secara online.
- Aplikasi yang dirancang hanya berhubungan tentang penyewaan barang.
- Aplikasi ini hanya sebagai media tempat sewa-menyewa barang secara online.
- Aplikasi berjalan pada mobile device yang menggunakan sistem operasi android minimal versi 4 KitKat
- Aplikasi ini menggunakan Firebase realtime-database untuk databasenya.
1.1 Tujuan Penelitian
Dalam penelitian ini terdapat beberapa tujuan diantaranya adalah sebagai berikut :
- Dapat menganalisa kebutuhan sistem pada sebuah aplikasi rental barang pada platform android.
- Dapat mendesain user interface pada sebuah aplikasi rental barang yang user friendly sehingga mudah dimengerti dan dipahami oleh user.
- Melakukan pengujian terhadap aplikasi rental barang agar dapat mengetahui kekurangan atau error pada aplikasi.
1.1 Teknik yang digunakan dalam pembuatan aplikasi
Dalam pembuatan aplikasi Zona Rental, pengembang menggunakan beberapa Teknik yang telah di ajarkan pada proses kegiatan perkuliahan, yaitu :
- Pertemuan 1 : Multi ukuran layout dan desain responsif
- Pertemuan 2 : Read external storage
- Pertemuan 6 : Accessing Phone Services ( Call )
- Pertemuan 8 : Firebase
- Access Kamera
- Admob
BAB II
LANDASAN TEORI
2.1 Android
Android merupakan sistem operasi yang digunakan untuk perangkat mobile berbasis Linux. Pada awalnya sistem operasi ini dikembangkan oleh Android.Inc, yang kemudian dibeli oleh Google pada tahun 2005. Android mengembangkan usaha pada tahun 2007 dibentuklah Open Handset Alliance (OHA), sebuah konsorsium dari beberapa perusahaan, yaitu Texas Instrument, Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia, Qualcom, Samsung Electronics, Sprint Nextel, dan T-Mobile dengan tujuan untuk mengembangkan standar terbuka untuk perangkat mobile Smartphone.
Pada tanggal 9 Desember 2008 , ada 14 anggota baru yang akan bergabung di dalam proyek Android, termasuk Packet Video, ARM Holdings, Atheros Communications, Asustek Computer INC, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, dan VodaFone Group Plc (Hermawan, 2010).
2.1 Android Studio
Android Studio adalah sebuah IDE untuk Android Development yang diperkenalkan google pada acara Google I/O 2013. Android Studio merupakan pengembangkan dari Eclipse IDE, dan dibuat berdasarkan IDE Java populer, yaitu IntelliJ IDEA. Android Studio merupakan IDE resmi untuk pengembangan aplikasi Android.
Sebagai pengembangan dari Eclipse, Android Studio mempunyai banyak fitur-fitur baru dibandingkan dengan Eclipse IDE. Berbeda dengan Eclipse yang menggunakan Ant, Android Studio menggunakan Gradle sebagai build environment. Fitur-fitur lainnya adalah sebagai berikut :
- Menggunakan Gradle-based build system yang fleksibel.
- Bisa mem-build multiple APK .
- Template support untuk Google Services dan berbagai macam tipe perangkat.
- Layout editor yang lebih bagus.
- Built-in support untuk Google Cloud Platform, sehingga mudah untuk integrasi dengan Google Cloud Messaging dan App Engine.
- Import library langsung dari Maven repository
2.2 User Interface (UI)
Menurut Wikipedia, user interface adalah sebuah desain yang digunakan sebagai penghubung antara manusia sebagai pengguna dengan software pada perangkat sehingga akan memudahkan pengoperasian dari perangkat tersebut. Mudahnya, UI merupakan desain tampilan pada layar perangkat seperti yang dimiliki oleh smartphone, tablet dan berbagai jenis perangkat lainnya. Atau sebagian orang awam lebih mengenalnya sebagai tema.
2.3 Multi Ukuran layar
Semakin beragamnya ukuran layar pada prangkat Android, mulai dari 2 inch sampai dengan 10 inch, dengan begitu banyak jenis ukuran layar yang berbeda, aplikasi yang kita buat pun harus mendukung beberapa layar yang berbeda pula, untuk menyesuaikan antarmuka pengguna aplikasi ke layar yang menampilkannya.
2.4 Desain Responsive
Untuk membuat aplikasi yang user friendly perlu mempertimbangkan aspek responsive. Berikut beberapa aspek responsive berdasarkan referensi
2.5 Accessing Phone Services
Saat memulai panggilan telepon, ponsel akan mengeluarkan frekuensi khusus dan menyambungkan ke BTS (Base Transceiver Station) terdekat. Provider akan memindai BTS mana yang memiliki sinyal paling kuat, yang dapat melanjutkan panggilan tersebut.
Setelah ditemukan BTS yang akan menerima sinyal tersebut, dan memverifikasi apakah ponsel tersebut merupakan pelanggan yang valid dari BTS yang bersangkutan. Kemudian, BTS akan mencari kanal yang tersedia untuk melanjutkan panggilan.
BTS akan memindai nomor ponsel yang dituju, lalu memverifikasinya. Dalam proses ini, akan dicek apakah kedua nomor ponsel tersebut dapat menerima pesan suara. Kemudian, akan dipindai BTS mana yang paling dekat dan kuat dengan ponsel yang dituju agar dapat menerima panggilan.
2.6 Firebase
Firebase adalah peyedia layanan realtime database dan backend sebagai layanan. Suatu aplikasi yang memungkinkan pengembang membuat API untuk disinkronisasikan untuk client yang berbeda – beda dan disimpan pada cloud-nya Firebase. Firebase memiliki banyak library yang memungkinkan untuk mengintegrasikan layanan ini dengan Android, IOS, Javacript, Java, Objective-C dan Node.JS . Database Firebase juga bersifat bisa diakses lewat REST API. REST API tersebut menggunakan protokol Server-Sent Event dengan membuat koneksi HTTP untuk menerima push notification dari server. Pengembang menggunakan REST API untuk post data yang selanjutnya Firebase client library yang sudah diterapkan pada aplikasi yang dibangun yang akan mengambil data secara real- time.
Pengembang juga dapat menggunakan database ini untuk mengamankan data menggunakan server Firebase dengan rules yang ada. Untuk hosting file Firebase menyediakan hosting untuk static file dengan fasilitas CND dan SNL.
2.7 Admob
AdMob adalah layan Iklan dari Google khusus untuk aplikasi mobile. Anda bisa menampilkan iklan di aplikasi android ataupun Game android. Jenis iklan di Admob ada dua yaitu Banner dan Interstitial. Banner adalah iklan yang muncul dibagian bawah atau atas sebuah aplikasi.
BAB III
PEMBAHASAN
3.1 Deskripsi Aplikasi
Zona Rental merupakan aplikasi tempat sewa-menyewa berbagai macam barang secara online. Jadi user bisa bertindak sebagai pihak penyewa ataupun customer. Jika sebagai penyewa, aplikasi ini bisa dijadikan sebagai media untuk menyewa berbagai produk yang disewakan secara online. Penyewa bisa mengupload gambar produk yang disewakan dan melengkapi informasi produk seperti batas waktu penyewaan, batas jumlah barang yang dapat disewa dan lainlain. Jika sebagai customer, aplikasi ini bisa dijadikan sebgai media untuk melihatlihat dan memilih produk yang ingin disewa sesuai kebutuhan. Pada aplikasi ini terdapat pilihan kategori seperti produk elektronik, alat rumah tangga, alat olahraga dan lain-lain untuk mempermudah customer dalam memilih produk yang dibutuhkan untuk disewa. Customer bisa menentukan berapa lama waktu sewa dan jumlah barang yang ingin disewa sesuai kebutuhan
3.2 Manfaat Aplikasi
Manfaat yang bisa didapat dari aplikasi “Zona Rental” ini antara lain sebagai berikut:
- Membantu pihak penyewa dalam menyewakan barang yang disewakan.
- Mempermudah pengguna yang ingin menyewa barang yang diinginkan.
- Menghemat waktu dan tenaga, karena pengguna tinggal membuka aplikasi ini dismartphone mereka masing-masing dimanapun dan kapanpun tanpa harus mendatangi langsung tempat perentalan.
- Meningkatkan perekonomian masyarakat.
3.3 Fitur aplikasi Zona Rental
- Pendaftaran
Pada aplikasi zona rental, pendaftaran sudah terintegrasi menggunakan Firebase, sehingga tidak diragukan lagi untuk sisi keamananya. Selain itu dengan menggunakan firebase sudah terdapat fitur validasi untuk password dan emailnya , sehingga meminimalisir duplikasi akun.
- Login
Pada aplikasi zona rental fitur login juga sudah terintegrasi menggunakan firebase. Sehinga ketika membuka aplikasi tidak perlu melakukan login berkali kali.
- Realtime
Karena menggunakan Firebase, aplikasi Zona Rental dapat di jalankan secara realtime, jadi apabila ada proses yang masuk ke dalam database , maka saat itu juga data segera di proses dan di tampilkan.
- Dapat menjadi pihak pemilik barang dan perental barang
Aplikasi ini berjalan secara dua arah , yaitu dapat menjadi pihak pemilik barang , dan pihak yang merental barang
- Create Read Update Delete Barang rental
Pengguna dapat menambah, melihat, mengedit dan menghapus barang miliknya sendiri
- Edit Data
Fitur ini digunakan untuk mengedit data diri dan data Tempat Rental
- Melihat Data Transaksi dan barang
Fitur ini untuk memonitoring transaksi dan data barang
3.4 Alur Sistem Zona Rental
Pengguna melakukan pendaftaran terlebih dahulu dengan cara mengisi form pendaftaran apabila belum mempunyai akun Zona Rental. Setelah itu pengguna Login dengan email dan password yang sudah di daftarkan. Kemudian pengguna dapat melengkapi data diri dan data toko pada menu “Saya” kemudian klik ikon gear pada pojok kanan atas dan pilih menu pengaturan, kemudian muncul halaman untuk mengedit informasi akun dan toko. Jika pengguna ingin merentalkan barangnya maka pergi ke menu “Saya” dan klik ikon keranjang pada pojok kiri atas, kemudian lengkapi data data barang
mulai dari foto, nama barang, harga barang, stok, deskripsi barang dan kategori barang, setelah informasi barang sudah lengkap, klik tombol Rentalin Barang dan barang masuk ke dalam database. Jika pengguna bertindak sebagai konsumen maka pengguna pergi ke menu “Beranda” dan memilih barang yang diinginkan. Kemudian pengguna klik barang yang diinginkan, maka akan muncul tampilan detail barang, mulai dari gambar, harga, stok, deskripsi barang, dll. Jika masih ragu pengguna dapat scroll ke bawah, maka terdapat informasi pemilik barang. Pengguna dapat mengetahui posisi toko pada peta dengan cara mengeklik alamat pemilik barang, maka akan di alihkan ke Google Maps, selain itu pengguna dapat bertanya secara langsung ke pemilik barang via telephone, sms, maupun whatsapp dengan cara mengeklik nomer telephone yang tersedia. Jika sudah yakin dengan barang yang ingin di rental maka klik tombol “Rentalin Barang” kemudian akan di alihkan ke tampilan pengecekan persyaratan, disini pengguna di minta menentukan apakah barangnya diambil sendiri atau di kirim serta menyertakan jaminan untuk Rental barang, setelah semua sudah diisi, maka tinggal klik tombol “Rental” dan menunggu persetujuan oleh pemilik barang. Untuk mengetahui proses yang sedang ataupun yang sudah di lakukan, pengguna dapat masuk ke menu “Transaksi”. di dalam menu ini terdapat 3 sub menu, yaitu Status Rental, Barang Rental, dan Barangku. Status rental untuk mengetahui barang yang sedang kita rental, Barang Rental untuk mengetahui dan menyetujui barang yang akan di rental oleh orang lain, dan barangku untuk mengetahui data barang yang kita miliki
3.1 User Interface Aplikasi Zona Rental
Pada halaman login terdapat 2 form pengisian untuk email dan password. Untuk login isikan alamat email dan password yang telah di daftarkan. |
- Tampilan Halaman Login
Pada halaman daftar tersedia form untuk nama lengkap, email , jenis kelamin dan password . untuk mendaftar semua form harus diisi dengan lengkap. Setelah diisi lengkap maka tinggal klik tombol sign up , dan akun langsung dapat digunakan. Untuk proses daftar sudah ada validasi pada sisi firebase , sehingga tidak mungkin duplikasi email pada sisi database. |
- Tampilan Halaman Daftar
- Tampilan Admob
Tampilan admob, akan muncul ketika user berhasil login . admob yang kami gunakan adalah tipe admob interstisial. Untuk iklan yang tampil kami masih memakai iklan untuk testing , karena kami sudah mencoba mendaftar admob, akan tetapi iklan yang kami buat belum di setujui. |
Tampilan admob, akan muncul ketika user berhasil login . admob yang kami gunakan adalah tipe admob interstisial. Untuk iklan yang tampil kami masih memakai iklan untuk testing , karena kami sudah mencoba mendaftar admob, akan tetapi iklan yang kami buat belum di setujui. |
- Tampilan Halaman Beranda
Tampilan pada pencarian barang, pada tampilan ini user mengetikan barang yang ingin di cari , maka data yang di maksud akan tampil pada daftar |
- Tampilan Cari Barang
Tampilan Status rental merupakan status dari barang yang sedang kita rental, disini pengguna hanya dapat melihat status transasksinya saja , yang bisa merubah status transaksinya adalah pemilik barang yang sedang kita rental. |
- Tampilan halaman transaksi (Status perental)
Tampilan pemilik barang merupakan tampilan untuk barang milik pengguna yang sedang di rental oleh pengguna lain |
- Tampilan halaman transaksi (Pemilik barang)
Ketika tombol edit status di klik maka akan muncul tampilan pilih aksi. Hal ini digunakan untuk mengubah status barang kita yang sedang atau telah di rental oleh orang lain |
- Tampilan halaman transaksi (Pemilik barang : Edit Status)
Pada menu barangku merupakan etalase pengguna , yaitu daftar barang yang sudah terdaftar pada aplikasi zona rental |
- Tampilan halaman transaksi (barangku)
Menu saya, merupakan halaman untuk profil pribadi . pada halaman ini terdapat informasi dari pengguna yang sedang login, serta terdapat tombol pengaturan logout dan tombol tambah barang. |
- Tampilan halaman saya
Menu halaman pengaturan digunakan untuk merubah informasi data diri dan data took serta foto profil dari pengguna |
- Tampilan halaman pengaturan
- Tampilan halaman rentalin barang
Halaman rentalin barang merupakan halaman yang digunakan untuk menambahkan barang ke dalam etalase dimana barangnya nanti akan tampil di halaman beranda Bersama barang barang dari pemilik barang lain. |
3.1 Source code penting aplikasi Zona Rental
- Source code daftar
private void proses_daftar(){ if((TextUtils.isEmpty(et_email.getText().toString())) || (TextUtils.isEmpty(et_password.getText().toString())) || ((TextUtils.isEmpty(et_namaLengkap.getText().toString()))) || (rb_jenisKelamin.getCheckedRadioButtonId() == -1)){ final AlertDialog.Builder builder; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_Material_Light_Dialog_Alert); } else { builder = new AlertDialog.Builder(getActivity()); } builder.setTitle("Peringatan!") .setMessage("Masih Ada data yaang belum diisi !") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } else if(!et_password.getText().toString().equals(et_password2.getText().toString())){ final AlertDialog.Builder builder; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_Material_Light_Dialog_Alert); } else { builder = new AlertDialog.Builder(getActivity()); } builder.setTitle("Peringatan!") .setMessage("Password Harus Sama !") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { et_password2.setError("Password Harus Sama"); } }) .show(); } else { //progressDialog progressDialog = ProgressDialog.show(getActivity(), "Tunggu Beberapa Saat", "Proses Pendaftaran ...", true); firebaseAuth.createUserWithEmailAndPassword(et_email.getText().toString().trim(), et_password.getText().toString()) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { progressDialog.dismiss(); if(task.isSuccessful()){ String user_id = firebaseAuth.getCurrentUser().getUid(); DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id); String namaLengkap = et_namaLengkap.getText().toString(); String jenisKelamin = (String) ((RadioButton) getView().findViewById(rb_jenisKelamin.getCheckedRadioButtonId())).getText(); String noTelp = "-"; String tglLahir = "-"; String alamat = "-"; String imgURL = "-"; Map newPost = new HashMap(); newPost.put("namaLengkap", namaLengkap); newPost.put("jenisKelamin", jenisKelamin); newPost.put("noTelp", noTelp); newPost.put("tglLahir", tglLahir); newPost.put("alamat", alamat); newPost.put("imgURL", imgURL); current_user_db.setValue(newPost); et_email.setText(""); et_password.setText(""); //pindah fragment fragmentManager.beginTransaction() .replace(R.id.auth_content, new LoginFragment()) .commit(); } else { make_toast("Pendaftaran Gagal : " + task.getException().getMessage()); } } }); } }
- Source code login
if((TextUtils.isEmpty(et_email.getText().toString())) || (TextUtils.isEmpty(et_password.getText().toString()))){ final AlertDialog.Builder builder; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_Material_Light_Dialog_Alert); } else { builder = new AlertDialog.Builder(getActivity()); } builder.setTitle("Peringatan!") .setMessage("username atau password masih Kosong!") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } else { //progressDialog progressDialog = ProgressDialog.show(getActivity(), "Tunggu Beberapa Saat", "Proses Login ...", true); firebaseAuth.signInWithEmailAndPassword(et_email.getText().toString(), et_password.getText().toString()) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { progressDialog.dismiss(); if(task.isSuccessful()){ Intent i = new Intent(getActivity(), MainActivity.class); startActivity(i); getActivity().finish(); } else { make_toast("Login gagal : " + task.getException().getMessage()); } } }); }
- Source code mengambil data dan menampilkan barang
databaseReference = FirebaseDatabase.getInstance().getReference("Barang"); databaseReference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { BarangModel barangModel = null; ITEMLIST.clear(); for(DataSnapshot ds : dataSnapshot.getChildren()){ keyPemilikBarang = ds.getKey().toString(); for(DataSnapshot DS : ds.getChildren()){ barangModel = DS.getValue(BarangModel.class); barangModel.setKeyPemilikBarang(keyPemilikBarang); barangModel.setKey(DS.getKey().toString()); ITEMLIST.add(barangModel); } } barangAdapter = new com.dev.invinity.rentalyuk.Adapter.BarangAdapter(getActivity(), ITEMLIST); recyclerView.setAdapter(barangAdapter); // make_toast(String.valueOf(barangAdapter.getItemCount())); } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } });
-
Source code search barang
-
et_searchBarang.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { Toast.makeText(SearchActivity.this, "Searching...", Toast.LENGTH_SHORT).show(); databaseReference = FirebaseDatabase.getInstance().getReference("Barang"); databaseReference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { barangModel = null; ITEMLIST.clear(); for(DataSnapshot ds : dataSnapshot.getChildren()){ keyPemilikBarang = ds.getKey(); databaseReferenceX = databaseReference.child(Objects.requireNonNull(ds.getKey())); Query X = databaseReferenceX.orderByChild("namaBarang") .startAt(et_searchBarang.getText().toString()) .endAt(et_searchBarang.getText().toString()+"\uf8ff"); // \uf8ff ~ X.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for(DataSnapshot DS : dataSnapshot.getChildren()){ barangModel = DS.getValue(BarangModel.class); barangModel.setKeyPemilikBarang(keyPemilikBarang); barangModel.setKey(DS.getKey()); ITEMLIST.add(barangModel); } }
@Override public void onCancelled(@NonNull DatabaseError databaseError) {
} }); }
barangAdapter = new com.dev.invinity.rentalyuk.Adapter.BarangAdapter(SearchActivity.this, ITEMLIST); rv_kontenSearch.setAdapter(barangAdapter); }
@Override public void onCancelled(@NonNull DatabaseError databaseError) {
} });
return true; } return false; } });
- Source code menambahkan barang
private void rentalinBarang(){ if(TextUtils.isEmpty(et_namaBarang.getText().toString()) || TextUtils.isEmpty(et_hargaBarang.getText().toString()) || TextUtils.isEmpty(et_stokBarang.getText().toString()) || TextUtils.isEmpty(et_deskripsiBarang.getText().toString()) || img_barang.getDrawable() == null){ make_alertDialog("Peringatan!", "Masih Ada data yang Kosong !"); } else if (img_barang.getDrawable().getConstantState() == getResources().getDrawable( R.drawable.noimage).getConstantState()){ make_alertDialog("Peringatan!", "Kamu belum memilih gambar !"); } else { Bitmap bitmap = ((BitmapDrawable) img_barang.getDrawable()).getBitmap(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] data = baos.toByteArray(); final StorageReference ref = storageReference.child(System.currentTimeMillis() + ".jpg"); UploadTask uploadTask = ref.putBytes(data); progressDialog.setMessage("Loading ..."); progressDialog.setCancelable(false); progressDialog.show(); Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() { @Override public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception { if (!task.isSuccessful()) { throw task.getException(); } return ref.getDownloadUrl(); } }).addOnCompleteListener(new OnCompleteListener<Uri>() { @Override public void onComplete(@NonNull Task<Uri> task) { if (task.isSuccessful()) { downloadURL = task.getResult(); BarangRental barangRental = new BarangRental( et_namaBarang.getText().toString(), et_hargaBarang.getText().toString(), et_stokBarang.getText().toString(), et_deskripsiBarang.getText().toString(), sp_kategoriBarang.getSelectedItem().toString(), downloadURL.toString() ); String uploadID = databaseReference.push().getKey(); databaseReference.child(uploadID).setValue(barangRental) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { progressDialog.dismiss(); final AlertDialog.Builder builder; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ builder = new AlertDialog.Builder(RentalinBarangActivity.this, android.R.style.Theme_Material_Light_Dialog_Alert); } else { builder = new AlertDialog.Builder(RentalinBarangActivity.this); } builder.setTitle("Info") .setMessage("barang berhasil Di Upload !") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent i = new Intent(RentalinBarangActivity.this, MainActivity.class); i.putExtra("pindahFragment", "fragmentSayaOverview"); startActivity(i); finish(); } }) .show(); } }); } } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { make_alertDialog("Peringatan", "Gagal mengirim data " + e.getMessage().toString()); } }); } }
- Source code update profile
private boolean updateBiodata(){ //update foto Bitmap bitmap = ((BitmapDrawable) img_fotoProfil.getDrawable()).getBitmap(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] dataFoto = baos.toByteArray(); final StorageReference ref = storageReference.child(userID + ".jpg"); UploadTask uploadTask = ref.putBytes(dataFoto); progressDialog.setMessage("Proses update ..."); progressDialog.show(); Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() { @Override public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception { if (!task.isSuccessful()) { throw task.getException(); } // Continue with the task to get the download URL return ref.getDownloadUrl(); } }).addOnCompleteListener(new OnCompleteListener<Uri>() { @Override public void onComplete(@NonNull Task<Uri> task) { if (task.isSuccessful()) { downloadURL = task.getResult(); //save Ke database Users data = new Users( etNama.getText().toString(), etTelp.getText().toString(), etTanggal_lahir.getText().toString(), etAlamat.getText().toString(), (String) ((RadioButton) getView(). findViewById(rb_jenisKelamin.getCheckedRadioButtonId())) .getText() .toString(), downloadURL.toString() ); databaseReference.setValue(data).addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { progressDialog.dismiss(); final AlertDialog.Builder builder; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_Material_Light_Dialog_Alert); } else { builder = new AlertDialog.Builder(getActivity()); } builder.setTitle("Informasi") .setMessage("Data Berhasil Di Perbarui !") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { getActivity().getSupportFragmentManager() .beginTransaction() .replace(R.id.fragment_container, new SayaOverviewFragment()) .commit(); } }) .show(); } }); } } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { make_alertDialog("Peringatan!", "Gagal Upload Foto Profil"); } }); return true; }
BAB IV
PENUTUP
4.1 Kesimpulan
Dari laporan proyek akhir ini maka dapat diambil kesimpulan bahwa :
- Dengan adanya aplikasi ZONARENTAL pada android sebagai tempat sewa-menyewa barang, diharapkan masyarakat umum akan lebih mudah dalam melakukan kegiatan sewa-menyewa barang.
- Dengan adanya aplikasi ZONARENTAL untuk menyewa barang maka masyarakat umum akan menghemat waktu dan tenaga untuk sekedar melihat-lihat barang yang ingin dirental, karena user tidak perlu lagi pergi ke tempat perentalannya secara langsung.
4.2 Saran
Demi pengembangan karya pada proyek akhir ini, maka saran yang dapat diberikan pada program aplikasi ini adalah :
- Pada sisi aplikasi android, perlu ada penambahan fitur seperti chat pribadi antara customer dengan perental, sistem pembayaran online, ulasan produk, dan lain-lain untuk lebih membantu user dalam menggunakan aplikasi ini.
- Pada server firebase harus ditambahkan autentikasi user dan admin agar privasi data user dapat terjaga dengan baik.
DAFTAR PUSTAKA
- https://id.wikipedia.org/wiki/Android_(sistem_operasi)
- https://en.wikipedia.org/wiki/Firebase
- https://developer.android.com/studio/intro/?hl=id
- https://id.wikipedia.org/wiki/Desain_antarmuka_pengguna
- https://developer.android.com/guide/practices/screens_support?hl=id
- https://id.wikipedia.org/wiki/Firebase
- https://www.dewaweb.com/blog/google-admob/
Untuk lebih jelasnya tentang laporan projek, di bawah ini disertakan beberapa lampiran :
- Link Video Youtube penjelasan Aplikasi : https://youtu.be/nKU0vVEkR04
- LAPORAN FINAL PROJECT PMO 2 – ZONA RENTAL
- Source Code Penting Zona Rental
Link Referensi
- https://www.codepolitan.com/membuat-dan-menggunakan-fragment-59f80eff061a4
- https://medium.com/@namakulinux/belajar-realtime-database-pada-firebase-android-9e016f9aa60f
- https://firebase.google.com/docs/storage/?hl=id
- https://medium.com/@ahmadariffaizin/cara-simpel-menambahkan-iklan-admob-interstial-di-android-studio-328e8b94c15
- https://medium.com/easyread/contoh-penggunaan-bottomnavigation-sebagai-navigasi-view-f05d3608c1fd
- https://www.okedroid.com/2017/12/belajar-menggunakan-material-tablayout-dan-viewpager-android.html
- https://medium.com/easyread/tutorial-android-recyclerview-dan-cardview-9a62aaa6cc0c
- https://blog.dicoding.com/tips-mengirim-data-antar-activity-di-android-studio/
- https://firebase.google.com/docs/auth/android/password-auth?hl=id
- https://www.twoh.co/2017/03/14/tutorial-sign-menggunakan-firebase-authentication-di-android-2/