Perancangan Aplikasi Sistem Absensi Smart SMA Negeri 4 Medan Berbasis Android

LISTING PROGRAM

activity_main.xml






MainActivity.java
package com.example.karinputriandili.absensi.activity;
import
import
import
import
import
import
import

android.content.Intent;
android.os.Handler;

android.support.v7.app.AppCompatActivity;
android.os.Bundle;
android.view.Window;
android.view.WindowManager;
com.example.karinputriandili.absensi.R;

public class MainActivity extends AppCompatActivity {
private static int splashInterval = 2000;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
public void run() {
Intent i = new Intent(MainActivity.this,HomeActivity.class);
startActivity(i);
finish();
}


Universitas Sumatera Utara

}, splashInterval);
};
}

activity_home.xml
















HomeActivity.java
package com.example.karinputriandili.absensi.activity;
import
import
import
import
import
import

android.content.Intent;
android.os.Bundle;
android.support.v7.app.AppCompatActivity;
android.view.View;
android.widget.Button;
com.example.karinputriandili.absensi.R;

public class HomeActivity extends AppCompatActivity {

Button btnabout, btnlogin, btndaftar, btnhelp;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
btnabout = (Button) findViewById(R.id.btnabout);
btnlogin = (Button) findViewById(R.id.btnlogin);
btndaftar = (Button) findViewById(R.id.btndaftar);
btnhelp = (Button) findViewById(R.id.btnhelp);
btnabout.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
Intent i = new Intent(HomeActivity.this,
AboutActivity.class);
startActivity(i);
}
});
btnlogin.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
Intent i = new Intent(HomeActivity.this,
LoginActivity.class);
startActivity(i);

}
});

Universitas Sumatera Utara

btndaftar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
Intent i = new Intent(HomeActivity.this,
DaftarActivity.class);
startActivity(i);
}
});
btnhelp.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
Intent i = new Intent(HomeActivity.this,
HelpActivity.class);
startActivity(i);
}
});
}

}

activity_about.xml








Universitas Sumatera Utara









Universitas Sumatera Utara





AboutActivity.java
package com.example.karinputriandili.absensi.activity;
import
import
import
import
import
import
import
import

android.content.Intent;
android.support.v7.app.AppCompatActivity;
android.os.Bundle;

android.support.v7.widget.Toolbar;
android.view.MenuItem;
android.view.View;
android.widget.TextView;
com.example.karinputriandili.absensi.R;

public class AboutActivity extends AppCompatActivity {
protected Toolbar toolbar;
TextView judul, about, about2, about3, about4, about5,
about6,back, menu;
String a1, a2, a3, a4, a5, a6;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setFitsSystemWindows(true);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
judul = (TextView) findViewById(R.id.txtJudul);
about = (TextView) findViewById(R.id.txtAbout);

about2 = (TextView) findViewById(R.id.txtAbout2);
about3 = (TextView) findViewById(R.id.txtAbout3);
about4 = (TextView) findViewById(R.id.txtAbout4);
about5 = (TextView) findViewById(R.id.txtAbout5);
about6 = (TextView) findViewById(R.id.txtAbout6);
a1 = "SMAN 4 MEDAN" +
" \n \nBertempat di Jalan Gelas No.12 Medan ";
a2 = "Phone: (061) 4158244";
a3 = "Sekolah ini didirikan pada tanggal 10 September
1961";
a4 = "Kepala Sekolah saat ini adalah Bapak Drs.Ramli";
a5 = "Termasuk SMA populer di Kota Medan";
a6 = "Email : smanegeri4medan@yahoo.com";
about.setText(String.valueOf(a1));
about2.setText(String.valueOf(a2));
about3.setText(String.valueOf(a3));
about4.setText(String.valueOf(a4));
about5.setText(String.valueOf(a5));
about6.setText(String.valueOf(a6));
}


Universitas Sumatera Utara

public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);} } }

activity_login.xml
















Universitas Sumatera Utara









