• Tidak ada hasil yang ditemukan

BAB III PERANCANGAN SISTEM

3.5 Perancangan API

3.5.2 Perancangan API presensi

API presensi berfungsi sebagai akses dosen dan pegawai untuk memberikan status hadir pada sistem. Adapun data yang dikirim oleh aplikasi presensi Android adalah koordinat yang bersumber dari GPS, dan IMEI Android tersebut. Kemudian data tersebut akan dilakukan pengecekan satu per satu oleh API. Pengecekan berurutan tersebut meliputi pengecekan kelengkapan data (latitude, longitude, dan IMEI), kemudian dari data koordinat yang didapat dari

GPS smartphone dicek apakah benar user sedang berada dalam jangkauan kordinat tempat pekerjaan, lalu dari data IMEI Perangkat dicek apakah IMEI tersebut terdaftar sebagai pegawai.

Setelah melakukan pengecekan terhadap kordinat dan data pegawai kemudian dilakukan pengecekan terhadap waktu presensi apabila presensi dilakukan pada waktu pagi (pukul 06.00 WIB – 09.00 WIB), Maka data presensi akan ditambahkan kedalam database dan mengirimkan respon presensi datang berhasil. Apabila presensi dilakukan pada waktu sore (pukul 16.00 WIB – 23.59 WIB), maka data presensi akan ditambahkan kedalam database dan mengirimkan respon presensi pulang berhasil. Dan apabila presensi dilakukan diluar rentang waktu jam masuk atau pu jam pulang maka akan mendapatkan respon bahwa anda tidak dapat melakukan presensi karena anda tidak dalam waktu presensi. Untuk lebih jelas nya dapat dilihat pada diagram alir perancangan API presensi pada gambar 3.15 berikut.

Gambar 3.15 Flowchat perancangan API presensi 3.5.3 Perancangan API Registrasi

API registrasi berfungsi sebagai akses dosen dan pegawai untuk mendaftarkan Smartphone yang digunakan untuk melakukan proses presensi. Adapun data yang diperlukan oleh API ini adalah nomor induk pegawai atau dosen sebagai identifikasi id pengguna, tempat lahir sebagai pertanyaan

tambahan dalam identifikasi pengguna, dan IMEI Smartphone. Kemudian data tersebut akan dilakukan pengecekan satu per satu oleh API registrasi. Pengecekan berurutan tersebut meliputi pengecekan kelengkapan data (nomor induk, tempat lahir, dan IMEI), kemudian pengecekan nomor induk apakah nomor induk tersebut sudah pernah melakukan registrasi atau status aktifasi pengguna masih ada. Kemudian pengecekan terhadap tempat lahir apakah tempat lahir pegawai tersebut sama dengan yang data pegawai. Lalu jika pengecekan telah berhasil maka pada database akan ditambahkan IMEI sebagai data. Untuk lebih jelas nya dapat dilihat pada diagram alir perancangan API presensi pada gambar 3.16 berikut.

Gambar 3.16 Flowchat perancangan API Registrasi

BAB IV

PENGUJIAN DAN ANALISIS 4.1 Pengujian Aplikasi Web

Pengujian sistem dilakukan untuk mengetahui sistem yang telah dibangun telah sesuai dengan perancangan yang dibuat dan memberikan hasil yang sesuai yang diharapkan yaitu sesuai dengan tujuan penelitian. Adapun pada pembuatan aplikasi sistem presensi dosen dan pegawai ini menggunakan metode pegujian alpha atau black box. Pengujian alpha atau black box merupakan metode pengujian yang berfokus pada kebutuhan

fungsional dari aplikasi. Pengujian black box dilakukan dengan fokus pada hasil keluaran yang diharapkan dari sistem yang diuji, apakah dapat berjalan sesuai yang diharapkan atau tidak. Adapun pengujian yang dilakukan meliputi pengujian fungsionalitas aplikasi Web seperti autentikasi (login), manajemen pegawai, dan lihat kehadiran. Pengujian lain yang dilakukan ialah pengujian API yang digunakan untuk menghubungkan sistem aplikasi presensi yang telah dirancang untuk Android dengan sistem presensi yang telah dirancang untuk Web.

