62
DAFTAR PUSTAKA
Ariani Sukamto, Rosa. 2009. Black-Box Testing. http://julian.unsri.ac.id. Diakses pada tanggal 7 Agustus 2017.
Belen Cruz Zapata, 2015. Pengertian Android Studio
http://eprints.akakom.ac.id. Diakses Pada 02 Juni 2018 Haryanto, 1999 pengertian flowchart
http://elib.unikom.ac.id. Diakses Pada 27 Mei 2018
Jogiyanto. 2004. Pengenalan Komputer, Dasar Ilmu Komputer, Pemrograman Sistem Informasi dan Intelegensi Buatan.
Kasman, A Dharma. 2013. Kolaborasi Dahsyat Android dengan PHP dan MYSQL.
Nugroho, Adi. 2004. Konsep Pengembangan Sistem Basis data http://elib.unikom.ac.id. Diakses Pada 26 Mei 2018
Rosyida, Hanifah. 2015. Balsamiq Mockup. http://enggar.net. Diakses pada tanggal 04 Agustus 2018.
Safaat, Nazruddin. 2012.Pemrograman AplikasiMobile Smartphone dan Tablet PC Berbasis Android.
http://elib.unikom.ac.id. Diakses Pada 05 Juni 2018 Salahudin dan Sukamto, 2013. UML (Unifield Modeling Language)
http://ejournal.bsi.ac.id. Diakses Pada 26 Mei 2018 Sholikhin dan Riasti, 2013 pengertian php
http://download.portalgaruda.org. Diakses Pada 26 Mei 2018
LAMPIRAN 1
KUISIONER
LAMPIRAN 2
SOURCE CODE
Source Code LoginActivity.java
LoginActivity.java
package com.example.indra_act.akasimonsi_nfc;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import
com.example.indra_act.akasimonsi_nfc.Firebase.SharedPrefManag er;
import
com.example.indra_act.akasimonsi_nfc.ServerSide.MySingleton;
import com.example.indra_act.akasimonsi_nfc.ServerSide.URL;
import
com.example.indra_act.akasimonsi_nfc.ServerSide.VolleyHandler
;
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;
import com.valdesekamdem.library.mdtoast.MDToast;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class LoginActivity extends AppCompatActivity {
EditText username;
EditText password;
SessionManager sessionManager;
ProgressDialog progressDialog;
FirebaseAuth firebaseAuth;
String token = null;
Button login;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sessionManager = new
SessionManager(getApplicationContext());
firebaseAuth =FirebaseAuth.getInstance();
token =
SharedPrefManager.getInstance(LoginActivity.this).getDeviceTo ken();
username = findViewById(R.id.email);
password = findViewById(R.id.et_password);
login = findViewById(R.id.btn_login);
login.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { login();
} });
}
public void login() {
if
(!Patterns.EMAIL_ADDRESS.matcher(username.getText()).matches(
) && password.length() < 6 ) {
MDToast.makeText(this, "Masukan Email dan Kata Sandi Yang Benar", Toast.LENGTH_SHORT, MDToast.TYPE_WARNING).show();
} else if
(!Patterns.EMAIL_ADDRESS.matcher(username.getText()).matches(
)) {
MDToast.makeText(this, "Masukan Email yang Benar!", Toast.LENGTH_SHORT,MDToast.TYPE_WARNING).show();
} else if (password.length() < 6) {
MDToast.makeText(this, "Masukan Kata Sandi (Minimal 6 Karakter)!", Toast.LENGTH_SHORT,MDToast.TYPE_WARNING).show();
} else {
progresDialog();
goLogin();
} }
public void goLogin() {
StringRequest stringRequest = new
StringRequest(Request.Method.POST, URL.URL_LOGIN, new Response.Listener<String>() {
@Override
public void onResponse(String response) { Log.d("data", response);
progressDialog.dismiss();
try {
final JSONObject respons = new JSONObject(response);
int status = respons.getInt("STATUS");
final String message = respons.getString("MESSAGE");
if (status == 200) {
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
MDToast mdToast = MDToast.makeText(LoginActivity.this, "Email Atau Password Tidak Sesuai!", Toast.LENGTH_SHORT, MDToast.TYPE_ERROR);
mdToast.show();
}
} catch (JSONException e) { e.printStackTrace();
MDToast mdToast =
MDToast.makeText(LoginActivity.this, e.getMessage(), Toast.LENGTH_SHORT, MDToast.TYPE_ERROR);
mdToast.show();
}
}
}, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError error) { VolleyHandler handler = new VolleyHandler();
handler.VolleyHandler(LoginActivity.this, error);
progressDialog.dismiss();
} }){
@Override
protected Response<String>
parseNetworkResponse(NetworkResponse response) { if (response.headers == null)
{
// cant just set a new empty map because the member is final.
response = new NetworkResponse(
response.statusCode, response.data,
Collections.<String,
String>emptyMap(), // this is the important line, set an empty but non-null map.
response.notModified,
response.networkTimeMs);
}
return super.parseNetworkResponse(response);
}
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("USERNAME", username.getText().toString());
params.put("PASSWORD", password.getText().toString());
params.put("TOKEN", token);
Log.d("params", params.toString());
return params;
} };
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
URL.TIMEOUT_ACCESS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
MySingleton.getInstance(getApplicationContext()).addToRequest Queue(stringRequest);
}
private void progresDialog() {
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Memuat...");
progressDialog.setIndeterminate(false);
progressDialog.setCancelable(false);
progressDialog.show();
}
Source Code Tampilan_login.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/background"
tools:context=".LoginActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:padding="16dp"
android:orientation="vertical">
<LinearLayout
android:layout_gravity="center"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:padding="16dp"
android:orientation="horizontal">
<ImageView
android:layout_width="50dp"
android:layout_gravity="center"
android:layout_height="50dp"
android:src="@drawable/ic_nfc"/>
<TextView
android:layout_marginLeft="10dp"
android:layout_marginTop="@dimen/activity_horizontal_margin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textColor="#fff"
android:fontFamily="sans-serif"
android:layout_marginBottom="@dimen/activity_horizontal_margin"
android:text="LOGIN"/>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/white">
<EditText
android:id="@+id/email"
android:layout_marginTop="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:textColorHint="#80FFFFFF"
android:padding="8dp"
android:inputType="textEmailAddress"
android:layout_marginBottom="@dimen/activity_horizontal_margin"
android:background="@drawable/bg_rectangle_edittext"
android:textColor="#80FFFFFF"/>
</android.support.design.widget.TextInputLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/white"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/et_password"
android:layout_marginTop="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:textColorHint="#80FFFFFF"
android:inputType="textPassword"
android:padding="8dp"
android:layout_marginBottom="20dp"
android:background="@drawable/bg_rectangle_edittext"
android:textColor="#80FFFFFF"/>
</android.support.design.widget.TextInputLayout>
</RelativeLayout>
<Button
android:id="@+id/btn_login"
android:layout_marginTop="16dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:text="LOG IN"
android:background="@drawable/bg_rectangle_button"/>
</LinearLayout>
</RelativeLayout>
Source Code Daftar_kartu.java
package com.example.indra_act.akasimonsi_nfc.Daftar_kartu;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import
com.example.indra_act.akasimonsi_nfc.Adapter.ServiceHandle r;
import com.example.indra_act.akasimonsi_nfc.R;
import com.example.indra_act.akasimonsi_nfc.data.Data_Mahasiswa;
public class Daftar_kartu extends Activity {
private static String
URL="http://apdosi.dyno8.net/Nfc/mahasiswa";
ProgressDialog pDialog;
JSONArray JsonArraySiswa = null;
List<String> valueIdSiswa = new ArrayList<String>();
List<String> valueNamaSiswa = new ArrayList<String>();
Spinner spinnerSiswa;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daftar_kartu);
spinnerSiswa = findViewById(R.id.spinner1);
}
public void LoadData(View v){
// Menggunakan async task untuk "ngeload" data JSON new getDataSiswa().execute();
}
private class getDataSiswa extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() { super.onPreExecute();
pDialog = new ProgressDialog(Daftar_kartu.this);
pDialog.setMessage("Mohon Tunggu...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) { //Membuat Service "ServiceHandler"
ServiceHandler sh = new ServiceHandler();
// Memanggil URL untuk mendapatkan respon data
String jsonStr = sh.makeServiceCall(URL, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null) { try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Mendapatkan data Array JSON
JsonArraySiswa = jsonObj.getJSONArray("");
ArrayList<Data_Mahasiswa> listDataSiswa = new ArrayList<Data_Mahasiswa>();
listDataSiswa.clear();
//Melakukan perulangan untuk memecah data for (int i = 0; i < JsonArraySiswa.length();
i++) {
JSONObject obj =
JsonArraySiswa.getJSONObject(i);
Data_Mahasiswa data_mahasiswa = new Data_Mahasiswa();
data_mahasiswa.setId_mahasiswa(obj.getString("ID_MAHASISWA
"));
data_mahasiswa.setNama_mahasiswa(obj.getString("NAMA_MAHAS ISWA"));
listDataSiswa.add(data_mahasiswa);
System.out.println("data
"+data_mahasiswa.getId_mahasiswa());
}
valueIdSiswa = new ArrayList<String>();
valueNamaSiswa = new ArrayList<String>();
for (int i = 0; i < listDataSiswa.size();
i++) {
valueIdSiswa.add(listDataSiswa.get(i).getId_mahasiswa());
valueNamaSiswa.add(listDataSiswa.get(i).getNama_mahasiswa(
));
System.out.println("data 2
"+listDataSiswa.get(i).getNama_mahasiswa());
}
System.out.println("id siswa +
"+valueIdSiswa.get(0));
} catch (JSONException e) { e.printStackTrace();
} } else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}
return null;
}
@Override
protected void onPostExecute(Void result) { super.onPostExecute(result);
// Dismiss the progress dialog if (pDialog.isShowing())
pDialog.dismiss();
// Membuat adapter untuk spinner
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(Daftar_kartu.this,
android.R.layout.simple_spinner_item, valueNamaSiswa);
spinnerAdapter.setDropDownViewResource(android.R.layout.si mple_spinner_dropdown_item);
//Mengaitkan adapter spinner dengan spinner yang ada di layout
spinnerSiswa.setAdapter(spinnerAdapter);
spinnerSiswa.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?>
parentView, View selectedItemView, int position, long id) { String idSiswa = valueIdSiswa.get(position);
String namaSiswa =
valueNamaSiswa.get(position);
Toast.makeText(Daftar_kartu.this, "Anda Memilih ID SISWA: "+idSiswa+", Nama: "+namaSiswa, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?>
parentView) {
// your code here }
});
}
}
Source Code AdapterKartu.java
package com.example.indra_act.akasimonsi_nfc.Adapter;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.indra_act.akasimonsi_nfc.R;
import com.example.indra_act.akasimonsi_nfc.data.Data;
import com.example.indra_act.akasimonsi_nfc.data.DataKartu;
import com.example.indra_act.akasimonsi_nfc.data.Data_Mahasiswa;
import java.util.List;
public class AdapterKartu extends BaseAdapter { private Activity activity;
private LayoutInflater inflater;
private List<DataKartu> item;
public AdapterKartu(Activity activity, List<DataKartu> item) {
this.activity = activity;
this.item = item;
}
@Override
public int getCount() { return item.size();
}
@Override
public Object getItem(int location) { return item.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
//spiner list yang ada di regist baak
convertView =
inflater.inflate(R.layout.spinner_listid, null);
TextView level = (TextView)
convertView.findViewById(R.id.id);
DataKartu data;
data = item.get(position);
level.setText(data.getNama_mahasiswa());
return convertView;
} }
}
Activity_daftar_kartu.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:orientation="vertical"
tools:context=".Daftar_kartu.Daftar_kartu" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignRight="@+id/textView2"
android:layout_below="@+id/textView2"
android:layout_marginTop="41dp"
android:onClick="LoadData"
android:text="Tampilkan Data" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_alignRight="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="16dp"
android:text="Spinner Data Siswa"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1" />
</LinearLayout>
Data_Mahasiswa.java
package com.example.indra_act.akasimonsi_nfc.data;
public class Data_Mahasiswa {
private String id_mahasiswa;
private String nama_mahasiswa;
public String getId_mahasiswa() { return id_mahasiswa;
}
public void setId_mahasiswa(String id_mahasiswa) { this.id_mahasiswa = id_mahasiswa;
}
public String getNama_mahasiswa() { return nama_mahasiswa;
}
public void setNama_mahasiswa(String nama_mahasiswa) { this.nama_mahasiswa = nama_mahasiswa;
} }