LoginActivity.java
package com.example.karinputriandili.absensi.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Toast;
import android.app.ProgressDialog;
import android.support.v7.app.ActionBarActivity;
import android.widget.EditText;
import com.example.karinputriandili.absensi.R;
import com.example.karinputriandili.absensi.api.ApiClient;
import
com.example.karinputriandili.absensi.api.model.LoginResponse;
import java.util.HashMap;
import java.util.Map;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class LoginActivity extends ActionBarActivity {
protected Toolbar toolbar;
private EditText editTextUsername;
private EditText editTextPassword;
public static final String USER_NAME = "USERNAME";
String username;
String password;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setFitsSystemWindows(true);
setSupportActionBar(toolbar);
editTextUsername = (EditText) findViewById(R.id.editTextUsername);

Universitas Sumatera Utara

editTextPassword = (EditText) findViewById(R.id.editTextPassword);
}
public void back (View view){
startActivity(new Intent(this, HomeActivity.class));
}
public void login (View view){
username = editTextUsername.getText().toString();
password = editTextPassword.getText().toString();
login(username, password);
}
private void login(final String username, String password) {
Map data = new HashMap();
data.put("username", username);
data.put("password", password)
final ProgressDialog progressDialog = new
ProgressDialog(LoginActivity.this);
progressDialog.setMessage("Loading ...");
progressDialog.setCancelable(false);
progressDialog.show();
ApiClient.getInstance(this).getApi().login(data).enqueue(new
Callback() {
public void onResponse(Call call,
Response response) {
if (response.isSuccessful()){
if (response.body().status){
Intent intent = new
Intent(LoginActivity.this, PilihanActivity.class);
intent.putExtra("user",
response.body().data);
finish();
startActivity(intent);
}else{
Toast.makeText(LoginActivity.this,
response.body().message, Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(LoginActivity.this, "Error
connecting to server", Toast.LENGTH_SHORT).show();
}
progressDialog.dismiss();
}
public void onFailure(Call call,
Throwable t) {
Toast.makeText(LoginActivity.this, "Error
connecting to server", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();}
});
}
}

activity_daftar.xml


























Universitas Sumatera Utara









DaftarActivity.java
package com.example.karinputriandili.absensi.activity;
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import

java.io.BufferedReader;
java.io.IOException;
java.io.InputStream;
java.io.InputStreamReader;
java.text.DateFormat;
java.text.SimpleDateFormat;
java.util.ArrayList;
java.util.Calendar;
java.util.Date;
java.util.HashMap;
java.util.List;
java.util.Map;
android.app.ProgressDialog;
android.os.Bundle;
android.os.StrictMode;
android.support.v7.app.AppCompatActivity;
android.support.v7.widget.Toolbar;
android.util.Log;
android.view.MenuItem;
android.view.View;
android.widget.AdapterView;
android.widget.ArrayAdapter;
android.widget.Button;
android.widget.FrameLayout;
android.widget.ListView;
android.widget.SimpleAdapter;
android.widget.Spinner;
android.widget.TextView;
android.widget.Toast;
com.example.karinputriandili.absensi.Helper;
com.example.karinputriandili.absensi.JSONParser;
com.example.karinputriandili.absensi.R;
com.example.karinputriandili.absensi.api.ApiClient;
com.example.karinputriandili.absensi.api.entity.RoomEntity;

Universitas Sumatera Utara

import
com.example.karinputriandili.absensi.api.model.AbsentResponse;
import
com.example.karinputriandili.absensi.api.model.RoomResponse;
import com.example.karinputriandili.absensi.ui.DatePickerFragment;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.gson.JsonObject;
import com.jaredrummler.materialspinner.MaterialSpinner;
import de.codecrafters.tableview.TableView;
import de.codecrafters.tableview.model.TableColumnDpWidthModel;
import de.codecrafters.tableview.toolkit.SimpleTableDataAdapter;
import de.codecrafters.tableview.toolkit.SimpleTableHeaderAdapter;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class DaftarActivity extends AppCompatActivity implements
DatePickerFragment.OnCompleteListener {
protected Toolbar toolbar;
private TableView tableView;
private FrameLayout date_from, date_to;
private TextView txt_date_from, txt_date_to;
private Calendar dateFrom, dateTo;
private Button btnOk;
private MaterialSpinner spinnerkelas;
private List listRoom;
private static final String[][] DATA_TO_SHOW = {{"This", "is",
"a", "test"},
{"and", "a", "second", "test"}};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daftar);
toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setFitsSystemWindows(true);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
spinnerkelas = (MaterialSpinner)
findViewById(R.id.spinnerkelas);
initView();
setEvent();
getRooms();
tableView = (TableView)
findViewById(R.id.tableView);
TableColumnDpWidthModel columnModel = new
TableColumnDpWidthModel(this, 9, 100);
columnModel.setColumnWidth(0, 200);
tableView.setColumnModel(columnModel);
}
private void initView() {
date_from = (FrameLayout) findViewById(R.id.date_from);
date_to = (FrameLayout) findViewById(R.id.date_to);
txt_date_from = (TextView) findViewById(R.id.txt_date_from);

Universitas Sumatera Utara

txt_date_to = (TextView) findViewById(R.id.txt_date_to);
Calendar c = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("dd MMM yyyy");
dateFrom = c;
txt_date_from.setText(df.format(c.getTime()));
dateTo = c;
txt_date_to.setText(df.format(c.getTime()));
btnOk = (Button) findViewById(R.id.btn_ok);
}
private void setEvent() {
date_from.setOnClickListener(new View.OnClickListener()
public void onClick(View view) {
showDatePicker(R.id.date_from);
}
});
date_to.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
showDatePicker(R.id.date_to);
}
});
btnOk.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (spinnerkelas.getSelectedIndex() > -1) {
Map data = new HashMap();
data.put("room_id",
Integer.toString(listRoom.get(spinnerkelas.getSelectedIndex()).id)
);
data.put("date_from", Helper.getDate(dateFrom));
data.put("date_to", Helper.getDate(dateTo));
final ProgressDialog progressDialog = new
ProgressDialog(DaftarActivity.this);
progressDialog.setMessage("Loading ...");
progressDialog.setCancelable(false);
progressDialog.show();
ApiClient.getInstance(DaftarActivity.this).getApi().getAbsent(data
).enqueue(new Callback() {
public void
onResponse(Call call, Response
response) {
JsonObject().get(response.body().toString()).getAsJsonObject();
if (response.isSuccessful()) {
if (response.body().status) {
if(response.body().data.length
> 0){
int column = response.body().data[0].length;
int row = response.body().data.length;
tableView.setColumnCount(column);
String[][] dataTable = new String[row][column];
String[] header = new String[column];
header[0] = "Nama";
Calendar c = (Calendar) dateFrom.clone();
for (int i = 1; i < column - 1; i++){
header[i] = c.get(Calendar.DATE) + "/" +
(c.get(Calendar.MONTH) + 1);

Universitas Sumatera Utara

c.add(Calendar.DATE, 1);
}
header[column - 1 ] = "Jumlah";
for (int i = 0; i < row; i++){
for (int j = 0; j < column; j++){
dataTable[i][j] = response.body().data[i][j];
}
}
tableView.setDataAdapter(new
SimpleTableDataAdapter(DaftarActivity.this, dataTable));
tableView.setHeaderAdapter(new
SimpleTableHeaderAdapter(DaftarActivity.this, header));}
} else {
Toast.makeText(DaftarActivity.this, response.body().message,
Toast.LENGTH_SHORT).show();}
} else {
Toast.makeText(DaftarActivity.this, "Error connecting to server",
Toast.LENGTH_SHORT).show();
}
progressDialog.dismiss();}
public void onFailure(Call
call, Throwable t) {
Toast.makeText(DaftarActivity.this,
"Error connecting to server", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
});
}
}
});
}
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void getRooms() {
final ProgressDialog progressDialog = new
ProgressDialog(this);
progressDialog.setMessage("Loading ...");
progressDialog.setCancelable(false);
progressDialog.show();
ApiClient.getInstance(this).getApi().getAllRoom().enqueue(new
Callback() {
public void onResponse(Call call,
Response response) {
if (response.isSuccessful()) {
if (response.body().status) {
String[] kelas = new
String[response.body().data.size()];

Universitas Sumatera Utara

for (int i = 0; i < kelas.length; i++) {
kelas[i] = response.body().data.get(i).name;
}
spinnerkelas.setItems(kelas);
listRoom = response.body().data;
} else {
Toast.makeText(getApplicationContext(), response.body().message,
Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getApplicationContext(), "Error connecting to
server", Toast.LENGTH_SHORT).show();
}
progressDialog.dismiss();}
public void onFailure(Call call,
Throwable t) {
Toast.makeText(getApplicationContext(), "Error connecting to
server", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
});
}
public void onBackPressed() {
finish();
}
public void showDatePicker(int target) {
DatePickerFragment datepicker = new DatePickerFragment();
datepicker.setTarget(this, target);
if (target == R.id.date_from) {
if (dateFrom != null) {
datepicker.setDate(this,
dateFrom.get(Calendar.YEAR), dateFrom.get(Calendar.MONTH),
dateFrom.get(Calendar.DATE));
}
} else if (target == R.id.date_to) {
if (dateTo != null) {
datepicker.setDate(this,
dateTo.get(Calendar.YEAR), dateTo.get(Calendar.MONTH),
dateTo.get(Calendar.DATE));
} else {
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
datepicker.setDate(this, year, month, day);
}
if (dateFrom != null) {
datepicker.setMin(dateFrom.getTimeInMillis());
}
}
datepicker.show(getSupportFragmentManager(),
"datePicker");}
public void onComplete(Calendar time, int target) {
DateFormat df = new SimpleDateFormat("dd MMM yyyy");
if (target == R.id.date_from) {
dateFrom = time;
txt_date_from.setText(df.format(time.getTime()));
}

Universitas Sumatera Utara

else if (target == R.id.date_to) {
dateTo = time;
txt_date_to.setText(df.format(time.getTime()));
}
}
}

activity_help.xml

















HelpActivity.java
package com.example.karinputriandili.absensi.activity;
import
import
import
import
import
import
import
import

android.content.Intent;
android.support.v7.app.AppCompatActivity;
android.os.Bundle;
android.support.v7.widget.Toolbar;
android.view.MenuItem;
android.view.View;
android.widget.TextView;
com.example.karinputriandili.absensi.R;

Universitas Sumatera Utara

public class HelpActivity extends AppCompatActivity {
protected Toolbar toolbar;
TextView judul, about, about2, about3, about4, about5, about6;
String a1, a2, a3, a4, a5, a6;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_help);
toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setFitsSystemWindows(true);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
judul = (TextView) findViewById(R.id.txtJudul);
about = (TextView) findViewById(R.id.txtAbout);
about2 = (TextView) findViewById(R.id.txtAbout2);
about3 = (TextView) findViewById(R.id.txtAbout3);
about4 = (TextView) findViewById(R.id.txtAbout4);
about5 = (TextView) findViewById(R.id.txtAbout5);
about6 = (TextView) findViewById(R.id.txtAbout6);
a1 = "Cara penggunaan aplikasi ini sangat mudah. ";
a2 = "Masukan Nomor Induk Siswa (NIS) jika siswa ingin
mengisi kehadirannya.";
a3 = "Jika siswa yang mengisi absen berada dalam jangkauan
lingkungan sekolah.";
a4 = "Maka otomatis akan terdaftar kehadiran siswa
tersebut";
a5 = "Sebaliknya, maka sistem absensi ini akan error.";
a6 = "Kemudian para guru bisa melihat siswa-siswa yang
hadir hari tersebut.";
about.setText(String.valueOf(a1));
about2.setText(String.valueOf(a2));
about3.setText(String.valueOf(a3));
about4.setText(String.valueOf(a4));
about5.setText(String.valueOf(a5));
about6.setText(String.valueOf(a6));
}
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}

activity_pilihan.xml













Universitas Sumatera Utara


















PilihanActivity.java
package com.example.karinputriandili.absensi.activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v7.widget.Toolbar;
import com.example.karinputriandili.absensi.Helper;
import com.example.karinputriandili.absensi.R;
import com.example.karinputriandili.absensi.api.ApiClient;
import com.example.karinputriandili.absensi.api.entity.RoomEntity;
import
com.example.karinputriandili.absensi.api.entity.SchoolEntity;
import
com.example.karinputriandili.absensi.api.entity.StudentEntity;
import com.example.karinputriandili.absensi.api.model.ApiResponse;
import
com.example.karinputriandili.absensi.api.model.RoomResponse;
import
com.example.karinputriandili.absensi.api.model.SchoolsResponse;
import com.example.karinputriandili.absensi.ui.DatePickerFragment;
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.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.Circle;
import com.google.android.gms.maps.model.CircleOptions;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.jaredrummler.materialspinner.MaterialSpinner;
public class PilihanActivity extends AppCompatActivity {
protected Toolbar toolbar;
private GoogleMap Gmap;
private LocationManager locationManager;
private Location location;
Circle circle;
private TextView txt_welcome, txt_date;
private MaterialSpinner spinnerRoom, spinnerStatus;
private Calendar selectedDate;
private FrameLayout frm_date;
private Button btn_simpan;
private StudentEntity student;
private SchoolEntity school;
private List listRoom;
private Boolean checkRadius;

Universitas Sumatera Utara

String[] daftarStatus = {
"Hadir","Sakit","Izin","Absen"
};
private OnMapReadyCallback mapListener = new
OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap map) {
Gmap = map;
setSchoolLocation();
Criteria criteria = new Criteria();
String bestProvider =
locationManager.getBestProvider(criteria, true);
if
(ActivityCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {return;}
locationManager.requestLocationUpdates(bestProvider, 1000, 20,
locationListener);
location = locationManager.getLastKnownLocation(bestProvider);
addLocationMarker(location);}};
private LocationListener locationListener = new
LocationListener() {
public void onLocationChanged(Location _location) {
location = _location;
addLocationMarker(location);
if (Build.VERSION.SDK_INT >= 23 &&
ContextCompat.checkSelfPermission(getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(getApplicationContext(),
android.Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {return;}
locationManager.removeUpdates(this);
Log.d("debugku", location.getLatitude() + "-" +
location.getLongitude());}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pilihan);
Intent intent = getIntent();
student = (StudentEntity)
intent.getSerializableExtra("user");
toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setFitsSystemWindows(true);
setSupportActionBar(toolbar);

Universitas Sumatera Utara

initView();
setEvent();
SupportMapFragment map = (SupportMapFragment)
getSupportFragmentManager()
.findFragmentById(R.id.map_view);
map.getMapAsync(mapListener);
map.getView().setClickable(false);
if(Build.VERSION.SDK_INT>=23){
if ((ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(this,
new
String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);}}
locationManager = (LocationManager)
this.getSystemService(Context.LOCATION_SERVICE);
getRooms();}
protected void onStart() {
super.onStart();
boolean gps_enabled = false;
boolean network_enabled = false;
try { gps_enabled =
locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch(Exception ex) {}
try { network_enabled =
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER
);} catch(Exception ex) {}
if(!gps_enabled && !network_enabled) {
AlertDialog.Builder dialog = new
AlertDialog.Builder(this);
dialog.setMessage(this.getResources().getString(R.string.gps_netwo
rk_not_enabled));
dialog.setPositiveButton(this.getResources().getString(R.string.op
en_location_settings), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface
paramDialogInterface, int paramInt) {
Intent myIntent = new Intent(
Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(myIntent); } });
dialog.setNegativeButton(getApplicationContext().getString(R.strin
g.cancel), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface
paramDialogInterface, int paramInt) {
}
});
dialog.show(); }}
private void initView(){
spinnerRoom =
(MaterialSpinner)findViewById(R.id.spinner_room);
spinnerStatus =
(MaterialSpinner)findViewById(R.id.spinner_status);
txt_welcome = (TextView)findViewById(R.id.txt_welcome);
txt_date = (TextView)findViewById(R.id.txt_date);
frm_date = (FrameLayout)findViewById(R.id.frm_date);
btn_simpan = (Button)findViewById(R.id.btn_simpan);

Universitas Sumatera Utara

spinnerStatus.setItems(daftarStatus);
txt_welcome.setText("Welcom, " + student.name);
selectedDate = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("dd MMM yyyy");
txt_date.setText(df.format(selectedDate.getTime())) ;
}
private void setEvent(){
frm_date.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
DatePickerFragment datepicker = new
DatePickerFragment();
datepicker.setTarget(new
DatePickerFragment.OnCompleteListener() {public void
onComplete(Calendar calender, int target) {DateFormat df = new
SimpleDateFormat("dd MMM yyyy");
selectedDate = calender;
txt_date.setText(df.format(calender.getTime())) ;}
}, R.id.txt_date);
int year = selectedDate.get(Calendar.YEAR);
int month = selectedDate.get(Calendar.MONTH);
int day = selectedDate.get(Calendar.DAY_OF_MONTH);
datepicker.setDate(PilihanActivity.this, year, month, day);
datepicker.show(getSupportFragmentManager(),
"datePicker");}});
btn_simpan.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
String status =
daftarStatus[spinnerStatus.getSelectedIndex()];
if(checkRadius || !status.toLowerCase().equals("hadir")){
Map data = new HashMap();
data.put("student_id", Integer.toString(student.id));
data.put("room_id",Integer.toString(listRoom.get(spinnerRoom
.getSelectedIndex()).id));
data.put("date", Helper.getDate(selectedDate));
data.put("status",
daftarStatus[spinnerStatus.getSelectedIndex()]);
final ProgressDialog progressDialog = new
ProgressDialog(PilihanActivity.this);
progressDialog.setMessage("Loading ...");
progressDialog.setCancelable(false);
progressDialog.show();
ApiClient.getInstance(getBaseContext()).getApi().absent(data
).enqueue(new Callback() {
public void
onResponse(Call call, Response
response) {
if (response.isSuccessful()){
if (response.body().status){
Toast.makeText(getApplicationContext(), "Data berhasil di
simpan", Toast.LENGTH_SHORT).show();}else {
Toast.makeText(getApplicationContext(),
response.body().message, Toast.LENGTH_SHORT).show();}}else {
Toast.makeText(getApplicationContext(), "Error connecting to
server", Toast.LENGTH_SHORT).show();}
progressDialog.dismiss();
}

Universitas Sumatera Utara

public void onFailure(Call call, Throwable t) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Error connecting to
server", Toast.LENGTH_SHORT).show();}});
}else{
Toast.makeText(getBaseContext(), "Anda tidak berada pada
lokasi sekolah" , Toast.LENGTH_SHORT).show();
}
}
});
}
public void getRooms() {
final ProgressDialog progressDialog = new
ProgressDialog(this);
progressDialog.setMessage("Loading ...");
progressDialog.setCancelable(false);
progressDialog.show();
ApiClient.getInstance(this).getApi().getRoom(student.id).enq
ueue(new Callback() {
public void onResponse(Call call,
Response response) {
if (response.isSuccessful()) {
if (response.body().status) {
if(response.body().data.size() !=
0){ String[] kelas = new
String[response.body().data.size()];
for (int i = 0; i < kelas.length; i++) {
kelas[i] =
response.body().data.get(i).name; }
spinnerRoom.setItems(kelas);
listRoom = response.body().data;
getLocation(progressDialog);
}else{
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Anda tidak
terdaftar dalam kelas", Toast.LENGTH_SHORT).show();}
} else {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(),
response.body().message, Toast.LENGTH_SHORT).show();}
} else {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Error connecting to
server", Toast.LENGTH_SHORT).show();}}
public void onFailure(Call call,
Throwable t) {
Toast.makeText(getApplicationContext(), "Error connecting to
server", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();} });}
public void getLocation(final ProgressDialog
progressDialog){
ApiClient.getInstance(this).getApi().getSchool().enqueue(new
Callback() {
public void onResponse(Call
call, Response response) {
if (response.isSuccessful()) {

Universitas Sumatera Utara

if (response.body().status) {
school = response.body().data;
setSchoolLocation();} else {
Toast.makeText(getApplicationContext(),
response.body().message, Toast.LENGTH_SHORT).show(); }
} else {
Toast.makeText(getApplicationContext(), "Error connecting to
server", Toast.LENGTH_SHORT).show(); }
progressDialog.dismiss();}
public void onFailure(Call call, Throwable
t) { Toast.makeText(getApplicationContext(), "Error
connecting to server", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();} });}
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
Log.d("PERMITION", "Permition granted"); } else {
Log.d("PERMITION", "Permition denied");} return;}
} }
private void addLocationMarker(Location location){
if (Gmap != null){
try {
if (location != null) {
LatLng position = new LatLng(location.getLatitude(),
location.getLongitude());
changeMap(position);
Gmap.clear();Gmap.addMarker(new MarkerOptions()
.position(new
LatLng(location.getLatitude(), location.getLongitude())));
setSchoolLocation();
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Location not
found", Toast.LENGTH_SHORT).show();
e.printStackTrace();} }
}
public void changeMap(LatLng location) {
Gmap.moveCamera(CameraUpdateFactory.newLatLngZoom(location,
16f));}
public void setSchoolLocation(){
if (Gmap != null){
try {
if (school != null){
LatLng position = new LatLng(school.latitude,
school.longitude);
changeMap(position);
MarkerOptions marker = new MarkerOptions()
.position(new
LatLng(school.latitude, school.longitude));
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.
map_marker));
Gmap.addMarker(marker);
circle = Gmap.addCircle(new Circl