APLIKASI BANK SAMPAH DI KOTA YOGYAKARTA DENGAN MEMANFAATKAN FIREBASE

 

BAB I
PENDAHULUAN

1.      LATAR BELAKANG PERLUNYA APLIKASI

Aplikasi Bank sampah akan menampung, memilah dan menyalurkan sampah bernilai ekonomi pada pasar (pengepul/lapak) sehingga masyarakat mendapatkan  keuntungan ekonomi dari menabung sampah dan aplikasi Bank Sampah di harapkan pengguna muda khususnya perempuan bisa membantu orang tua dalam mendapatkan keuntungan ekonomi dari menabung sampah sehingga anak muda bisa ikut serta dalam menjaga kelestarian lingkungan dari sampah tersebut.

2.      TUJUAN APLIKASI

Aplikasi Bank sampah akan menampung, memilah dan menyalurkan sampah bernilai ekonomi pada pasar (pengepul/lapak) sehingga masyarakat mendapatkan  keuntungan ekonomi dari menabung sampah dan agar mengurangi sampah yang seharusnya masih lauak di daur ulang agar lingkungan bersih dari penumpukan sampah itu sendiri.


 

BAB II
PERANCANGAN APLIKASI

a.      Alur Kerja Aplikasi


Pertama masuk aplikasi akan langsung masuk pada halaman login di mana pada halaman ini user(pengguna) harus terlebih dahulu mendaftarkan akunnya agar bisa masuk kepada halaman selanjut nya

Gambar 1 Login

 

Kedua apabila belum terdaftar pada menu daftar masuk kepada halaman daftar di mana harus terlebih dahulu memasuki Nama Panjang,Email,Password Dan Nomor Telepon Apabila Sudah Semuanya Masuk Kembali menu login

Gambar 2 Daftar

Pada Ketiga setelah mendaftar masukkan email dan password yang telah di daftarkan klik tombol login agar masuk pada halaman utama pada aplikasi tersebut

Gambar 3 Login

Setelah Masuk Halaman Utama itu Merupakan Halaman Aplikasi Setelah Login Di Mana Ada Menu HOME,GALERI,MAPS,CONTACT SALDO Dan LOGOUT.

Gambar 4 Halaman Utama

Pada halaman utama kita masuk pada halaman Maps di mana pada halaman maps berfungsi untuk melihat titik lokasi di mana lokasi bank sampah berada.

 

Gambar 5 Halaman Maps

Ketika Kita masuk halaman menu maps akan terlihat peta yang merupakan lokasi dari bank sampah itu sendiri dimana tempat penampungan atau tempat dari bank sampah.

Gambar 6 Lokasi Bank Sampah


Pada halaman utama kita masuk pada halaman Keluar di mana pada halaman Keluar berfungsi untuk keluar dari akun kita di dalamnya.

Gambar 7 Keluar

Pada halaman Kontak Person  di mana pada halaman kotak person berfungsi untuk menghubungi pihak admin dari bank sampah tersebut.

a.      Kebutuhan Data

Data yang di butuhkan dalam membuat aplikasi bank sampah yaitu data diri pengguna seperti Email,Password,Nama dan No Telepon di mana untuk mempunyai akun bank sampah di perlukan data tersebut.

Data Yang Di Perlukan Nama Panjang,Email,Password dan Telepon.

 

Gambar 9 Daftar Akun

b.      Fitur Yang DiSediakan

Fitur-Fitur yang disediakan pada halaman utama bank sampah yaitu HOME,GALERI,MAPS,CONTACT,SALDO Dan KELUAR.

 


Gambar 10 Halaman Utama

BAB III
HASIL IMPLEMENTASI










A.     activity_login.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:background="#000000"
   
tools:context=".Login">

    <
TextView
       
android:layout_width="match_parent"
       
android:layout_height="match_parent"
       
android:text="BANK SAMPAH"
       
