Anda di halaman 1dari 30

Laporan Tugas Pemrograman Perangkat Bergerak

Kampung Anggrek

Disusun Oleh :

Visensius Dony Putra A11.2017.10096

PPB KELOMPOK A11.4504

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER

UNIVERSITAS DIAN NUSWANTORO

2020

1
Daftar Isi

Daftar Isi
Laporan Tugas Pemrograman Perangkat Bergerak ............................................................................... 1
Daftar Isi ...................................................................................................................................................... 2
Latar Belakang ............................................................................................................................................ 3
Analisa dan Desain Aplikasi (OOP), Pemodelan UML ........................................................................... 4
1. Analisa Kebutuhan User ................................................................................................................ 4
2. Analisa Kebutuhan Software dan Hardware ............................................................................... 4
3. Diagram Use Case ........................................................................................................................... 5
4. Diagram Class ................................................................................................................................. 6
5. Diagram Aktivitas ........................................................................................................................... 6
6. Desain Tabel dan Database ............................................................................................................ 7
7. Desain Input dan Output................................................................................................................ 8
Implementasi Sistem ................................................................................................................................... 9
MainActivity.java ..................................................................................................................................... 9
LoginActivity.java .................................................................................................................................... 9
Register.java ........................................................................................................................................... 13
Dashboard.java ...................................................................................................................................... 16
Produk.java ............................................................................................................................................ 21
PembayaranActivity.java ....................................................................................................................... 22
Penutup ...................................................................................................................................................... 30

2
Latar Belakang
Salah satu penopang pertumbuhan ekonomi itu terlihat dari geliat kegiatan usaha kecil yang
signifikan, baik di sektor tradisional maupun modern melalui usaha mikro kecil dan menengah
(UMKM). Usaha mandiri yang dijalankan oleh masyarakat menengah ke bawah ini memiliki peran
strategis dalam menggerakkan roda perekonomian bangsa.
Yang menjadikan keberadaan- UMKM kuat karena keberadaannya tersebar di seluruh
pen-juru negeri dan menguasai sekitar 99 persen aktivitas bisnis di Indonesia, dengan lebih dari
98 persen berstatus usaha mikro. Juga karena keunggulannya di beberapa faktor yakni kemampuan
fokus yang spesifik, fleksibilitas nasional, biaya rendah, dan kecepatan inovasi.
Bahkan pada saat krisis global melanda dunia, kontribusi UMKM dalam roda
perekonomian Indonesia masih berdiri tegak. Itulah sebabnya peran UMKM begitu besar dalam
pertumbuhan ekonomi Indonesia, khususnya kontribusi terhadap produk domestik bruto. UMKM
nyatanya memang mengalami peningkatan dalam kurun waktu lima tahun terakhir, terlebih
dukungan pemerintah lewat Kementerian Koperasi dan UKM yang memberikan peluang bagi
pebisnis kecil berkembang.
Menurut Kementerian Koordinator Bidang Perekonomian, Saat ini UMKM terhadap PDB
tumbuh hingga 60,34 persen. Secara jumlah, usaha kecil di Indonesia menyumbang PDB lebih
banyak, yakni mencapai 93,4 persen, kemudian usaha menengah 5,1 persen, dan usaha besar hanya
1 persen saja. Namun, pada prinsipnya angka tersebut tidak menunjukan adanya perubahan setiap
tahunnya. Oleh karena itu, agar pondasi ekonomi Indonesia tetap terjaga dan kuat, Indonesia perlu
meningkatkan angka tersebut, sehingga tidak hanya bertahan di usaha kecil saja. Namun sektor
menengah dan ke atas juga perlu di dorong. Sudah saatnya UMKM naik kelas.
SDM yang belum memahami Internet, kapasitas produksi yang rata-rata masih kecil,
tempat showroom yang belum memadahi sehingga pemilik UMKM merasa belum mampu untuk
memasarkan produk-produk mereka di internet. Karena masih banyak penjual yang belum
mempunyai sebuah aplikasi pemasaran produk masing-masing padahal produk mereka berkualitas
export dan masih menggunakan pemasaran manual seperti penyebaran kartu nama dan brosur
katalog.
Oleh karena itu, seiring dengan perkembangan IT pula. Aplikasi pemasaran terhadap
produk UMKM harus dibangun dan mulai menggunakan sistem komputerisasi. Cara ini
diharapkan memudahkan didalam pencarian informasi mengenai profil UMKM, produk-produk
unggulan, dan lain sebagainya. Pemasaran yang dilakukan secara online dapat mendorong
masuknya produk UMKM lebih luas ke pasar internasional. Sehingga peluang untuk meng-export
produk ke pasar global dapat dimaksimalkan. Oleh karena itu, saya akan berniat membuat sebuah
aplikasi berbasis Android untuk UMKM Kampung Anggrek yang akan dikendalikan oleh salah
satu admin. Semua data mengenai produk yang dipasarkan akan termuat didalam aplikasi android
tersebut hingga laporan data penjualan juga dapat dilihat dengan mudah dalam Web Service yang
ada. Maka dengan adanya aplikasi berbasis android ini dapat meningkatkan pemasaran produk dan
daya saing serta kesejahteraan antar pemilik UMKM dapat selalu terjaga.

