90
DAFTAR PUSTAKA
Alfian Eko Susilo Putro, Herman Tolle, Agi Putra Kharisma . 2018. Rancang Bangun Aplikasi Penawaran dan Pencarian Kerja Paruh Waktu (Part Time) Berbasis Lokasi. Jurnal Pengembangan Teknologi Informasi dan Ilmu Komputer. Volume 2, hlm. 2865-2868
Anonym. 2016. Rekrutmen Karyawan : Definisi, Tujuan, Proses dan Sistem Rekrutmen. http://insanperforma.co.id/. Diakses pada tanggal 20 Agustus 2018.
Anonym. 2017. 4 Pengertian Aplikasi Android Menurut Para Ahli dan Penjelasan. http://www.indonesiastudents.com/. Diakses pada tanggal 20 Agustus 2018.
Anonym.2017. Cara Kerja QR Code (Barcode Dua Dimensi).
http://sewabarcode.com/. Diakses pada tanggal 25 Juli 2018.
Badrul Anwar, Hendra Jaya, Putra Indra Kusuma. 2014. Implementasi Location Based Service Berbasis Android Untuk Mengetahui Posisi User.
Jurnal Ilmiah Saintikom. Volume 13, No 2.
Dennis, A., Wixom, B. H., & Tegarden, D.2009. System Analysis Design UML Version 2.0. New Jersey: Wiley.
Dyna Marisa Khairina , Febrian Wicaksana Ramadhinata,Heliza Rahmania Hatta.
2017. Pencarian Lokasi Jalur Nugraha Ekakurir (Jne) Terdekat Menggunakan Haversine Formula (Studi Kasus Kota Samarinda).
Seminar Nasional Inovasi dan Aplikasi Teknologi Di Industri.
Volume 3, No.1
Frendy Kurniawan.2018. Situasi Genting Angkatan Kerja Indonesia.
https://tirto.id/. Diakses pada tanggal 27 Maret 2018
Haryandi Sepry.2016. Mengenal Restful API. https://kudo.co.id/. Diakses pada tanggal 26 April 2018
L. Whitten, Jeffrey, & D. Bentley, Lonnie .2007. System Analysis
& Design Methods Seventh Edition. New York, USA : McGraw-Hill
91 Meimaharani, R. and Fithri, D.L., 2014. E-Commerce Goody Bag Spunbond Menggunakan QR Code Berbasis Web Responsif. Jurnal Teknik Mesin, Elektro dan Ilmu Komputer. 5(2), pp.127-135.
Mustofa, Novan Adi et al. 2016. Implementasi Quick Respon (QR) Code Pada Aplikasi Validasi Dokumen Menggunakan Perancangan Unified Modelling Language (UML). Jurnal Antivirus. Vol. 10, No. 1
Octavianti, N. 2015. Aplikasi Pencarian Pos Pendakian Gunung Merbabu Menggunakan Formula Haversine dilengkapi dengan Prakiraan Cuaca dan Kompas Berbasis Android. Skripsi. Semarang : Fakultas Ilmu Komputer Universitas Dian Nuswantoro
Prawoto Hadi, Agus. 2018. Panduan Lengkap Memahami JSON.
http://jagowebdev.com/. Diakses pada tanggal 25 Juli 2018.
Rahmawati & Rahman. 2011. Sistem Pengamanan Keaslian Ijasah Menggunakan QR Code dan Algoritma . Based64. JUSI Vol. I, No.2
Simamora, Henry. 1997. Manajemen Sumber Daya Manusia. Yogyakarta : STIE YKPN.
Suhas Holla, Mahima M Katti. 2012. Android Based Mobile Application Development and its Security. International Journal of Computer Trends and Technology.volume 3, Halaman 1.
Yosephat Suryo Susilo, Hartono Pranjoto, Albert Gunadhi. 2014. Sistem Pelacakan Dan Pengamanan Kendaraan Berbasis GPS dengan Menggunakan Komunikasi GPRS. Jurnal Ilmiah Widya Teknik.
Volume 13. Halaman 22-23.
92
LAMPIRAN
93 LAMPIRAN 1 HASIL WAWANCARA
Narasumber I
Nama : Ibu Lusiana Natali
Perusahaan : PT Sakae Riken Indonesia
Transkrip hasil wawancara I
Pewawancara (P) : Selamat siang bu, perkenalkan saya Mohamad Darmawan mahasiswa Politeknik Negeri Indramayu. Sebelumnya terimakasih ibu telah meluangkan waktunya. Saya mau izin mewawancarai ibu terkait perekrutan di perusahaan tempat ibu bekerja untuk keperluan tugas akhir saya yang mengambil judul aplikasi publikasi dan promosi lowongan pekerjaan berbasis Android.
Narasumber (N) : oh begitu, ya perkenalkan nama saya Lusiana.
P : untuk saat ini bagaimana sistem perekrutan karyawan di perusahaan ini bu?
N : Dikita itu perekrutan ada dua acara ya, yang pertama melalui Yayasan untuk level supervisor keatas ya yang sudah memiliki pengalaman dan sebagainya, nah yang kedua untuk level operator itu kita biasanya mempromosikan lowongan di web web lowongan biasa, nah untuk submitnya itu mereka lewat pos. nah disini juga kalo untuk operator biasanya ada melalui referensi misalnya karyawan sini ada yang memiliki kerabat atau saudara yang ingin melamar nanti bisa juga diproses.
P : oh berarti masih hardfile ya bu untuk level operator?
N : iya betul, kalo untuk yang S1 keatas by email atau lewat Yayasan tadi.
Nah untuk Yayasan sendirikan kita itu bayar ya mas, kita kerjasama dengan mereka, mereka suplai tenaga kerja ke kita, mereka menyeleksi calon karyawan sesuai standar dari kita, nah kalo kalo misal selama masa percobaan 3 bulan dan tenaga tersebut diangkat menjadi karyawan nah kita harus bayar ke Yayasan itu.
94 P : Kalo boleh tahu berapa biaya yang dibayarkan perusahaan ke Yayasan
tersebut bu?
N : Kalo untuk biaya saya kurang tau itu disesuaikan dengan jenjangnya apakah suvervisor kah, ast manager kah ,atau operator gitu mas. Semakin tinggi jenjangnya biayanya semakin besar mas.
P : biasanya lowongan yang paling banyak kuotanya itu kan untuk operator ya bu, nah biasanya berapa jumlah kuota untuk sekali buka lowongan?
N : iya betul ni mas, paling banyak untuk SMA sederajat. Kalo kuotanya ni misal kebutuhan di plating department kita butuh karyawan puluhan, nah yang melamar itu bisa ratusan mas, nah itu kan by hardfile ya mau ga mau kita harus sortir dari sekian ratus pelamar itu untuk kuota yang ada. Disini juga untuk pembukaan lowongan tidak dilaksanakan serentak mas, jadi disesuaikan dengan kebutuhan masing-masing department begitu.
P : Jadi kendalanya di penyortiran data hardfile itu ya bu?
N : iya betul mas, jadi membutuhkan banyak waktu dan ya paling jadinya banyak berkas yang numpuk .
P : Dokumen apa saja bu yang biasanya menjadi bahan pertimbangan untuk penerimaan di perusahaan ini?
N : Paling kita melihatnya di CV dia, nilai akhir dia, ijazah, sama pengalaman kerja di ajika ada. Sudah si itu aja.
P : Jadi begini bu aplikasi yang rencananya dibuat untuk tugas akhir saya itukan semodel dengan jobstreet gitu tapi di aplikasi itu nanti kita dapat mengetahui lowongan pekerjaan yang dekat dengan kita jadi berdasarkan lokasi. Nah si pengguna aplikasi itu bisa melamar juga ke lowongan yang ada didekat dia. Nah untuk penyedia lowongannya nanti dapat mengontrol pelamar melalui web untuk menentukan apakah dia memenuhi syarat atau tidak, jika memenuhi maka dia akan mendapatkan notifikasi dan ecard semacam tiket untuk tes nanti jika tidak hanya ada notifikasi jika dia belum memenuhi syarat. Nah berminatkah ibu jika saya tawarkan aplikasi ini?
95 N : Tadikan bilangnya kaya jobstreet ya, nah kalo jobstreetkan tidak mendukung untuk jenjang SMA ya, nah kalo aplikasi yang anda bikin seperti apa tuh?
P : kalo di aplikasi ini semua jenjang bisa bu.
N : nah terus itu bener bisa tau jarak mereka dengan lokasi kita, bisa ketahuan sekian Km?
P : iya bu betul, jadi aplikasi ini kan menggunakan GPS, nah missal kita berada di karawang, maka lowongan yang berada didaerah karawang itu akan muncul bu.
N : Menarik juga, karena untuk disinikan dalam menentukan transportkan juga berdasarkan jarak ya per-Km jadi bisa menjadi bahan tambahan pertimbangan juga.Jadi jenjang SMA sederajat juga bisa ya?
P : iya bu bisa
N : saya rasa itu menarik ya, dengan begitu kita jadi tidak menggunakan hardfile. Nah itu untuk datanya bisa ditarik kan ya untuk data pelamarnya, misal udah sekian banyak yang sudah submit ke kita terus kita mau Tarik datanya tuh by excel misalnya buat nanti kita sortir, nah kalo yang aplikasi anda gimana?
P : iya jadi data pelamar yang telah submit bisa dilihat seperti data diri, ijazah, dan sebagainya.
N : nah kalo untuk ijazahkan itu harus di lihat satu-satu ya, nah apakah datanya bisa dikelola dan disortir misal kita lagi nyari calon karyawan yang lulusan SMK aja ni seperti itu bisa?
P : iya bu bisa nanti kita bisa mensortir dan mengolah data pelamar juga misal berdasarkan tinggi badan, sekolah dan sebagainya itu bisa bu.
N : Ya menurut saya sangat membantu ya kalo ada aplikasi yang seperti itu.
P : jadi aplikasi ini sesuai kebutuhan ya bu?
N : ya saya rasa dapat memudahkan ya untuk HRD karena kalo kita by hardfile aja itu kita kan kadang males ya untuk melihat yang sudah lama tertumpuk padahalkan mungkin saja didalam yang tertumpuk itu ada yang lebih memenuhi syarat dan kualifikasinya, kalo misal ada dokumen lamaran yang sudah dua minggu tertumpuk itu juga kadang tidak kepegang
96 ya, karena yang baru saja tidak tersortir semua begitu mas. Ya kalo ada aplikasi yang mau anda buat inikan kita tinggal sortir pelamar yang memenuhi syarat nah kita bisa langsung memproses pelamar yang memenuhisyarat tersebut untuk mengikuti tes.
P : oh begitu, nah paling itu bu yang ingin saya tanyakan , sebelumya terimakasih atas waktu yang diberikan, mungkin itu saja dari saya.
Assalamualaikum Wr. Wb
N : oh iya mas sama-sama, waalaikumsalam Wr.wb.
97 LAMPIRAN 2 HASIL WAWANCARA
Narasumber II
Nama : Ibu Dewi Riyawati
Perusahaan : PT Asian Isuzu Casting Centre
Transkrip hasil wawancara II
Pewawancara (P) : Assalamualaikum Wr. Wb, selamat siang bu, perkenalkan saya nama Mohamad Darmawan, saya mahasiswa Politeknik Negeri Indramayu. Sebelumnya terimakasih ibu telah meluangkan waktunya. Saya mau izin mewawancarai ibu untuk keperluan tugas akhir saya yang mengambil judul yaitu aplikasi publikasi dan promosi lowongan pekerjaan berbasis Android, saya ingin mewawancarai terkait perekrutan di perusahaan tempat ibu bekerja.
Narasumber (N) : oh begitu, ya perkenalkan nama saya Dewi Riyawati, staf di PT Asian Isuzu Casting Centre di Karawang Barat, sepengetahuan saya ditempat saya bekerja ini recruitmentnya itu ada 4 metode, metode pertama via disnaker, metode ke kedua lewat jalur referensi karyawan, ketiga dari karang taruna, dan keempat itu via kantor pos. Nah dari masing- masing cara itu ada persentase penerimaannya, dan misalkan karyawan kami membawa lamaran referensi dari dianya, nah dia harus bertanggung jawab dengan orang yang dia bawanya itu. Selama ini si seperti itu.
P : itu untuk semua level jabatan bu?
N : itu untuk level operator, kalo untuk staf keatas biasanya kami membuka jalur lewat jobstreet dan melalui website Asian isuzunya langsung seperti itu.
P : Oh berarti di isuzu ini ada web khusus untuk recruitment pegawainya ya bu ?
98 N : iya betul, jadi kita tinggal akses webnya kemudian kita masuk ke recruitment lalu isi biodata selengkap mungkin kemudian di submit, nanti bila ada permintaan tenaga kerja dari departemen di perusahaan maka HRD akan mengecek apakah ada calon pekerja yang sesuai dengan kebutuhan disini nanti jika sesuai langsung dihubungi.
P : Kalo untuk dokumen yang biasanya dijadikan bahan pertimbangan penerimaan untuk di perusahaan tempat ibu bekerja itu apa bu biasanya?
N : Biasanya itu pertama ijazah itu sudah pasti, skrip nilai, paklaring jika sebelumnya pernah bekerja, sertifikat jika ada, dan resume.
P : Nah jadi begini bu aplikasi yang rencananya dibuat untuk tugas akhir saya itukan semodel dengan jobstreet gitu tapi di aplikasi itu nanti kita dapat mengetahui lowongan pekerjaan yang dekat dengan kita jadi berdasarkan lokasi. Nah si pengguna aplikasi itu bisa melamar juga ke lowongan yang ada didekat dia. Lalu bisa apply terhadap lowongan tersebut. Nah untuk penyedia lowongannya nanti dapat mengontrol pelamar melalui web untuk menentukan apakah dia memenuhi syarat atau tidak seperti itu bu
N : Hmmm… Kalo untuk level S1 ke atas itu kan sudah ada yang lewat website ya, nah yang belum itu untuk level operator, kalo level operator itu yang lulusan SMA gitu biasanya mereka kan door to door gitu ya nyari lowongan kerja, mereka nitip berkas lamaran di security biasanya, nah itu kan butuh usaha yang lumayan ya, memang mencari pekerjaan itu kan membutuhkan perjuangan, nah dengan aplikasi itu bisakah memudahkan mereka mencari pekerjaan, saran saya si buat seperti itu untuk level SMA sederajat. Nah bisa juga berhubungan dengan disnaker jadi kalo ada lowongan bisa open register kaya gitu. Jadi kan kalo yang sudah berjalan saat ini misalnya kita membutuhkan karyawan kemudian membuka lowongan selama 4 hari, nah kadang kan waktu yang sudah ditetapkannya itu masih kurang untuk menyiapkan dokumen ini itu.
P : Sudah dapat si bu gambaran yang akan saya buat nanti, terima kasih juga ibu sudah meluangkan waktunya untuk wawancara dengan saya.
99 N : oh iya sebelumnya kalo itu pengen diaplikasikan masukan juga untuk tinggi badan, berat badan, jurusan, dan keahlian lainnya untuk mempermudah pic di HRDnya dalam seleksinya.
P : Baik bu, terimakasih sarannya.saya izin pamit. Assalamualaikum Wr.
Wb.
N : ok waalaikumsalam Wr. Wb
100 LAMPIRAN 3 KODE PROGRAM
Kode Program Menampilkan Daftar Lowongan ke Maps
package com.example.darmawan.ta_bookev.Menu_Beranda;
import Android.content.Intent;
import Android.graphics.Bitmap;
import Android.graphics.Canvas;
import Android.graphics.drawable.Drawable;
import Android.os.Bundle;
import Android.support.annotation.DrawableRes;
import Android.support.annotation.Nullable;
import Android.support.v4.app.Fragment;
import Android.support.v4.content.res.ResourcesCompat;
import Android.util.Log;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import com.Android.volley.AuthFailureError;
import com.Android.volley.Request;
import com.Android.volley.Response;
import com.Android.volley.VolleyError;
import com.Android.volley.toolbox.StringRequest;
import
com.example.darmawan.ta_bookev.Menu_Beranda.Adapter_Ber anda.AdapterMapsInfoWindows;
import
com.example.darmawan.ta_bookev.Model.Model_Jobfair;
import
com.example.darmawan.ta_bookev.Model.Model_Loker;
import com.example.darmawan.ta_bookev.R;
import
com.example.darmawan.ta_bookev.Serverside.MySingleton;
101 import com.example.darmawan.ta_bookev.Serverside.URL;
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.BitmapDescriptor;
import
com.google.Android.gms.maps.model.BitmapDescriptorFacto ry;
import
com.google.Android.gms.maps.model.CameraPosition;
import com.google.Android.gms.maps.model.LatLng;
import com.google.Android.gms.maps.model.Marker;
import com.google.Android.gms.maps.model.MarkerOptions;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapsFragment extends Fragment implements OnMapReadyCallback {
private GoogleMap mMap;
CameraPosition cameraPositionSekarang;
List<Model_Loker.DATAgetLoker> listData = new ArrayList<>();
List<Model_Jobfair.DATAgetJobfair> listDataJob = new ArrayList<>();
102 LatLng latLng[];
Double lat, lng;
private Map<Marker, String> markersMap = new HashMap<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment View view =
inflater.inflate(R.layout.fragment_maps, container, false);
SupportMapFragment mapFragment = (SupportMapFragment)
getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
lat = ((BerandaActivity)getActivity()).lat;
lng = ((BerandaActivity)getActivity()).lng;
}
@Override
public void onMapReady(GoogleMap googleMap) { mMap = googleMap;
103
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setCompassEnabled(true);
Map.getUiSettings().setMapToolbarEnabled(true);
inisialisasiAwalMarker();
getLoker();
mMap.setInfoWindowAdapter(new
AdapterMapsInfoWindows(getContext(), listData));
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
String id_loker = markersMap.get(marker);
if (id_loker!=null &&
!id_loker.equals("")){
startActivity(new
Intent(getContext(),DetailLokerActivity.class)
.putExtra("id_loker",id_loker));
} } });
}
public void inisialisasiAwalMarker() { // Animate to Device Location
cameraPositionSekarang = new CameraPosition.Builder()
.target(new LatLng(((BerandaActivity) getActivity()).lat, ((BerandaActivity)
104 getActivity()).lng)) // Sets the center of the map to Mountain View
.zoom(10) // Zoom levelnya (1:Dunia, 5:benua, 10:kota, 15:jalanan, 20:Gedung)
.tilt(30) // Diatur kemiringan kameranya sampai 30 derajat
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPositio n(cameraPositionSekarang));
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(c ameraPositionSekarang));
Marker marker = mMap.addMarker(new MarkerOptions()
// .position(new
LatLng(getIntent().getDoubleExtra("lat", 0), getIntent().getDoubleExtra("lng", 0)))
.position(new LatLng(lat, lng)) .title("Posisi anda saat ini")
.icon(getBitmapDescriptor(R.drawable.ic_your_position)) );
marker.showInfoWindow();
}
private void getLoker() {
cameraPositionSekarang = new CameraPosition.Builder()
.target(new LatLng(((BerandaActivity) getActivity()).lat, ((BerandaActivity)
105 getActivity()).lng)) // Sets the center of the map to Mountain View
.zoom(10) // Zoom levelnya (1:Dunia, 5:benua, 10:kota, 15:jalanan, 20:Gedung)
.tilt(30) // Diatur kemiringan kameranya sampai 30 derajat
.build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(c ameraPositionSekarang));
StringRequest stringRequest = new
StringRequest(Request.Method.POST, URL.url_getloker, new Response.Listener<String>() {
@Override
public void onResponse(String response) { try {
Log.e("response nih", response);
JSONObject object = new JSONObject(response);
if
(object.getString("STATUS").equals("200")) { JSONArray data = object.getJSONArray("DATA");
Gson gson = new Gson();
TypeToken<List<Model_Loker.DATAgetLoker>> token = new TypeToken<List<Model_Loker.DATAgetLoker>>() {
};
listData =
gson.fromJson(data.toString(), token.getType());
latLng = new LatLng[data.length()];
106 for (int i = 0; i <
data.length(); i++) {
for (int u = 0; u <
listData.get(i).getDetailLoker().size(); u++) { latLng[i] = new
LatLng(Double.parseDouble(listData.get(i).getDetailLoke r().get(u).getLat()),
Double.parseDouble(listData.get(i).getDetailLoker().get (u).getLon()));
Marker marker = mMap.addMarker(new
MarkerOptions().position(latLng[i]).title(listData.
get(i).getDetailLoker().get(u).getNama())
.snippet(listData.get(i).getDetailLoker().get(u).
getNmPt()).icon(getBitmapDescriptor(R.drawable.ic_pin)) );
markersMap.put(marker,
listData.get(i).getDetailLoker().get(u).getIdLowongan() );
} }
} catch (JSONException e) { e.printStackTrace();
} }
}, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError error) {
} }) {
107
@Override
protected Map<String, String> getParams() { Map<String, String> params = new
HashMap<>();
params.put("lat", lat + "");
params.put("lon", lng + "");
Log.d("params", params + "");
return params;
} };
MySingleton.getInstance(getContext()).addToRequestQueue (stringRequest);
}
private void getJobfair() {
cameraPositionSekarang = new CameraPosition.Builder() .target(new LatLng(((BerandaActivity) getActivity()).lat, ((BerandaActivity)
getActivity()).lng)).zoom(10).tilt(30).build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(c ameraPositionSekarang));
StringRequest stringRequest = new
StringRequest(Request.Method.POST, URL.url_getJobfair, new Response.Listener<String>() {
@Override
public void onResponse(String response) { try {
Log.e("response nih", response);
JSONObject object = new JSONObject(response);
if
(object.getString("STATUS").equals("200")) {
108 JSONArray data =
object.getJSONArray("DATA");
Gson gson = new Gson();
TypeToken<List<Model_Jobfair.DATAgetJobfair>> token = new TypeToken<List<Model_Jobfair.DATAgetJobfair>>() { };
listDataJob =
gson.fromJson(data.toString(), token.getType());
latLng = new LatLng[data.length()];
for (int u = 0; u < listDataJob.size(); u++) { latLng[u] = new
LatLng(Double.parseDouble(listDataJob.get(u).getLat()),
Double.parseDouble(listDataJob.get(u).getLon()));
mMap.addMarker(new MarkerOptions().position(latLng[u]) .title(listDataJob.get(u).getNama())
.snippet(listDataJob.get(u).getNmPt())
.icon(getBitmapDescriptor(R.drawable.ic_placeholder2)))
;
}
}
} catch (JSONException e) { e.printStackTrace();
} }
}, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError error) {
}
109 }) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("lat", ((BerandaActivity) getActivity()).lat + "");
params.put("lon", ((BerandaActivity) getActivity()).lng + "");
Log.d("params", params + "");
return params;
} };
MySingleton.getInstance(getContext()).addToRequestQueue (stringRequest);
}
private BitmapDescriptor
getBitmapDescriptor(@DrawableRes int id) { Drawable vectorDrawable =
ResourcesCompat.getDrawable(getResources(), id, null);
Bitmap bitmap =
Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
vectorDrawable.draw(canvas);
return
BitmapDescriptorFactory.fromBitmap(bitmap);
} }
110 Kode Program Menampilkan Tiket Tes
public void getTiket() {
final Android.app.AlertDialog.Builder alert = new
Android.app.AlertDialog.Builder(DetailHistoriLokerActiv ity.this);
View view =
View.inflate(DetailHistoriLokerActivity.this, R.layout.layout_etiket, null);
ImageView iv_barcode =
view.findViewById(R.id.iv_barcode);
TextView nama =
view.findViewById(R.id.tv_nama);
TextView kegiatan =
view.findViewById(R.id.tv_kegiatan);
TextView tempat =
view.findViewById(R.id.tv_tempat);
TextView tanggal =
view.findViewById(R.id.tv_tgl);
nama.setText(new
SessionManager(getApplicationContext()).getUserProfil() .get(Qnama));
kegiatan.setText(String.format("%s di %s", datAgetHistoriLoker.getNama(),
datAgetHistoriLoker.getNamaPt()));
tanggal.setText(datAgetHistoriLoker.getTglSubmitLamaran ());
tempat.setText(datAgetHistoriLoker.getAlamatTes());
Bitmap myBitmap =
QRCode.from(datAgetHistoriLoker.getId()).bitmap();
iv_barcode.setImageBitmap(myBitmap);
111 alert.setNegativeButton("Keluar", new
Dialoginterface.OnClickListener() { @Override
public void onClick(Dialoginterface dialoginterface, int i) {
dialoginterface.dismiss();
} });
alert.setView(view);
alert.setCancelable(true);
ad = alert.show();
}
@OnClick(R.id.btn_tiket) public void tiket() { getTiket();
}
Kode Program Scanning Tiket Tes
package com.example.darmawan.ta_bookev.PenyediaLoker;
import Android.Manifest;
import Android.app.ProgressDialog;
import Android.content.pm.PackageManager;
import Android.os.Build;
import Android.os.Bundle;
import Android.os.Handler;
import Android.support.annotation.RequiresApi;
import Android.support.v7.app.AppCompatActivity;
import Android.util.Log;
import Android.view.ViewGroup;
import com.Android.volley.Request;
import com.Android.volley.Response;
112 import com.Android.volley.VolleyError;
import com.Android.volley.toolbox.StringRequest;
import
com.example.darmawan.ta_bookev.General.AssetClass;
import
com.example.darmawan.ta_bookev.Model.Model_getLokerPenl oker;
import com.example.darmawan.ta_bookev.R;
import
com.example.darmawan.ta_bookev.Serverside.MySingleton;
import com.example.darmawan.ta_bookev.Serverside.URL;
import
com.example.darmawan.ta_bookev.Serverside.VolleyHandler
;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
import me.dm7.barcodescanner.zbar.Result;
import me.dm7.barcodescanner.zbar.ZBarScannerView;
public class ScanBarcodeActivity extends AppCompatActivity implements
ZBarScannerView.ResultHandler {
private ZBarScannerView mScannerView;
public static final int PERMISSION_REQUEST_CAMERA = 1;
Model_getLokerPenloker.DATAgetLokerPenloker datAgetLokerPenloker;
ProgressDialog progressDialog;
@RequiresApi(api = Build.VERSION_CODES.M) @Override
public void onCreate(Bundle state) { super.onCreate(state);
113 setContentView(R.layout.activity_scan_barcode);
ViewGroup contentFrame = findViewById(R.id.content_frame);
mScannerView = new ZBarScannerView(this);
contentFrame.addView(mScannerView);
if (!haveCameraPermission()) requestPermissions(new String[]{Manifest.permission.CAMERA}, PERMISSION_REQUEST_CAMERA);
datAgetLokerPenloker =
(Model_getLokerPenloker.DATAgetLokerPenloker) getIntent().getSerializableExtra("data");
}
private boolean haveCameraPermission() { if (Build.VERSION.SDK_INT < 23)
return true;
return
checkSelfPermission(Manifest.permission.CAMERA) ==
PackageManager.PERMISSION_GRANTED;
}
@Override
public void onRequestPermissionsResult(int
requestCode, String permissions[], int[] grantResults) {
if (permissions.length == 0 ||grantResults.length == 0) return;
switch (requestCode) {
case PERMISSION_REQUEST_CAMERA: { if (grantResults[0] ==
PackageManager.PERMISSION_GRANTED) { startCamera();
114 } else {
finish();
} }
break;
} }
public void startCamera() {
mScannerView.setResultHandler(this); //
Register ourselves as a handler for scan results.
mScannerView.startCamera(); // Start camera on resume
}
public void stopCamera() { mScannerView.stopCamera();
}
@Override
public void onResume() { super.onResume();
mScannerView.setResultHandler(this);
startCamera();
}
@Override
public void onPause() { super.onPause();
stopCamera();
}
115 @Override
public void handleResult(Result rawResult) { // Toast.makeText(this, "Contents = " + rawResult.getContents() +
// ", Format = " +
rawResult.getBarcodeFormat().getName(), Toast.LENGTH_SHORT).show();
if
(rawResult.getBarcodeFormat().getName().equals("QRCODE"
)) {
scanTiket(rawResult.getContents());
} else {
AssetClass.warning(this, "Hanya Support Format QR-Code");
}
Handler handler = new Handler();
handler.postDelayed(new Runnable() { @Override
public void run() {
mScannerView.resumeCameraPreview(ScanBarcodeActivity.th is);
} }, 2000);
}
private void scanTiket(final String id) { progDialog();
StringRequest stringRequest = new
StringRequest(Request.Method.POST, URL.url_scanTiket, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
116 try {
JSONObject object = new JSONObject(response);
progressDialog.dismiss();
if (object.getInt("STATUS") == 200) {
AssetClass.sukses(ScanBarcodeActivity.this, object.getString("MESSAGE"));
} else {
AssetClass.error(ScanBarcodeActivity.this, object.getString("MESSAGE"));
progressDialog.dismiss();
}
} catch (JSONException e) { e.printStackTrace();
progressDialog.dismiss();
} }
}, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError error) {
VolleyHandler handler = new VolleyHandler();
handler.VolleyHandler(ScanBarcodeActivity.this, error);
progressDialog.dismiss();
} }) {
@Override
protected Map<String, String> getParams() {
117 Map<String, String> params = new
HashMap<>();
params.put("id", id);
params.put("id_lowongan", datAgetLokerPenloker.getIdLowongan());
Log.d("params", params + "");
return params;
} };
MySingleton.getInstance(ScanBarcodeActivity.this).addTo RequestQueue(stringRequest);
}
public void progDialog() { progressDialog = new
ProgressDialog(ScanBarcodeActivity.this);
progressDialog.setCancelable(false);
progressDialog.setMessage("Memuat...");
progressDialog.show();
} }
118 LAMPIRAN 4 BIODATA PENULIS
BIODATA PENULIS TUGAS AKHIR Nama : Mohamad Darmawan Mukhlis Nomor Induk Mahasiswa : 1503097
Jenis Kelamin : Laki-Laki
Tempat, Tanggal Lahir : Kuningan, 7 Juni 1994 Status : Belum Menikah
Agama : Islam
Asal Ijazah Sekolah :
Ijazah Nama Sekolah Kota Sekolah Tahun SD : -SDN Karanganyar 1 -Karawang -2006 SMP : -SMPN 2 Klari -Karawang -2009 SMA : -SMKN 1 Cikampek -Karawang -2012 Program Studi/Jurusan : Teknik Informatika
Alamat Rumah Asal : Perumahan Karawang Baru Blok E12 No. 2 Desa Karanganyar, Klari, Karawang
No. Handphone : 082115917389
Email : [email protected] Nama Orang Tua : S. Khalid – Aan Amanah
Pekerjaan Orang Tua : Wiraswasta
Judul Tugas Akhir : Rancang Bangun Aplikasi Publikasi dan Pencarian Lowongan Kerja Berbasis Android Menggunakan Metode Location Based Service (LBS)
Pembimbing : 1. Mohammad. Yani, ST., MT., M.Sc.
2. Adi Suheryadi, S. ST., M. Kom.
Indramayu, 20 Agustus 2018 Penulis,
Mohamad Darmawan M.
NIM. 1503097