laporan final projek pemrograman mobile 2 aplikasi...
TRANSCRIPT
LAPORAN FINAL PROJEK PEMROGRAMAN MOBILE 2
APLIKASI RENTAL BARANG
“ZONA RENTAL”
Disusun Oleh:
Kelompok 4
16.11.0213 Elang Gusti Herlian Kusuma Sakti
16.11.0230 Niko Arif Puwo Santoso
16.11.0231 Satria Fachreza Akbar
16.11.0233 Sidiq Fathkul Mugni
16.11.0238 Mohamad Aziz Nasrulloh
16.11.0244 Yuli Cahyaningsih
16.11.0245 Mustofa Bayu Rahmat
16.11.0247 Rafli Firdausy Irawan
16.11.0254 Ahmad Fauzi
16.11.0256 Riko Aji Nugroho
16.11.0273 Laeli Nasikhatul Khasanah
Kelas : TI 16 B
PROGRAM STUDI TEKNIK INFORMATIKA
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER
AMIKOM PURWOKERTO
2019
i
DAFTAR ISI
DAFTAR ISI ............................................................................................................................... i
Kata Pengantar ........................................................................................................................... ii
BAB I : PENDAHULUAN ........................................................................................................ 5
1.1 Latar Belakang ............................................................................................................ 5
1.2 Rumusan masalah ........................................................................................................ 5
1.3 Batasan masalah .......................................................................................................... 5
1.4 Tujuan Penelitian......................................................................................................... 6
1.5 Teknik yang digunakan dalam pembuatan aplikasi .................................................... 6
BAB II : LANDASAN TEORI .................................................................................................. 7
2.1 Android........................................................................................................................ 7
2.2 Android Studio ............................................................................................................ 7
2.3 User Interface (UI) ...................................................................................................... 8
2.4 Multi Ukuran layar ...................................................................................................... 8
2.5 Desain Responsive ...................................................................................................... 8
2.6 Accessing Phone Services ........................................................................................... 8
2.7 Firebase ....................................................................................................................... 8
2.8 Admob ......................................................................................................................... 9
BAB III : PEMBAHASAN ...................................................................................................... 10
3.1 Deskripsi Aplikasi ..................................................................................................... 10
3.2 Manfaat Aplikasi ....................................................................................................... 10
3.3 Fitur aplikasi Zona Rental ......................................................................................... 10
3.4 Alur Sistem Zona Rental ........................................................................................... 11
3.5 User Interface Aplikasi Zona Rental ......................................................................... 13
3.6 Source code penting aplikasi Zona Rental ................................................................ 19
BAB IV : KESIMPULAN ....................................................................................................... 27
4.1 Kesimpulan................................................................................................................ 27
4.2 Saran .......................................................................................................................... 27
DAFTAR PUSTAKA .............................................................................................................. 28
ii
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
5
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.2 Rumusan masalah
Adapun rumusan masalah dalam tugas akhir ini adalah sebagai berikut:
a. Bagaimana aplikasi Zona Rental dapat memerikan solusi dalam kegiatan rental
merental ?
1.3 Batasan masalah
Agar dalam pengerjaan tugas akhir ini bisa terfokus maka ditentukan batasan
masalah diantaranya sebagai berikut :
6
a. Program ini merupakan sebuah aplikasi tempat sewa-menyewa berbagai macam
barang secara online.
b. Aplikasi yang dirancang hanya berhubungan tentang penyewaan barang.
c. Aplikasi ini hanya sebagai media tempat sewa-menyewa barang secara online.
d. Aplikasi berjalan pada mobile device yang menggunakan sistem operasi android
minimal versi 4.4 KitKat
e. Aplikasi ini menggunakan Firebase realtime-database untuk databasenya.
1.4 Tujuan Penelitian
Dalam penelitian ini terdapat beberapa tujuan diantaranya adalah sebagai
berikut :
a. Dapat menganalisa kebutuhan sistem pada sebuah aplikasi rental barang pada
platform android.
b. Dapat mendesain user interface pada sebuah aplikasi rental barang yang user
friendly sehingga mudah dimengerti dan dipahami oleh user.
c. Melakukan pengujian terhadap aplikasi rental barang agar dapat mengetahui
kekurangan atau error pada aplikasi.
1.5 Teknik yang digunakan dalam pembuatan aplikasi
Dalam pembuatan aplikasi Zona Rental, pengembang menggunakan beberapa
Teknik yang telah di ajarkan pada proses kegiatan perkuliahan, yaitu :
a. Pertemuan 1 : Multi ukuran layout dan desain responsif
b. Pertemuan 2 : Read external storage
c. Pertemuan 6 : Accessing Phone Services ( Call )
d. Pertemuan 8 : Firebase
e. Access Kamera
f. Admob
7
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.2 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 :
a. Menggunakan Gradle-based build system yang fleksibel.
b. Bisa mem-build multiple APK .
c. Template support untuk Google Services dan berbagai macam tipe perangkat.
d. Layout editor yang lebih bagus.
e. Built-in support untuk Google Cloud Platform, sehingga mudah untuk integrasi
dengan Google Cloud Messaging dan App Engine.
8
f. Import library langsung dari Maven repository
2.3 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.4 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.5 Desain Responsive
Untuk membuat aplikasi yang user friendly perlu mempertimbangkan aspek
responsive. Berikut beberapa aspek responsive berdasarkan referensi
2.6 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.7 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
9
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.8 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.
10
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:
a. Membantu pihak penyewa dalam menyewakan barang yang disewakan.
b. Mempermudah pengguna yang ingin menyewa barang yang diinginkan.
c. Menghemat waktu dan tenaga, karena pengguna tinggal membuka aplikasi ini
dismartphone mereka masing-masing dimanapun dan kapanpun tanpa harus
mendatangi langsung tempat perentalan.
d. Meningkatkan perekonomian masyarakat.
3.3 Fitur aplikasi Zona Rental
a. 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.
11
b. Login
Pada aplikasi zona rental fitur login juga sudah terintegrasi menggunakan
firebase. Sehinga ketika membuka aplikasi tidak perlu melakukan login berkali
kali.
c. 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.
d. 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
e. Create Read Update Delete Barang rental
Pengguna dapat menambah, melihat, mengedit dan menghapus barang
miliknya sendiri
f. Edit Data
Fitur ini digunakan untuk mengedit data diri dan data Tempat Rental
g. 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
12
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
13
3.5 User Interface Aplikasi Zona Rental
a. Tampilan Halaman Login
b. Tampilan Halaman Daftar
c. Tampilan Admob
Pada halaman login terdapat 2 form
pengisian untuk email dan password.
Untuk login isikan alamat email dan
password yang telah di daftarkan.
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.
14
d. Tampilan Halaman Beranda
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.
15
e. Tampilan Cari Barang
f. Tampilan halaman transaksi (Status perental)
Tampilan pada pencarian barang,
pada tampilan ini user mengetikan barang
yang ingin di cari , maka data yang di
maksud akan tampil pada daftar
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.
16
g. Tampilan halaman transaksi (Pemilik barang)
h. Tampilan halaman transaksi (Pemilik barang : Edit Status)
Tampilan pemilik barang
merupakan tampilan untuk barang milik
pengguna yang sedang di rental oleh
pengguna lain
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
17
i. Tampilan halaman transaksi (barangku)
j. Tampilan halaman saya
Pada menu barangku merupakan
etalase pengguna , yaitu daftar barang yang
sudah terdaftar pada aplikasi zona rental
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.
18
k. Tampilan halaman pengaturan
l. Tampilan halaman rentalin barang
Menu halaman pengaturan
digunakan untuk merubah informasi data
diri dan data took serta foto profil dari
pengguna
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.
19
3.6 Source code penting aplikasi Zona Rental
a. 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().tr
im(),
et_password.getText().toString())
.addOnCompleteListener(new OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
20
//save into realtime cuk
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());
}
}
});
}
}
b. 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) {
21
}
})
.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());
}
}
});
}
c. 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) {
}
});
22
d. Source code search barang
e. et_searchBarang.setOnEditorActionListener(new TextView.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;
23
}
});
f. 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) {
24
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());
}
});
}
}
g. 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>
25
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();
26
}
});
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
make_alertDialog("Peringatan!", "Gagal Upload Foto Profil");
}
});
return true;
}
27
BAB IV
PENUTUP
4.1 Kesimpulan
Dari laporan proyek akhir ini maka dapat diambil kesimpulan bahwa :
a. Dengan adanya aplikasi ZONARENTAL pada android sebagai tempat sewa-
menyewa barang, diharapkan masyarakat umum akan lebih mudah dalam
melakukan kegiatan sewa-menyewa barang.
b. 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 :
a. 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.
b. Pada server firebase harus ditambahkan autentikasi user dan admin agar privasi
data user dapat terjaga dengan baik.
28
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/