3
Analisa dan Desain Aplikasi (OOP), Pemodelan UML
1. Analisa Kebutuhan User
- Membuar Akun dan Login
Untuk dapat melakukan transaksi di dalam aplikasi ini, customer diawajibkan untuk
memiliki sebuah akun. Jika anda sudah memiliki akun, anda dapat langsung meng-klik
menu Login. Tetapi jika belum, anda dapat meng-klik menu Registrasi dan mengisi
beberapa keterangan yang harus diisi.
- Memilih Produk
Setelah login, customer dapat memilih produk yang telah tersedia. Dengan meng-klik
gambar produk maka harga barang tersebut akan tertera pada total transaksi dan apabila
kita meng-klik tulisan dari produk maka akan dimunculkan detail dari barang.
- Perhitungan pembayaran
Setelah produk yang diinginkan telah di-klik dan total yang harus dibayarkan akan
tertera kemudian jika meng-klik harga tersebut maka customer akan diarahkan pada
halaman perhitungan transaksi. Pada laman ini customer mengisikan nama, alamat,
jumlah uang yang dibayarkan kemudian dengan meng-klik hitung maka akan muncul
total kembalian (jika ada).
- Menu SMS, Telepon, Map, Update, Logout
Pada menu utama dibagian kanan atas maka akan ditemukan beberapa menu seperti :
SMS, dimana user dapat mengkatifkan menu pesan dengan meng-klik menu ini.
Telepon, dimana customer dapat menggunakan Telepon yang tersedia, Map yang
digunakan untuk melacak tempat dari shop yang ada, Update digunakan untuk
mengganti profil user seperti username dan password, dan logout digunakan untuk
pilihan keluar dari aplikasi.

2. Analisa Kebutuhan Software dan Hardware


Untuk merancang dan membuat aplikasi berbasis android dibutuhkan perangkat keras agar
program aplikasi yang dibuat dapat berjalan dengan baik. Spesifikasi yang digunakan
adalah laptop dengan spesifikasinya sebagai berikut :
No Spesifikasi Kebutuhan
th
1 CPU Intel Core i7 (5 Gen) 5500U / 2.4 Ghz
2 RAM DDR3L SDRAM 8 GB
3 VGA Intel HD Graphics 5500
4 HDD 1 TB

Software atau perangkat lunak yang digunakan untuk mendukung dan merancang
pembuatan aplikasi berbasis android harus sesuai dengan kebutuhan. Perangkat lunak yang
digunakan adalah sebagai berikut:
No Spesifikasi Kebutuhan
1 Sistem Operasi Windows 10

4
2 Database Server XAMPP
3 Database SQLYog, PHPMYADMIN
4 Web Browser Mozilla Firefox, Google Chrome
5 Android Editor Android Stuio
6 Web Editor Visual Studio Code
7 PHP Editor Notepad++