4.1.1 Hasil Pengujian fungsionalitas aplikasi Web

Setelah melakukan pengujian aplikasi Web maka diperoleh hasil pengujian yang yang disusun berdasarkan pada fungsi-fungsi yang ada pada aplikasi Web. Hasil pengujian Alpha dari aplikasi Web dapat dilihat pada table.4.1

Tabel 4.1 Hasil Pengujian Alpha Aplikasi Web

NO Skenario Pengujian

Hasil yang diharapkan Hasil Pengujian 1 Login akun admin

menggunakan username dan password

Aplikasi masuk

kehalaman utama berhasil

2 Mengubah password admin Admin yang sudah login dapat mengubah

password

berhasil 3 Remember password Dapat mengingat sandi /

password berhasil

4 Logout akun admin Aplikasi akan kembali ke

menu login berhasil

5 Tambah pegawai baru Pegawai baru dapat ditambahkan kedalam database

berhasil 6 Edit / Update Pegawai lama Data pegawai dapat

diubah dan disimpan dalam database

berhasil 7 Pilih dan Hapus Pegawai Dapat menghapus data

pegawai yang dipilih berhasil 8 Lihat kehadiran pegawai Menampilkan daftar

kehadiran pegawai pada

Lihat status aktivasi pegawai Menampilkan daftar data pegawai dengan status aktivasi masing-masing pegawai

berhasil

11

Mengubah status aktivasi pegawai

4.1.2 Hasil Pengujian API

Pengujian selanjutnya adalah pengujian API, pengujian API dapat dilakukan dengan menggunakan software postman. Data yang akan digunakan untuk dikirim pada pengujian ini yaitu data sampel pegawai dalam kondisi sebenarnya didapatkan dari aplikasi sistem presensi pada perangkat bergerak dan hasilnya akan berupa response yang diberikan dari API merupakan data yang akan digunakan pada aplikasi sistem presensi pada perangkat bergerak yang telah dirancang sebelumnya. Berikut adalah hasil dari pengujian dari masing – masing API yang telah dibangun.

a. Hasil Pengujian API Registrasi

Pada pengujian API Registrasi ini menggunakan PUT sebagai metode pengiriman data. Kemudian akan dikirimkan data berupa nomor induk yang disimbolkan sebagai nomorInduk, IMEI perangkat bergerak yang disimbolkan presensi_devId, dan tempat lahir

yang disimbolkan dengan tempatlahir. Kemudian API akan memberikan respon berupa status, data, dam messege. Adapun jika pegawai atau dosen memasukkan nomor induk yang tidak terdaftar atau yang telah diregistrasi sebelumnya maka API akan mengeluarkan pesan bahwa regitrasi gagal. Hasil pengujian API resgiter dapat dilihat pada gambar 4.1 berikut.

Gambar 4.1 Hasil Pengujian API Registrasi

b. Hasil Pengujian API Presensi

Pada pengujian API presensi ini menggunakan POST sebagai metode pengiriman data. Kemudian akan dikirimkan data berupa lat yaitu singkatan dari latidude, lng yaitu singkatan dari longitude, dan IMEI perangkat bergerak yang disimbolkan presensi_devId.

Kemudian API akan memberikan respon berupa status, data, dan messege. Adapun data-data tersebut didapat setelah melakukan autentikasi fingerprint saat presensi, dan aplikasi telah mendapat izin untuk mengakses GPS dan Autentikasi Fingerprint. Pengisian presensi akan di sesuaikan dengan waktu pegawai melakukan presensi. Jika pegawai melakukan presensi pada pukul 06.00 WIB sampai 09.00 WIB maka akan mendapatkan respon berhasil presensi datang. Jika pegawai melakukan presensi pada pukul 16.00 WIB sampai 23.59 WIB maka akan mendapatkan respon berhasil presensi pulang. Apabila melakukan presensi diluar jam tersebut maka akan API akan merespon waktu presensi telah habis.