android:textColor="#FFFF"
       
android:textSize="25dp"
       
android:fontFamily="@font/aclonica"
       
android:textAlignment="center"
       
android:layout_marginTop="50dp"
        
/>

    <
ImageView
       
android:layout_width="100dp"
       
android:layout_height="100dp"
       
android:layout_marginTop="90dp"
       
android:layout_centerHorizontal="true"
       
android:src="@drawable/bck" />

    <
TextView
       
android:layout_width="match_parent"
       
android:layout_height="match_parent"
       
android:layout_alignParentStart="true"
       
android:layout_alignParentBottom="true"
       
android:layout_marginTop="200dp"
       
android:layout_marginBottom="-4dp"
        
android:fontFamily="@font/aclonica"
       
android:text="Login"
       
android:textAlignment="center"
       
android:textColor="#FFFF"
       
android:textSize="25dp" />
//masukan edit text
    <
EditText
       
android:id="@+id/Email"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="280dp"
       
android:background="#FFF"
       
android:fontFamily="@font/grand_hotel"
       
android:textColorHint="#000000"
       
android:hint="Email"
       
android:layout_marginRight="50dp"
       
android:layout_marginLeft="50dp"
       
android:textSize="20dp"
       
android:inputType="textEmailAddress" />
//masukan password
    <
EditText
       
android:id="@+id/Password"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="330dp"
       
android:background="#FFF"
       
android:fontFamily="@font/grand_hotel"
       
android:textColorHint="#000000"
       
android:hint="Password"
       
android:layout_marginRight="50dp"
       
android:layout_marginLeft="50dp"
       
android:textSize="20dp"
       
android:inputType="textPassword" />

//Tombol untuk masuk halaman utama
    <
Button
       
android:id="@+id/login_masuk"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="450dp"
       
android:textColor="#FFFF"
       
android:layout_marginRight="50dp"
       
android:layout_marginLeft="50dp"
        
android:textSize="20dp"
       
android:text="login"/>

    <
TextView
       
android:id="@+id/buatdaftar"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="490dp"
       
android:textColor="#FFF"
       
android:text="Anda belum Punya Akun?"
       
android:layout_marginRight="50dp"
       
android:layout_marginLeft="50dp"
       
android:textSize="15dp"
       
/>

//Tombol untuk masuk halaman daftar
    <
Button
       
android:id="@+id/menudaftar"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="520dp"
       
android:layout_marginRight="50dp"
       
android:layout_marginLeft="50dp"
       
android:textColor="#FFF"
       
android:textSize="20dp"
       
android:text="daftar"/>
</
RelativeLayout >

 

B.     Login.java

package com.yoga.banksampah;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class Login extends AppCompatActivity {
    EditText  mEmail, mPassword;
    Button mRegistrasi, mMasuk;
    FirebaseAuth fAuth;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        mEmail = findViewById(R.id.Email);
        mPassword = findViewById(R.id.Password);
        mRegistrasi = findViewById(R.id.menudaftar);
        mMasuk = findViewById(R.id.login_masuk);
        mRegistrasi.setOnClickListener(
new View.OnClickListener() {
            @Override
           
public void onClick(View v) {
                startActivity(
new Intent(getApplicationContext(), Registrasi.class));
                finish();
            }
        });

        fAuth = FirebaseAuth.getInstance();


        mMasuk.setOnClickListener(
new View.OnClickListener() {
            @Override
           
public void onClick(View v) {
                String email = mEmail.getText().toString().trim();
                String password = mPassword.getText().toString().trim();

               
if (TextUtils.isEmpty(email)) {
                    mEmail.setError(
"Masukan Email");
                   
return;
                }
               
if (TextUtils.isEmpty(password)) {
                    mPassword.setError(
"Masukan Password");
                   
return;
                }

                //autentikasi user email dan password
               
fAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                   
public void onComplete(@NonNull Task<AuthResult> task) {
                       
if(task.isSuccessful()){
                            Toast.makeText(Login.
this, "Selamat Datang Di Bank Sampah", Toast.LENGTH_SHORT).show();
                            startActivity(
new Intent(getApplicationContext(), MainActivity.class));
                        }
else {
                            Toast.makeText(Login.
this, "GAGAL MENDAFTAR" + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                        }

                    }
                });

            }
        });

    }

}