3. Diagram Use Case

5
4. Diagram Class

5. Diagram Aktivitas

6
6. Desain Tabel dan Database

Tabel Transaksi

Tabel User

Tabel Produk

7
7. Desain Input dan Output

8
Implementasi Sistem
MainActivity.java
public class MainActivity extends AppCompatActivity {
private int waktu_loading = 4000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(MainActivity.this, LoginActivity.class);
startActivity(i);
finish();
}
},waktu_loading);
}
}

LoginActivity.java
package com.example.recycleview;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;

import androidx.appcompat.app.AppCompatActivity;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.example.recycleview.util.AppController;
import com.example.recycleview.util.ServerAPI;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class LoginActivity extends AppCompatActivity {


ProgressDialog pDialog;

9
Button btn_register, btn_login;
EditText txt_username, txt_password;
Intent intent;
private TextView info;
private LoginButton loginButton;
private CallbackManager callbackManager;
int success;
ConnectivityManager conMgr;

private String url = "http://192.168.43.187/login.php";

private static final String TAG = LoginActivity.class.getSimpleName();

private static final String TAG_SUCCESS = "success";


private static final String TAG_MESSAGE = "message";

public final static String TAG_USERNAME = "username";


public final static String TAG_ID = "id";

String tag_json_obj = "json_obj_req";

SharedPreferences sharedpreferences;
Boolean session = false;
String id, username;
public static final String my_shared_preferences = "my_shared_preferences";
public static final String session_status = "session_status";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_login);
info = (TextView)findViewById(R.id.info);
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
info.setText(
"User ID: "
+ loginResult.getAccessToken().getUserId()
+ "\n" +
"Auth Token: "
+ loginResult.getAccessToken().getToken()
);
}

@Override
public void onCancel() {
info.setText("Login attempt canceled.");
}

@Override
public void onError(FacebookException e) {
info.setText("Login attempt failed.");
}
});
conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
{
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()

10
&& conMgr.getActiveNetworkInfo().isConnected()) {
} else {
Toast.makeText(getApplicationContext(), "No Internet Connection",
Toast.LENGTH_LONG).show();
}
}

btn_login = (Button) findViewById(R.id.btn_login);


btn_register = (Button) findViewById(R.id.btn_register);
txt_username = (EditText) findViewById(R.id.txt_username);
txt_password = (EditText) findViewById(R.id.txt_password);

// Cek session login jika TRUE maka langsung buka MainActivity


sharedpreferences = getSharedPreferences(my_shared_preferences, Context.MODE_PRIVATE);
session = sharedpreferences.getBoolean(session_status, false);
id = sharedpreferences.getString(TAG_ID, null);
username = sharedpreferences.getString(TAG_USERNAME, null);

if (session) {
Intent intent = new Intent(LoginActivity.this, DasboardActivity.class);
intent.putExtra(TAG_ID, id);
intent.putExtra(TAG_USERNAME, username);
finish();
startActivity(intent);
}

btn_login.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String username = txt_username.getText().toString();
String password = txt_password.getText().toString();

// mengecek kolom yang kosong


if (username.trim().length() > 0 && password.trim().length() > 0) {
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected()) {
checkLogin(username, password);
} else {
Toast.makeText(getApplicationContext() ,"No Internet Connection", Toast.LENGTH_LONG).show();
}
} else {
// Prompt user to enter credentials
Toast.makeText(getApplicationContext() ,"Kolom tidak boleh kosong", Toast.LENGTH_LONG).show();
}
}
});

btn_register.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
intent = new Intent(LoginActivity.this, RegisterActivity.class);
finish();
startActivity(intent);
}
});