Hasil pengujian API presensi dapat dilihat pada gambar 4.2 (a) dan (b) berikut.

(a)

(b)

Gambar 4.2 Hasil Pengujian API Presensi (a) pada waktu pagi hari atau jam masuk (b) pada waktu sore hari atau jam pulang

4.2 Pengujian Aplikasi Android

Pengujian aplikasi Android merupakan pengujian yang bertujuan untuk mengetahui fungsi-fungsi pada sistem berjalan dengan baik dan sesuai dengan apa yang telah dirancang. Pengujian dilakukan cara menguji satu persatu fungsi yang ada pada aplikasi yang telah dirancang dengan menggunakan perangkat Smartphone yang berbeda-beda yang sudah mendukung fitur Fingerprint sensor dan GPS.

4.2.1 Pengujian fungsi Registrasi

Pengujian dilakukan pada beberapa pegawai yang sebelumnya sudah terdaftar pada sistem dan belum diregistrasi dengan pada aplikasi mobile. Pengujian dilakukan untuk mengetahui keberhasilan registrasi. Hasil pengujian dapat dilihat pada table 4.1 berikut:

Tabel 4.2 Hasil pengujian fungsi Registrasi

No Nomor Induk Hasil yang diharapkan Hasil yang dicapai 1 130402057

(a)

(b)

Gambar 4.3 Capture Packet data Request dan Response dari fungsi Registrasi (a) Request (b) Response

Pada gambar 4.3 (a) berisikan informasi antara lain: nama host yang di request adalah absensicerdas.web.id/api/register2 dengan menggunakan metode HTTP PUT yang memiliki request body yaitu: absensi_devId (IMEI), tempat lahir dan nomor induk.

Pada gambar 4.3 (b) berisikan informasi antara lain: response diberikan pada hari kamis, 11 april 2019 pukul 08:36 GMT. Adapun isi dari response tersebut antara lain:

sebuah status, data, dan messege. Semua Response dikirim dalam berntuk format JSON.

4.2.2 Pengujian fungsi Presensi

Pengujian dilakukan pada beberapa pegawai yang sebelumnnya sudah melakukan registrasi pada aplikasi mobile yang telah dirancang. Pengujian dilakukan untuk mengetahui keberhasilan pegawai/user melakukan pengisian kehadiran atau presensi menggunakan autentikasi fingerprint. Pengujian dilakukan pada waktu pagi / jam masuk kerja (06.00 WIB – 09.00 WIB) dan pada waktu sore / jam pulang kerja (16.00 WIB – 23.59 WIB) Hasil pengujian dapat dilihat pada table 4.3 dan 4.4 berikut:

Tabel 4.3 Hasil pengujian fungsi Presensi pada pagi hari / jam masuk No Nomor Induk Hasil yang diharapkan Hasil yang dicapai

1 130402057 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil 2 130402059 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil 3 141402051 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil 4 120402065 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil 5 110400501 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil

Tabel 4.4 Hasil pengujian fungsi Presensi pada sore hari / jam pulang No Nomor Induk Hasil yang diharapkan Hasil yang dicapai

1 130402057 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil 2 130402059 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil 3 141402051 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil 4 120402065 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil 5 110400501 Melakukan presensi menggunakan

fingerprint pada pagi hari Berhasil

(a)

(b)

Gambar 4.4 Capture Packet data Request dan Response dari fungsi Presensi (a) Request (b) Response