C.      activity_registrasi.xml

D.     <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:background="#000000"
   
android:orientation="vertical"
   
tools:context=".Registrasi">

    <
TextView
       
android:layout_width="match_parent"
       
android:layout_height="match_parent"
       
android:layout_marginTop="50dp"
       
android:fontFamily="@font/aclonica"
       
android:text="BANK SAMPAH"
       
android:textAlignment="center"
       
android:textColor="#FFFF"
       
android:textSize="25dp" />

    <
ImageView
       
android:layout_width="100dp"
       
android:layout_height="100dp"
       
android:layout_centerHorizontal="true"
       
android:layout_marginTop="90dp"
       
android:src="@drawable/bck" />

    <
TextView
       
android:layout_width="match_parent"
       
android:layout_height="match_parent"
       
android:layout_alignParentStart="true"
       
android:layout_alignParentBottom="true"
       
android:layout_marginTop="200dp"
       
android:layout_marginBottom="-4dp"
       
android:fontFamily="@font/grand_hotel"
       
android:text="DAFTAR"
       
android:textAlignment="center"
       
android:textColor="#FFFF"
       
android:textSize="20dp" />
//masukan nama
    <
EditText
       
android:id="@+id/Nama"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="50dp"
       
android:layout_marginTop="230dp"
        
android:layout_marginRight="50dp"
       
android:background="#FFF"
       
android:fontFamily="@font/grand_hotel"
       
android:hint="Nama Panjang"
       
android:inputType="textPersonName"
       
android:textColorHint="#000000"
       
android:textSize="20dp" />
//masukan email
    <
EditText
       
android:id="@+id/Email"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="50dp"
       
android:layout_marginTop="280dp"
       
android:layout_marginRight="50dp"
       
android:background="#FFF"
       
android:fontFamily="@font/grand_hotel"
       
android:hint="Email"
       
android:inputType="textEmailAddress"
       
android:textColorHint="#000000"
       
android:textSize="20dp" />
//masukan password
    <
EditText
       
android:id="@+id/Password"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="50dp"
       
android:layout_marginTop="330dp"
       
android:layout_marginRight="50dp"
       
android:background="#FFF"
       
android:fontFamily="@font/grand_hotel"
       
android:hint="Password"
       
android:inputType="textPassword"
       
android:textColorHint="#000000"
       
android:textSize="20dp" />
//masukan telepon
    <
EditText
       
android:id="@+id/Phone"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="50dp"
       
android:layout_marginTop="380dp"
       
android:layout_marginRight="50dp"
       
android:background="#FFF"
       
android:fontFamily="@font/grand_hotel"
       
android:hint="Telepon"
       
android:inputType="textPhonetic"
       
android:textColorHint="#000000"
       
android:textSize="20dp" />

    <
Button
       
android:id="@+id/daftar"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="50dp"
       
android:layout_marginTop="450dp"
       
android:layout_marginRight="50dp"
       
android:text="DAFTAR"
       
android:textSize="20dp" />

    <
TextView
       
android:id="@+id/buatdaftar"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="50dp"
       
android:layout_marginTop="490dp"
       
android:layout_marginRight="50dp"
       
android:text="Anda Sudah Punya Akun?"
       
android:textColor="#FFF"
       
android:textSize="15dp" />

    <
Button
       
android:id="@+id/menumasuk"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="50dp"
       
android:layout_marginTop="520dp"
       
android:layout_marginRight="50dp"
       