11
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
private void checkLogin(final String username, final String password) {
pDialog = new ProgressDialog(this);
pDialog.setCancelable(false);
pDialog.setMessage("Logging in ...");
showDialog();

StringRequest strReq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {

@Override
public void onResponse(String response) {
Log.e(TAG, "Login Response: " + response.toString());
hideDialog();

try {
JSONObject jObj = new JSONObject(response);
success = jObj.getInt(TAG_SUCCESS);

// Check for error node in json


if (success == 1) {
String username = jObj.getString(TAG_USERNAME);
String id = jObj.getString(TAG_ID);

Log.e("Successfully Login!", jObj.toString());

Toast.makeText(getApplicationContext(), jObj.getString(TAG_MESSAGE), Toast.LENGTH_LONG).show();

// menyimpan login ke session


SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean(session_status, true);
editor.putString(TAG_ID, id);
editor.putString(TAG_USERNAME, username);
editor.commit();

// Memanggil main activity


Intent intent = new Intent(LoginActivity.this, DasboardActivity.class);
intent.putExtra(TAG_ID, id);
intent.putExtra(TAG_USERNAME, username);
finish();
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(),
jObj.getString(TAG_MESSAGE), Toast.LENGTH_LONG).show();

}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
}

}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Login Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),

12
error.getMessage(), Toast.LENGTH_LONG).show();

hideDialog();

}
}) {

@Override
protected Map<String, String> getParams() {
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("username", username);
params.put("password", password);

return params;
}

};

// Adding request to request queue


AppController.getInstance().addToRequestQueue(strReq, tag_json_obj);
}

private void showDialog() {


if (!pDialog.isShowing())
pDialog.show();
}

private void hideDialog() {


if (pDialog.isShowing())
pDialog.dismiss();
}
}

Register.java
package com.example.recycleview;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.example.recycleview.util.AppController;
import com.example.recycleview.util.ServerAPI;

import org.json.JSONException;
import org.json.JSONObject;

13
import java.util.HashMap;
import java.util.Map;

public class RegisterActivity extends AppCompatActivity {


ProgressDialog pDialog;
Button btn_register, btn_login;
EditText txt_username, txt_password, txt_confirm_password;
Intent intent;

int success;
ConnectivityManager conMgr;

private String url = "http://192.168.43.187/register.php";

private static final String TAG = RegisterActivity.class.getSimpleName();

private static final String TAG_SUCCESS = "success";


private static final String TAG_MESSAGE = "message";

String tag_json_obj = "json_obj_req";

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

conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);


{
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected()) {
} else {
Toast.makeText(getApplicationContext(), "No Internet Connection",
Toast.LENGTH_LONG).show();
}
}

btn_login = (Button) findViewById(R.id.btn_login);


btn_register = (Button) findViewById(R.id.btn_register);
txt_username = (EditText) findViewById(R.id.txt_username);
txt_password = (EditText) findViewById(R.id.txt_password);
txt_confirm_password = (EditText) findViewById(R.id.txt_confirm_password);

btn_login.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
intent = new Intent(RegisterActivity.this, LoginActivity.class);
finish();
startActivity(intent);
}
});

btn_register.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String username = txt_username.getText().toString();
String password = txt_password.getText().toString();
String confirm_password = txt_confirm_password.getText().toString();

14
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected()) {
checkRegister(username, password, confirm_password);
} else {
Toast.makeText(getApplicationContext(), "No Internet Connection",
Toast.LENGTH_SHORT).show();
}
Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);
startActivity(intent);
}
});

private void checkRegister(final String username, final String password, final


String confirm_password) {
pDialog = new ProgressDialog(this);
pDialog.setCancelable(false);
pDialog.setMessage("Register ...");
showDialog();

StringRequest strReq = new StringRequest(Request.Method.POST, url, new


Response.Listener<String>() {

@Override
public void onResponse(String response) {
Log.e(TAG, "Register Response: " + response.toString());
hideDialog();

try {
JSONObject jObj = new JSONObject(response);
success = jObj.getInt(TAG_SUCCESS);

// Check for error node in json


if (success == 1) {

Log.e("Successfully Register!", jObj.toString());

Toast.makeText(getApplicationContext(),
jObj.getString(TAG_MESSAGE),
Toast.LENGTH_LONG).show();

txt_username.setText("");
txt_password.setText("");
txt_confirm_password.setText("");

} else {
Toast.makeText(getApplicationContext(),
jObj.getString(TAG_MESSAGE),
Toast.LENGTH_LONG).show();

}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
}

}
}, new Response.ErrorListener() {

15
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Login Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();

hideDialog();

}
}) {

@Override
protected Map<String, String> getParams() {
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("username", username);
params.put("password", password);
params.put("confirm_password", confirm_password);

return params;
}

};