Pada gambar 4.4 (a) berisikan informasi antara lain: nama host yang di request adalah absensicerdas.web.id/api/absen2 dengan menggunakan metode HTTP POST yang memiliki request body yaitu: absensi_devId (IMEI, latitude dan lingitude.

Pada gambar 4.4 (b) berisikan informasi antara lain: response diberikan pada hari kamis, 11 april 2019 pukul 08:22 GMT. Adapun isi dari response tersebut antara lain:

sebuah status, data yaitu: hari, waktu melakukan presensi masuk, waktu melakukan presensi pulang, dan nama lengkap, serta sebuah messege. Semua Response dikirim dalam berntuk format JSON.

4.3 Pengujian Sistem a. Lokasi Pengujian

Pengujian ini dilakukan di lingkungan Fakultas Teknik Universitas Sumatera Utara.

Telah ditentukan beberapa titik koordinat acuan yang akan dibandingkan dengan koordinat yang didapat dari sensor GPS sebagai data. Adapun titik koordinat acuan dapat dilihat pada gambar 4.5 dan keterangan titik kordinat acuan dapat dilihat pada table 4.5 berikut.

Gambar 4.5 Titik kordinat acuan pengujian Tabel 4.5 Titik kordinat acuan pengujian

No Latitude Longitude Area Keterangan

1 3.561726 98.655690 Area 1 Gedung Administrasi Fakultas Teknik 2 3.561798 98.654843 Area 2 Gedung Departemen Teknik Elektro 3 3.561443 98.653654 Area 3 Gedung Magister Teknik Elektro

b. Alat yang digunakan

Adapun beberapa device atau smartphone yang digunakan pada skripsi ini, dimana setiap pengguna hanya bisa menggunakan satu smartphone saja. Daftar pengguna dan model smartphone dapat dilihat pada table 4.6 berikut.

Tabel 4.6 Daftar smartphone yang digunakan

4.3.1 Pengujian presensi dengan titik lokasi yang berbeda-beda

Pengujian dengan lokasi berbeda dilakukan dengan percobaan melakukan presensi pada 25 titik berbeda. Titik-titik lokasi pengujian tersebut dipilih secara acak yang tersebar di area-area yang masih dalam jangkauan boleh melakukan presensi maupun tidak dalam jangkauan presensi. Adapun beberapa titik lokasi pengujian tersebut dapat dilihat pada gambar 4.6 berikut.

130402057 Wirahadi Gumelar Xiaumi red 5 plus 8.1 (Oreo) 2

.

130402059 Randy Rizki S I Asus zenfone max pro m1 8.1 (Oreo) 3

.

141402051 Andhika Prasetyo, S.Kom Xiaomi redmi note 4x 7.0 (Nougat) 4

.

120402065 Muhammad Fadhlan Arizka S.T Pochophone F1 9.0 (Pie) 5

. 130402045 Rizka Afriyanti, S.T Sony Experia Performance

(XP) 7.0 (Nougat)

Gambar 4.6 Titik lokasi pengujian

Tabel 4.7 Keterangan beberapa titik lokasi pengujian No titik Latitude longitude jangkauan Presensi

(Di luar / Di dalam)

1 3.561681 98.654854 Di dalam

2 3.561853 98.655035 Di dalam

3 3.561914 98.654830 Di dalam

4 3.562131 98.654733 Di luar

5 3.561772, 98.655185 Di luar

6 3.561533, 98.655125 Di luar

7 3.561778, 98.655805 Di dalam

8 3.561840, 98.655682 Di dalam

9 3.561705, 98.655497 Di dalam

10 3.561725, 98.656044 Di luar

11 3.561578, 98.653692 Di dalam 12 3.561422, 98.653823 Di dalam

13 3.561576, 98.654095 Di luar

14 3.561558, 98.653487 Di luar

16 3.561637 98.653903 Di dalam

17 3.561833 98.654574 Di dalam

18 3.561908 98.654831 Di luar

19 3.561716 98.655363 Di dalam

20 3.561840 98.655612 Di luar

21 3.561658, 98.654729 Di dalam 22 3.561646, 98.654996 Di dalam 23 3.561474, 98.653565 Di dalam 24 3.561649, 98.655640 Di dalam 25 3.561861, 98.654648 Di dalam

Pada pengujian ini akan digunakan beberapa ketetapan untuk menentukan tingkat keberhasilan sistem yaitu:

True Positive (TP) : Kondisi dimana pengguna melakukan presensi didalam area presensi dan dianggap oleh sistem pengguna didalam area presensi

True Negative (TN) : Kondisi dimana pengguna melakukan presensi didalam area presensi dan dianggap oleh sistem pengguna diluar area presensi

False Positive (FP) : Kondisi dimana pengguna melakukan presensi diluar area presensi dan dianggap oleh sistem pengguna didalam area presensi

False Negative (FN) : Kondisi dimana pengguna melakukan presensi diluar area presensi dan dianggap oleh sistem pengguna diluar area presensi

Hasil pengujian presensi dibeberapa titik lokasi yang berbeda-beda dapat dilihat pada table 4.8 berikut.

Tabel 4.8 Hasil pengujian presensi dibeberapa titik lokasi

Dari hasil pengujian presensi pada lokasi yang berbeda-beda, maka dapat diperoleh tingkat sensitifitas, spesifisitas, dan akurasi dalam sistem presensi dengan membandingkan data hasil yang diharapkan dengan data yang tercapai atau data hasil pengujian dibanding dengan kondisi sebenarnya dengan yang ditunjukkan pada Tabel 4.9 Dari Tabel tersebut diperoleh:

True Positive (TP) : 13 False Positif (FP) : 7 True Negatif (TN) : 3 False Negatif (FN) : 2

Tabel 4.9 Hasil Pengujian vs Kondisi Sebenarnya Hasil Pengujian

Total Positif Negatif

Kondisi Sebenarnya

true 13 3 16

false 2 7 9

Total 15 10 25

a. Sensitifitas/True Positive Rate (TPR) Sistem

Untuk mengetahui Sensitifitas sistem dapat diketahui dari perbandingan True Positive dengan jumlah True Positive dan False Positive

𝑠𝑒𝑛𝑠𝑖𝑡𝑖𝑓𝑖𝑡𝑎𝑠 = ⁡ 𝑡𝑟𝑢𝑒⁡𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑒

𝑡𝑟𝑢𝑒⁡𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑒 + 𝑓𝑎𝑙𝑠𝑒⁡𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑒⁡𝑥⁡100⁡%

𝑠𝑒𝑛𝑠𝑖𝑡𝑖𝑓𝑖𝑡𝑎𝑠 = ⁡ 13

13 + 7⁡𝑥⁡100⁡% = 65%

b. Spesifisitas/True Negative Rate (TNR) Sistem

Untuk mengetahui Spesifitas sistem dapat diketahui dari perbandingan True Negative dengan jumlah False Positive dan True Negative.

𝑆𝑝𝑒𝑠𝑖𝑓𝑖𝑠𝑖𝑡𝑎𝑠 = ⁡ 𝑓𝑎𝑙𝑠𝑒⁡𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑒

𝑓𝑎𝑙𝑠𝑒⁡𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑒 + 𝑡𝑟𝑢𝑒⁡𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑒⁡𝑥⁡100%

𝑆𝑝𝑒𝑠𝑖𝑓𝑖𝑠𝑖𝑡𝑎𝑠 = ⁡ 7

7 + 3⁡𝑥⁡100⁡% = 70⁡%

c. akurasi (ACC)

Dengan membandingkan jumlah keputusan yang benar dari sistem dengan jumlah seluruh data yang diuji maka diperoleh akurasi sebagai berikut.

𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = ⁡𝑡𝑟𝑢𝑒⁡𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑒 + 𝑡𝑟𝑢𝑒⁡𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑒

𝑡𝑜𝑡𝑎𝑙 ⁡𝑥⁡100%

𝑎𝑘𝑢𝑟𝑎𝑠𝑖 = ⁡13 + 3

25 ⁡𝑥⁡100% = 72⁡%

4.3.2 Hasil Pengujian presensi secara bersamaan

Pengujian presensi secara bersamaan dilakukan pada lokasi yang sama dan pada waktu yang bersamaan. Pengiriman data dilakukan pada saat berhasil melakukan autentikasi fingerprint. Hasil pengujian presensi secara bersamaan dapat dilihat pada tabel 4.10 berikut.

Tabel 4.10 Hasil pengujian fungsi Presensi secara bersamaan

Dari hasil pengujian dilakukan 5 pegawai berhasil melakukan presensi dalam waktu 1

menit 56 detik.

4.3.3 Pengujian dengan kondisi diluar batas waktu

Pengujian diluar batas waktu dilakukan pada lokasi yang sama dan pada pukul 09.01 WIB. Diketahui bahwa presensi pada pagi hari dimulai dari pukul 06.00 WIB sampai 09.00 WIB. Hasil pengujian dengan kondisi diluar batas waktu dapat dilihat pada tabel 4.11 berikut.

Tabel 4.11 Hasil pengujian dengan kondisi diluar batas waktu

No Nomor Induk

Waktu melakukan

presensi

Respon yang diterima 1 130402057 09.11 WIB Waktu presensi sudah

habis

2 130402059 10.31 WIB Waktu presensi sudah habis

3 141402051 09.01 WIB Waktu presensi sudah habis

4 120402065 09.27 WIB Waktu presensi sudah habis

5 110400501 11.37 WIB Waktu presensi sudah habis

Dari hasil pengujian diperoleh 5 pegawai gagal melakukan presensi dan mendapatkan respon bahwa waktu presensi sudah habis menunjukkan bahwa sistem akan menolak presensi yang dilakukan diluar batas waktu.

Setelah melakukan beberapa pegujian sistem baik pada aplikasi Web maupun aplikasi mobile terdapat beberapa keterbatasan sistem yaitu:

1. Bila ada penyadapan pada pengiriman data maka data akan terlihat dan terbaca dengan jelas karena data yang dikirim tidak memiliki pengamanan.

2. Fungsi autentikasi fingerprint pada aplikasi Android yang telah dirancang tidak dapat mengetahui sidik jari siapa saja yang terdaftar pada smartphone.

3. Sistem yang telah dirancang tidak dapat mencatat kehadiran pegawai yang terlambat atau melakukan presensi diluar waktu yang ditetapkan.

BAB V

KESIMPULAN DAN SARAN 5.1 Kesimpulan

Dari pengujian yang telah dilakukan, maka dapat diperoleh kesimpulan sebagai berikut:

1. Aplikasi Web yang dibangun untuk sistem presensi dosen dan pegawai memiliki 11 fungsi yang berjalan dengan baik.

2. API presensi dan API registrasi yang dirancang untuk sistem presensi dosen dan pegawai dapat menghubungkan dengan sistem yang telah dibangun pada perangkat bergerak (Android).

3. Sistem telah dibangun memiliki sensitivitas sebesar 65 %, spesifisitas sebesar 70 % dan tingkat akurasi sebesar 72% menunjukkan bahwa sistem berjalan dengan baik.

4. Aplikasi Android dan aplikasi Web yang telah dirancang dapat terintegrasi satu sama lain menunjukkan bahwa sistem yang dibangun dapat mempermudah proses pengumpulan data presensi.

5.2 Saran

Beberapa saran yang dapat diberikan terkait dengan pelaksanaan skripsi ini adalah sebagai berikut:

1. Pada pengembangan atau pembuatan aplikasi perangkat bergerak sebaiknya tidak hanya membuat pada perangkat bergerak yang bersistem operasi Android saja melainkan untuk sistem operasi lain juga.

2. Pada pengembangan selanjutnya perlu dibahas mengenai pengamanan GPS yang dapat mengubah informasi tentang koordinat GPS pengguna dan pengamanan pada identitas smartphone / IMEI (International Mobile Equipment Identity)

3. Pada pengembangan aplikasi Web sebaiknya user pengguna aplikasi Web memiliki tingkat autentikasi user yang terintegrasi dengan data pegawai.

4. Pada pengembangan selanjutnya sebaiknya ditambahkan pengamanan pada pengiriman data dari client ke server dan perlu dilakukan pencatatan data presensi apabila melakukan presensi diluar waktu yang ditetapkan (terlambat).

DAFTAR PUSTAKA

[1] Android. Diakses 4 Maret 2018.

https://id.wikipedia.org/wiki/Android_(sistem_operasi)

[2] Kadir, Abdul.2013. Form Zero to Hero - Pengembangan Aplikasi Android Yogyakarta: CV.ANDI OFFSET.

[3] Lim, Byungsoo dan Kim, Joonoo. 2009. Efficient Database Reduction Method of Building Recognition using Global Positioning System On Mobile Device.

Korea. Telecommunication R&D Center, Samsung Electronics CO., LTD.

[4] Hernawan, Dwi Fajar. 2015. Pembuatan Aplikasi Peta Wisata Di Salatiga Berbasis Mobilegis Memanfaatkan SmartphoneAndroid. Semarang: Universitas

Diponegoro.

[5] AGPS : Mempercepat Kalkulasi Posisi. Diakses 17 Oktober 2018

http://gadget.jagatreview.com/2017/04/cara-kerja-GPS-pada-smartphone/

[6] Nugroho, Adi. 2011. Perancangan Dan Implementasi Sistem Basis Data. Yogyakarta:

CV. ANDI OFFSET.

[7] Database. Diakses 4 Maret 2018 dari

https://id.wikipedia.org/wiki/Pangkalan_data.

[8] User Interfacse. Diakses Maret 3, 2018 dari

https://id.wikipedia.org/wiki/Antarmuka-pemrograman_aplikasi.

[9] Fingerprint, Diakses 4 Maret 2018 dari

https://id.wikipedia.org/wiki/Sidik_jari.

[10] Putra, Darma. 2008. Sistem Biometrika.Yogyakarta : Andi

[11] Purbasari, Karlina dan Angga Rahabistara Sumadji Variasi Pola Sidik Jari

Mahasiswa Berbagai Suku Bangsa Di Kota Madiun.2017. Universitas Katolik

Widya Mandala Madiun.

[12] Pemindai sidik jari. Diakses Maret 10, 2019 dari

https://id.wikipedia.org/wiki/Pemindai_sidik_jari

[13] Sistem Pembacaan Sensor Sidik Jari. Diakses Maret 10, 2019 dari

http://sidik-jari.com/4-sistem-teknik-pembacaan-sensor-sidik-jari.html/

[14] Application programming interface. Diakses Maret 10, 2019 dari

https://en.wikipedia.org/wiki/Application_programming_interface#

[15] Measuring Api Usability. Diakses Maret 10, 2019 dari

http://www.drdobbs.com/windows/measuring-api-usability/184405654

[16] Henrique, Luiz. Dkk. 2013. “The Design and Implementation of a Language for Extending Applications”. eCGraf Grupo de Tecnologia Em Computacao Grafica

[17] Antarmuka Pemrograman Aplikasi. Diakses Maret 3, 2019 dari

https://id.wikipedia.org/wiki/Antarmuka_pemrograman_aplikasi [18] Scribner, Kenn dan Seely Scott. 2009. Effective REST Services via .NET: For.NET

Framework 3.5 (1st Edition). Addison-Wesley Professional.

[19] SOAP vs REST vs JSON comparison. Diakses Maret 27, 2019 https://raygun.com/blog/soap-vs-REST-vs-json/

[20] Mukhammad Agus Arianto, dkk. Analisis Dan Perancangan Representational State Transfer (REST) Web Service Sistem Informasi Akademik Stt Terpadu Nurul Fikri Menggunakan Yii Framework. 2016. Sekolah Tinggi Teknologi Terpadu Nurul Fikri

[21] Yulianto, dkk. Penerapan Formula Haversine Pada Sistem Informasi Geografis Pencarian Jarak Terdekat Lokasi Lapangan Futsal. 2018. Universitas Mulawarman Samarinda

LAMPIRAN

public class MainActivity extends AppCompatActivity { private static final int REQUEST_READ_PHONE_STATE = 0;

private static final int REQUEST_USE_LOCATION = 1000;

private static final int REQUEST_USE_FINGERPRINT = 300;

TelephonyManager tel;

private String mIMEI;

public Button mRegisterButton;

private ImageView mFingerprintImage;

private FusedLocationProviderClient mFusedLocationClient;

private double wayLatitude = 0.0, wayLongitude = 0.0;

private FingerprintManager fingerprintManager;

private KeyguardManager keyguardManager;

private KeyStore keyStore;

private KeyGenerator keyGenerator;

private Cipher cipher;

private FingerprintManager.CryptoObject cryptoObject;

private FingerprintHandler fingerprintHandler;

private static final String FINGERPRINT_KEY = "yourKey";

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mRegisterButton = (Button) findViewById(R.id.register_button);

//cek izin imei

tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

if (ActivityCompat.checkSelfPermission(this,

Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {

mRegisterButton.setOnClickListener(new View.OnClickListener() { @Override

mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

if (ActivityCompat.checkSelfPermission(this, Android.Manifest.permission.ACCESS_FINE_LOCATION) !=

mFusedLocationClient.getLastLocation().addOnSuccessListener(this, new OnSuccessListener<Location>() {

@Override

public void onSuccess(Location location) { if (location != null) {

wayLatitude = location.getLatitude();

Log.d("TAG", String.format(Locale.US, "%s -- %s",

fingerprintHandler = new FingerprintHandler(this);

fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);

keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);

checkDeviceFingerprintSupport();

ImageView fingerprintImage = (ImageView)findViewById(R.id.fingerprint_image);

fingerprintImage.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

fingerprintHandler.completeFingerAuthentication(fingerprintManager, cryptoObject);

} });

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[]

permissions, @NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

switch (requestCode) {

PackageManager.PERMISSION_GRANTED) {

private void checkDeviceFingerprintSupport() { if (ActivityCompat.checkSelfPermission(this,

Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {

private void generateFingerprintKeyStore(){

try {

keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES,

"AndroidKeyStore");

keyGenerator.init(new KeyGenParameterSpec.Builder(FINGERPRINT_KEY, KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)

.setBlockModes(KeyProperties.BLOCK_MODE_CBC) .setUserAuthenticationRequired(true)

} catch (InvalidAlgorithmParameterException e) { e.printStackTrace();

}

keyGenerator.generateKey();

}

private Cipher instantiateCipher(){

try {

cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7);

keyStore.load(null);

SecretKey secretKey = (SecretKey) keyStore.getKey(FINGERPRINT_KEY, null);

cipher.init(Cipher.ENCRYPT_MODE, secretKey);

return cipher;

} catch (NoSuchAlgorithmException | NoSuchPaddingException | UnrecoverableKeyException |

public class FingerprintHandler extends FingerprintManager.AuthenticationCallback{

private final String TAG = FingerprintHandler.class.getSimpleName();

private Context context;

public FingerprintHandler(Context context){

this.context = context;

}

@Override

public void onAuthenticationError(int errorCode, CharSequence errString) { super.onAuthenticationError(errorCode, errString);

public void onAuthenticationHelp(int helpCode, CharSequence helpString) { super.onAuthenticationHelp(helpCode, helpString);

Toast.makeText(context, R.string.auth_fingerprint_help, Toast.LENGTH_LONG).show();

}

@Override

public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {

public void onAuthenticationFailed() { super.onAuthenticationFailed();

Toast.makeText(context,

context.getString(R.string.auth_fingerprint_failed), Toast.LENGTH_LONG).show();

}

public void completeFingerAuthentication(FingerprintManager fingerprintManager, FingerprintManager.CryptoObject cryptoObject){

private void funabsen(final double lat, final double lng, final String mIMEI) { RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

String url ="http://absensicerdas.web.id/api/absen2/";

Log.d("TAG","cek." + mIMEI + lat + lng);

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

}, new Response.ErrorListener() {

}, new Response.ErrorListener() {

Dokumen terkait