android:text="Masuk"
       
android:textSize="20dp" />

</
RelativeLayout>
 

C.      Registrasi.java

D.     package com.yoga.banksampah;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class Registrasi extends AppCompatActivity {
    EditText
mFullNama, mEmail, mPassword, mTelepon;
    Button
mRegistrasi, mMasuk;
    FirebaseAuth
fAuth;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_registrasi);

       
mFullNama = findViewById(R.id.Nama);
       
mEmail = findViewById(R.id.Email);
       
mPassword = findViewById(R.id.Password);
       
mTelepon = findViewById(R.id.Phone);
       
mRegistrasi = findViewById(R.id.daftar);
       
mMasuk = findViewById(R.id.menumasuk);
       
mMasuk.setOnClickListener(new View.OnClickListener() {
           
@Override
           
public void onClick(View v) {
                startActivity(
new Intent(getApplicationContext(), Login.class));
                finish();
            }
        });

       
fAuth = FirebaseAuth.getInstance();

       
if (fAuth.getCurrentUser() != null) {
            startActivity(
new Intent(getApplicationContext(), MainActivity.class));
            finish();
        }

       
mRegistrasi.setOnClickListener(new View.OnClickListener() {
           
@Override
           
public void onClick(View v) {
                String email =
mEmail.getText().toString().trim();
                String password =
mPassword.getText().toString().trim();
                String phone =
mTelepon.getText().toString().trim();
               
final String nama = mFullNama.getText().toString().trim();
//cek email
               
if (TextUtils.isEmpty(email)) {
                   
mEmail.setError("Masukan Email");
                   
return;
                }
//cek password
               
if (TextUtils.isEmpty(password)) {
                   
mPassword.setError("Masukan Password");
                   
return;
                }
//cek telepon
 
               
if (TextUtils.isEmpty(phone)) {
                   
mTelepon.setError("Masukan Telepon");
                   
return;
                }
//cek nama
               
if (TextUtils.isEmpty(nama)) {
                   
mPassword.setError("Masukan Nama");
                   
return;
                }
               
//registrasi firebase
               
fAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                   
@Override
                   
public void onComplete(@NonNull Task<AuthResult> task) {
//masuk daftar
                       
if (task.isSuccessful()) {
                            Toast.makeText(Registrasi.
this, "DAFTAR BERHASIL", Toast.LENGTH_SHORT).show();
//masuk login
                            startActivity(
new Intent(getApplicationContext(), Login.class));
                        }
else {
                            Toast.makeText(Registrasi.
this, "GAGAL MENDAFTAR" + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                        }

                    }

                });
            }
        });
    }
}
 

E.      activity_kontak.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:background="#000000"
   
tools:context=".kontak">

    <
TextView
        
android:layout_width="match_parent"
       
android:layout_height="match_parent"
       
android:text="BANK SAMPAH"
       
android:textColor="#FFFF"
       
android:textSize="25dp"
       
android:fontFamily="@font/aclonica"
       
android:textAlignment="center"
       
android:layout_marginTop="20dp"
       
/>

    <
ImageView
       
android:layout_width="100dp"
       
android:layout_height="100dp"
       
android:layout_marginTop="50dp"
       
android:layout_centerHorizontal="true"
        
android:src="@drawable/bck" />
    <
ImageButton
       
android:id="@+id/wa"
       
android:layout_width="100dp"
       
android:layout_height="100dp"
       
android:layout_marginTop="170dp"
       
android:layout_centerHorizontal="true"
       
android:background="@drawable/wa"
       
/>
    <
Button
       
android:id="@+id/nowa"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_below="@+id/wa"
       
android:layout_centerHorizontal="true"
       
android:text="0895377053254"
       
/>



    <
ImageView
       
android:id="@+id/nohp"
       
android:layout_width="100dp"
       
android:layout_height="100dp"
       
android:layout_below="@id/nowa"
       