// Adding request to request queue


AppController.getInstance().addToRequestQueue(strReq, tag_json_obj);
}

private void showDialog() {


if (!pDialog.isShowing())
pDialog.show();
}

private void hideDialog() {


if (pDialog.isShowing())
pDialog.dismiss();
}

@Override
public void onBackPressed() {
intent = new Intent(RegisterActivity.this, LoginActivity.class);
finish();
startActivity(intent);
}

Dashboard.java
package com.example.recycleview;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

16
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewFlipper;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.example.recycleview.util.ServerAPI;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.text.DecimalFormat;
import java.util.ArrayList;

public class DasboardActivity extends AppCompatActivity implements


ProdukAdapter.ItemClickListener {
RecyclerView mRecyclerview;
RecyclerView.Adapter mAdapter;
RecyclerView.LayoutManager mManager;
ArrayList<Produk> mItems;
Button btnInsert, btnDelete;
ProgressDialog pd;
private SharedPreferences mPreferences;
private ProdukAdapter adapter;
private String sharedPrefFile = "com.example.recycleview";
private ArrayList<Produk> produkArrayList;
private ArrayList<String> listGambar;
ViewFlipper v_flipper;
public int tot = 0;
private int sumHarga = 0;
String dataProduk[] = null;
String dS[] = null;
TextView txt_id, txt_username;
String id, username;
SharedPreferences sharedpreferences;

public static final String TAG_ID = "id";


public static final String TAG_USERNAME = "username";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dasboard);
txt_id = (TextView) findViewById(R.id.txt_id);
txt_username = (TextView) findViewById(R.id.txt_username);
sharedpreferences = getSharedPreferences(LoginActivity.my_shared_preferences,
Context.MODE_PRIVATE);
id = getIntent().getStringExtra(TAG_ID);
username = getIntent().getStringExtra(TAG_USERNAME);
//image untuk slider, flipper
int images[] = {R.drawable.a_bunga2,
R.drawable.bibit_2, R.drawable.anggrek_ka
, R.drawable.kampung_anggrek};
v_flipper = findViewById(R.id.v_flipper);

17
for (int i = 0; i < images.length; i++) {
fliverImages(images[i]);
}
for (int image : images)
fliverImages(image);
mRecyclerview = (RecyclerView)
findViewById(R.id.recycler_view);
pd = new ProgressDialog(DasboardActivity.this);
mItems = new ArrayList<>();
mPreferences = getSharedPreferences(sharedPrefFile, MODE_PRIVATE);
// Membaca Semua Barang
loadJson();
//mManager = newLinearLayoutManager(MainActivity.this,
LinearLayoutManager.VERTICAL,false);
//mRecyclerview.setLayoutManager(mManager);
mAdapter = new ProdukAdapter(mItems);
adapter = new ProdukAdapter(mItems);
//mRecyclerview.setAdapter(mAdapter);
//GRID 2 kolom
GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
//STAGGER 4 KOLOM
// StaggeredGridLayoutManager llm=newStaggeredGridLayoutManager(4,
StaggeredGridLayoutManager.VERTICAL);
mRecyclerview.setLayoutManager(layoutManager);
mRecyclerview.setAdapter(adapter);
//mAdapter.setClickListener(this);
adapter.setClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to theaction bar
// if it is present.
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The actionbar will
// automatically handle clicks on the Home/Upbutton, so long
// as you specify a parent activity inAndroidManifest.xml.
int id2 = item.getItemId();

