0% menganggap dokumen ini bermanfaat (0 suara)
401 tayangan5 halaman

Membuat Absensi Berbasis Android MySQL

Klas Konfigurasi berisi URL dan kunci untuk mengirim permintaan ke skrip PHP. Klas RequestHandler berisi metode untuk mengirim permintaan HTTP POST beserta parameternya ke server. Klas ScanActivity menangani proses scan QR code, menampilkan hasilnya, dan mengirim data absensi ke server melalui metode asynctask. Format data QR terdiri atas mata pelajaran dan ruang. Skrip PHP di server digunakan untuk koneksi database dan menerima serta menyimpan data absensi ke database.

Diunggah oleh

Slamet Budi Santoso
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
401 tayangan5 halaman

Membuat Absensi Berbasis Android MySQL

Klas Konfigurasi berisi URL dan kunci untuk mengirim permintaan ke skrip PHP. Klas RequestHandler berisi metode untuk mengirim permintaan HTTP POST beserta parameternya ke server. Klas ScanActivity menangani proses scan QR code, menampilkan hasilnya, dan mengirim data absensi ke server melalui metode asynctask. Format data QR terdiri atas mata pelajaran dan ruang. Skrip PHP di server digunakan untuk koneksi database dan menerima serta menyimpan data absensi ke database.

Diunggah oleh

Slamet Budi Santoso
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 5

konfigurasi.

java
class konfigurasi {
//Dibawah ini merupakan Pengalamatan dimana Lokasi Skrip CRUD PHP disimpan
//PENTING! JANGAN LUPA GANTI IP SESUAI DENGAN IP KOMPUTER DIMANA DATA PHP BERADA
static final String URL_ADD="http://192.168.1.6/absensi/inputAbsensi.php";

//Berikut ini Kunci yang digunakan untuk mengirim permintaan ke Skrip PHP, sesuaikan kebutuhan
static final String KEY_NISN = "nisn";
static final String KEY_MAPEL = "mapel";
static final String KEY_RUANG = "ruang";

RequestHandler.java
public class RequestHandler {
//Metode Untuk mengirim httpPostRequest
//Metode ini mengambil 2 Argumen
//Pertama adalah URL dari Skrip yang digunakan untuk mengirimkan permintaan
//Kedua adalah HashMap dengan nilai pasangan nama berisi data yang akan dikirim dengan permintaan
String sendPostRequest(String requestURL,
HashMap<String, String> postDataParams) {
//Membuat URL
URL url;

//Objek StringBuilder untuk menyimpan pesan diambil dari server


StringBuilder sb = new StringBuilder();
try {
url = new URL(requestURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setDoInput(true);
conn.setDoOutput(true);

OutputStream os = conn.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);

BufferedWriter bufferedWriter = new BufferedWriter(osw);


String postData = getPostDataString(postDataParams);
bufferedWriter.write(postData);

bufferedWriter.flush();
bufferedWriter.close();
os.close();

int responseCode = conn.getResponseCode();


if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
sb = new StringBuilder();
String response;
//Reading server response
while ((response = br.readLine()) != null){
sb.append(response);
}
}

} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}

private String getPostDataString(HashMap<String, String> params)


throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
for (Map.Entry<String, String> entry : params.entrySet()) {
if (first)
first = false;
else
result.append("&");

result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}

return result.toString();
}
}

ScanActivity
Sesuaikan kebutuhan
public class ScanActivity extends AppCompatActivity implements View.OnClickListener{

private TextView tvMapel, tvLokasi;

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

// initialize View Object


Button buttonScan = findViewById(R.id.buttonScan);
Button buttonAbsen = findViewById(R.id.buttonAbsen);
tvMapel = findViewById(R.id.tvMapel);
tvLokasi = findViewById(R.id.tvLokasi);

// attaching onclickListener
buttonScan.setOnClickListener(this);
buttonAbsen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
doAbsensi(); //panggil perintah absensi
}
});

@Override
public void onClick(View v) {
// inisialisasi IntentIntegrator(scanQR) qr code scanner object
IntentIntegrator intentIntegrator = new IntentIntegrator(this);
intentIntegrator.initiateScan();
}

// Mendapatkan hasil scan


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null){
if (result.getContents() == null){
Toast.makeText(this, "Hasil tidak ditemukan", Toast.LENGTH_SHORT).show();
}else{
// jika qrcode berisi data
String teksData = result.getContents(); //ambil konten dari QR Code
String[] arrayData = teksData.split("/"); //split data dengan pemisah garis-miring

tvMapel.setText(arrayData[0]);
tvLokasi.setText(arrayData[1]);
}
}else{
super.onActivityResult(requestCode, resultCode, data);
}
}

//Dibawah ini merupakan perintah untuk Mengirim data absensi (CREATE)


private void doAbsensi(){

@SuppressLint("StaticFieldLeak")
class DoAbsensi extends AsyncTask<Void,Void,String> {

@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Toast.makeText(ScanActivity.this,s,Toast.LENGTH_LONG).show();
}

@Override
protected String doInBackground(Void... v) {
String nisn = "E221100"; //nilai ini bisa didapat dari login user
String mapel = tvMapel.getText().toString(); //ini dari tampilan textView
String ruang = tvLokasi.getText().toString(); //ini juga dari tampilan textView

HashMap<String,String> params = new HashMap<>();

params.put(konfigurasi.KEY_NISN,nisn);
params.put(konfigurasi.KEY_MAPEL,mapel);
params.put(konfigurasi.KEY_RUANG,ruang);

Log.i("parameter1", nisn + "," + mapel + "," + ruang);

RequestHandler rh = new RequestHandler();


String res = rh.sendPostRequest(konfigurasi.URL_ADD, params);

//Log.i("parameter2", konfigurasi.URL_ADD);
return res;
}
}

DoAbsensi doa = new DoAbsensi();


doa.execute();
}

Format QR Code

Format data pada QR dibuat lebih sederhana, supaya tidak perlu menggunakan JSON.
activity_scan.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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context=".ScanActivity">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mata Pelajaran" />

<TextView
android:id="@+id/tvMapel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="nama matapelajaran"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ruang" />

<TextView
android:id="@+id/tvLokasi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="lokasi kelas"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:orientation="vertical">

<Button
android:id="@+id/buttonScan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Scan QR Code" />
<Button
android:id="@+id/buttonAbsen"
android:layout_width="match_parent"
android:layout_height="wrap_content"

android:text="Submit Absen" />


</LinearLayout>

</RelativeLayout>
Server
Lokasi API di c:\xampp\htdocs\absensi. Sesuaikan kebutuhan.

koneksi.php
<?php
//Mendefinisikan Konstanta
define('HOST','localhost');
define('USER','root');
define('PASS','');
define('DB','absensi');

//membuat koneksi dengan database


$conn = mysqli_connect(HOST,USER,PASS,DB) or die('Gagal terhubung ke server database');
?>

inputAbsensi.php
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){

//Mendapatkan Nilai Variable


$nisn = $_POST['nisn'];
$mapel = $_POST['mapel'];
$ruang = $_POST['ruang'];

//Pembuatan Syntax SQL


$sql = "INSERT INTO absensi VALUES ('',date(now()), '$nisn', '$mapel', '$ruang')";

//Import File Koneksi database


require_once('koneksi.php');

//Eksekusi Query database


if(mysqli_query($conn,$sql)){
echo 'Berhasil Input Absensi';
}else{
echo 'Gagal Input Absensi';
}

mysqli_close($conn);
}
?>

Anda mungkin juga menyukai