android:layout_centerHorizontal="true"
       
android:src="@drawable/telepon"
       
/>
    <
TextView
       
android:id="@+id/hp"
       
android:layout_width="150dp"
       
android:layout_height="wrap_content"
       
android:layout_below="@+id/nohp"
       
android:background="#FFF"
       
android:layout_centerHorizontal="true"
       
android:text="081808931497"
       
android:textStyle="bold"
       
android:textAlignment="center"
       
android:layout_marginTop="20dp"
       
/>


</
RelativeLayout >

 

F.       Kontak,java

G.  package com.yoga.banksampah;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;

public class kontak extends AppCompatActivity {

   
public ImageButton mwa;
   
public Button mnowa;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_kontak);

       
mwa = (ImageButton) findViewById(R.id.wa);
       
mnowa = (Button) findViewById(R.id.nowa);

       
mwa.setOnClickListener(new View.OnClickListener() {
           
@Override
           
public void onClick(View v) {
                Intent whatsapp =
new Intent(Intent.ACTION_VIEW);
                whatsapp.setData(Uri.parse(
"https://api.whatsapp.com/send?phone=62895377053254"));//berfungsi untuk menghubungi dengan whatsapp
                startActivity(whatsapp);
            }
        });
       
mwa.setOnClickListener(new View.OnClickListener() {
           
@Override
           
public void onClick(View v) {
                Intent wa =
new Intent(Intent.ACTION_VIEW);
                wa.setData(Uri.parse(
"https://api.whatsapp.com/send?phone=62895377053254"));//berfungsi untuk menghubungi dengan whatsapp
                startActivity(wa);
            }
        });
    }

}

 

H.     MapsActivity.java

package com.yoga.banksampah;

import androidx.fragment.app.FragmentActivity;

import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

   
private GoogleMap mMap;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_maps);
       
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
       
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.
map);
        mapFragment.getMapAsync(
this);
    }


   
/**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
   
@Override
   
public void onMapReady(GoogleMap googleMap) {
       
mMap = googleMap;

        //buat maps bank sampah 1
       
LatLng banksampah1 = new LatLng(-7.8213729,110.3768844);
       
mMap.addMarker(new MarkerOptions().position(banksampah1).title("Bank Sampah"));
//buat maps bank sampah 2
       
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(banksampah1,13));
        LatLng banksampah2 =
new LatLng(-7.825522,110.3713998);
       
mMap.addMarker(new MarkerOptions().position(banksampah2).title("Bank Sampah 2"));
       
mMap.moveCamera(CameraUpdateFactory.newLatLng(banksampah2));
    }
}

I.        MainActivity.java

J.  fAuth = FirebaseAuth.getInstance();
makeluar.setOnClickListener(new View.OnClickListener() {
   
@Override
   
public void onClick(View v) {
       
fAuth.signOut();
        startActivity(
new Intent(getApplicationContext(), Login.class));
    }
});

// berfungsi untuk keluar dari akun firebase atau logout dari aplikasi


BAB IV
KESIMPULAN

Aplikasi Bank sampah akan menampung, memilah dan menyalurkan sampah bernilai ekonomi pada pasar (pengepul/lapak) sehingga masyarakat mendapatkan  keuntungan ekonomi dari menabung sampah dan Pada aplikasi Bank Sampah di harapkan pengguna muda khususnya perempuan bisa membantu orang tua dalam mendapatkan keuntungan ekonomi dari menabung sampah sehingga anak muda bisa ikut serta dalam menjaga kelestarian lingkungan dari sampah tersebut.

Semoga dengan adanya aplikasi ini bisa menjaga lingkungan agar sampah bisa berkurang dan semoga anak muda jaman sekarang membantu para orang tuanya dalam memanfaatkan sampah yang masih bisa di pergunakan menjadi keuntungan ekonomi itu sendiri


Posting Komentar

Lebih baru Lebih lama