//noinspection SimplifiableIfStatement
if (id2 == R.id.miMessage) {
Uri urisms = Uri.parse("smsto:6285712032051");
Intent sms = new Intent(Intent.ACTION_SENDTO, urisms);
sms.putExtra("sms_body", "Ini Pesan");
startActivity(sms);
return true;
}
if (id2 == R.id.miPhone) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" +
"082134772921"));
startActivity(intent);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
return true;
}

if (id2 == R.id.miLocation) {

18
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
// Using the coordinates for Google headquarters.
String data = getString(R.string.google_mtv_coord_zoom12);
intent.setData(Uri.parse(data));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
return true;
}

if (id2 == R.id.miUpdate) {
Intent intent = new Intent(this, UpdateActivity.class);
startActivity(intent);
return true;
}

if (id2 == R.id.miLogOut) {
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean(LoginActivity.session_status, false);
editor.putString(TAG_ID, null);
editor.putString(TAG_USERNAME, null);
SharedPreferences.Editor preferencesEditor = mPreferences.edit();
preferencesEditor.clear().apply();
Toast.makeText(this, "Anda Berhasil LogOut", Toast.LENGTH_LONG).show();
editor.commit();

Intent intent = new Intent(this, MainActivity.class);


startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
//noinspection SimplifiableIfStatement

public void postTotals() {


TextView txtTot = (TextView)
findViewById(R.id.totalPrice);
DecimalFormat decimalFormat = new
DecimalFormat("#,##0.00");
txtTot.setText("Rp. " + decimalFormat.format(tot));

public void onClick(View view, int position) {


final Produk mhs = mItems.get(position);
switch (view.getId()) {
case R.id.nm_brg:
Intent i = new Intent(this, DetailActivity.class);
startActivity(i);
return;
case R.id.image:
tot = tot + Integer.parseInt(mhs.getHarga());
Toast.makeText(this, "gambare....." +
mhs.getNama(), Toast.LENGTH_SHORT).show();
postTotals();
return;
default:
Toast.makeText(this, "lainnya..... -> " +
mhs.getNama() + " Rp. " + tot, Toast.LENGTH_SHORT).show();
break;
}

19
}
private void loadJson()
{
pd.setMessage("Mengambil Data");
pd.setCancelable(false);
pd.show();
JsonArrayRequest reqData = new
JsonArrayRequest(Request.Method.POST,
ServerAPI.URL_DATA, null,
new Response.Listener<JSONArray>() {
@Override

public void onResponse(JSONArray response) {


pd.cancel();
Log.d("volley", "response : " +
response.toString());
for (int i = 0; i <
response.length(); i++) {
try {
JSONObject data = response.getJSONObject(i);
Produk md = new Produk();
md.setKode(data.getString("kd_brg"));
md.setNama(data.getString("nm_brg"));
md.setHarga(data.getString("harga"));
md.setImg(data.getInt("image"));

mItems.add(md);

} catch (JSONException e) {
e.printStackTrace();
}
}
//mAdapter.notifyDataSetChanged();
adapter.notifyDataSetChanged();
}
},
new Response.ErrorListener() {
@Override
public void
onErrorResponse(VolleyError error) {
pd.cancel();
Log.d("volley", "error : " +
error.getMessage());
}
});

com.example.recycleview.util.AppController.getInstance().addToRequestQueue(reqData);
}

public void ambildata() {


listGambar = new ArrayList<String>();
listGambar.add("anggrek1");
listGambar.add("anggrek2");
listGambar.add("anggrek3");
listGambar.add("anggrek4");
listGambar.add("anggrek5");
}

public void checkout(View view) {


DecimalFormat decimalFormat = new
DecimalFormat("#,##0.00");
Toast.makeText(this, "Total Rp. " +
decimalFormat.format(tot), Toast.LENGTH_SHORT).show();

20
sumHarga = tot ;
SharedPreferences.Editor preferencesEditor = mPreferences.edit();
preferencesEditor.putInt("total", sumHarga);
preferencesEditor.apply();
Intent intent = new Intent(this, PembayaranActivity.class);
startActivity(intent);
}

public void fliverImages(int images) {


ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(images);
v_flipper.addView(imageView);
v_flipper.setFlipInterval(4000);
v_flipper.setAutoStart(true);

v_flipper.setInAnimation(this, android.R.anim.slide_in_left);
v_flipper.setOutAnimation(this, android.R.anim.slide_out_right);
}

Produk.java
package com.example.recycleview;

public class Produk {


private String kode;
private String nama;
private String harga;
private int img;
public Produk(){}
public Produk(String kode, String nama, String
harga,int img) {
this.kode = kode;
this.nama = nama;
this.harga = harga;
this.img=img;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getKode() {
return kode;
}
public void setKode(String kode) {
this.kode = kode;
}
public String getHarga() {
return harga;
}
public void setHarga(String harga) {
this.harga = harga;
}
public void setImg(int img) {
this.img = img;
}
public int getImg() {
return img;
}
}

21
PembayaranActivity.java
package com.example.recycleview;

import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import javax.net.ssl.HttpsURLConnection;

public class PembayaranActivity extends AppCompatActivity {


private Button buttonTambah;
private EditText _totTrans;
private EditText _totBayar;
private EditText _totKembali;
private EditText _namaPembeli;
private EditText _almtPembeli;

String GetTrans, GetBayar, GetKembali, GetNamaPembeli, GetAlamat;

//PHP
String Nama_Pembeli = "Nama_Pembeli";
String Alamat_Pembeli = "Alamat_Pembeli";
String Total_Transaksi = "Total_Transaksi";
String Total_Bayar = "Total_Bayar";
String Kembali = "Kembali";
ProgressDialog progressDialog ;

HttpURLConnection httpURLConnection ;

URL url;

OutputStream outputStream;

BufferedWriter bufferedWriter ;

int RC ;

BufferedReader bufferedReader ;

StringBuilder stringBuilder;
boolean check = true;

private SharedPreferences mPreferences;

22
private String sharedPrefFile = "com.example.recycleview";
private int totTrans;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pembayaran);

buttonTambah = (Button)findViewById(R.id.buttonTambah);

_totTrans = findViewById(R.id.totTrans);
_totBayar = findViewById(R.id.totBayar);
_totKembali = findViewById(R.id.totKembali);
_namaPembeli = findViewById(R.id.namapem);
_almtPembeli = findViewById(R.id.almtpem);
mPreferences = getSharedPreferences(sharedPrefFile, MODE_PRIVATE);
totTrans = mPreferences.getInt("total", 0);
_totTrans.setText(Integer.toString(totTrans));

buttonTambah.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
GetTrans = _totTrans.getText().toString();
GetBayar = _totBayar.getText().toString();
GetKembali = _totKembali.getText().toString();
GetNamaPembeli = _namaPembeli.getText().toString();
GetAlamat = _almtPembeli.getText().toString();

int trans = Integer.parseInt(GetTrans);


int bayar = Integer.parseInt(GetBayar);
int kembali = Integer.parseInt(GetKembali);

if(GetNamaPembeli.trim().equals("")){
Toast.makeText(getApplicationContext(), "Kolom Tidak Boleh
Kosong", Toast.LENGTH_SHORT).show();
}
if(!GetNamaPembeli.trim().equals("") && !GetBayar.trim().equals("")){
Intent pindah = new
Intent(getApplicationContext(),PembayaranActivity.class);
pindah.putExtra("Nama_Pembeli", GetNamaPembeli.toString());
pindah.putExtra("Total_Transaksi", trans);
pindah.putExtra("Total_Bayar", bayar);
pindah.putExtra("Kembali", kembali);
pindah.putExtra("Alamat_Pembeli", GetAlamat.toString());
startActivity(pindah);
finish();
tambahKeranjang();
}
}
});
}
public void tambahKeranjang(){
class AsyncTaskUploadClass extends AsyncTask<Void,Void,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(PembayaranActivity.this,"Proses
Menambahkan ke Keranjang","Mohon menunggu",false,false);
}

@Override
protected void onPostExecute(String string1) {
super.onPostExecute(string1);
progressDialog.dismiss();

23
Toast.makeText(PembayaranActivity.this,string1,Toast.LENGTH_SHORT).show();
}

@Override
protected String doInBackground(Void... params) {
PembayaranActivity.ImageProcessClass imageProcessClass = new
ImageProcessClass();
HashMap<String,String> HashMapParams = new HashMap<String,String>();

HashMapParams.put(Nama_Pembeli, GetNamaPembeli);
HashMapParams.put(Total_Transaksi, GetTrans);
HashMapParams.put(Total_Bayar, GetBayar);
HashMapParams.put(Kembali, GetKembali);
HashMapParams.put(Alamat_Pembeli, GetAlamat);

String FinalData =
imageProcessClass.ImageHttpRequest("http://192.168.43.187/PembayaranActivity.php",
HashMapParams);
return FinalData;
}
}
AsyncTaskUploadClass AsyncTaskUploadClassOBJ = new AsyncTaskUploadClass();
AsyncTaskUploadClassOBJ.execute();
}

public class ImageProcessClass{

public String ImageHttpRequest(String requestURL,HashMap<String, String>


PData) {
StringBuilder stringBuilder = new StringBuilder();
try {
url = new URL(requestURL);
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setReadTimeout(20000);
httpURLConnection.setConnectTimeout(20000);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
outputStream = httpURLConnection.getOutputStream();

bufferedWriter = new BufferedWriter( new


OutputStreamWriter(outputStream, "UTF-8"));
bufferedWriter.write(bufferedWriterDataFN(PData));
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();

RC = httpURLConnection.getResponseCode();

if (RC == HttpsURLConnection.HTTP_OK) {
bufferedReader = new BufferedReader(new
InputStreamReader(httpURLConnection.getInputStream()));
stringBuilder = new StringBuilder();
String RC2;
while ((RC2 = bufferedReader.readLine()) != null){
stringBuilder.append(RC2);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return stringBuilder.toString();

24
}

private String bufferedWriterDataFN(HashMap<String, String> HashMapParams)


throws UnsupportedEncodingException {
stringBuilder = new StringBuilder();
for (Map.Entry<String, String> KEY : HashMapParams.entrySet()) {
if (check) {
check = false;
} else {
stringBuilder.append("&");
}
stringBuilder.append(URLEncoder.encode(KEY.getKey(), "UTF-8"));
stringBuilder.append("=");
stringBuilder.append(URLEncoder.encode(KEY.getValue(), "UTF-8"));
}
return stringBuilder.toString();
}
}

public void bayar(View view) {


if(checkInputKosong(_totBayar.getText().toString())){
Toast.makeText(this, "Input Tidak Boleh Kosong",
Toast.LENGTH_LONG).show();
return;
}else {
int totBayar = Integer.parseInt(_totBayar.getText().toString());
if(totBayar > totTrans) {
int kembali = totBayar - totTrans;
_totKembali.setText(Integer.toString(kembali));
}else {
Toast.makeText(this, "Total Bayar Tidak Mencukupi",
Toast.LENGTH_LONG).show();
}
}
}

public boolean checkInputKosong(String a) {


if(a.equals("")) {
return true;
}
return false;
}
}

25
26
27
28
29
Penutup
Aplikasi Kampung Anggrek berbasis android ini masih dalam tahap pengembangan sehingga
belum dapat dipublikasikan. Dari aplikasi yang dibuat terdapat 3 tabel yang digunakan yaitu: Tabel
barang (ppb), Tabel User (users), dan Tabel Transaksi (bayar). Data-data dalam tabel nantinya
akan digunakan juga dalam web service yang dikelola oleh admin jadi antara aplikasi android dan
web service saling terhubung.

30

Anda mungkin juga menyukai