82
DAFTAR PUSTAKA
Al Fatih, Muhammad Faris. 2013. UML (Unified Modeling Language) dan 13 Jenis Diagram. https://faris6593.blogspot.co.id. Diakses pada tanggal 28 Agustus 2018.
Anonim. 2007. Pengenalan JSON. https://www.json.org. Diakses pada tanggal 10 Agustus 2018.
Anonim. 2015. Apa itu Hortikultura. https://mediatani.co/apa-itu-hortikultura/ diakses tanggal 28 Agustus 2018.
Anonim. 2016. Definisi monitoring menurut para ahli. https://www.ruangpintar.com/2016/10/definisi-pengertian-monitoring-menurut.html. Diakses tanggal 28 Agustus 2018.
Anonim. 2016. Balsamiq mockup. http://enggar.net/2016/01/balsamiq-mockup/ Diakses pada tanggal 27 Juli 2018.
Anonim. 2018. Pengertian Kuisioner. http://www.sumberpengertian.co. Diakses pada tanggal 1 September 2018.
Badan Penelitian dan Pengembangan Pertanian. Budidaya Cabai Merah. http://hortikultura.litbang.pertanian.go.id/Modul%20PTT/Cabai/Budiday a%20Tanaman%20Cabai.pdf. Diakses pada tanggal 28 Juli
Dahlan, Bayu Niko. 2016. Mengenal dan Memulai Pemrograman Java | Belajar Java. https://www.codepolitan.com. Diakses pada tanggal 10 Agustus 2018.
Haryandi, Sepry. 2016. Mengenal Restful API. https://developers.kudo.co.id. Diakses pada tanggal 11 Agustus 2018.
Munir, Fahmilatief. 2016. Pengertian, Jenis Jenis, Simbol Simbol, dan Contoh Flowchart. https://fahmilatiefmunir.blogspot.co.id. Diakses pada tanggal 28 Agustus 2018.
Retno Hendrowati. 2013. Perancangan Pengujian Beroriantasi Objek. Yogyakarta: Andi.
Ritonga, Pahmi. 2015. Pengertian Unifed Modeling Language (UML) Dan Modelnya Menurut Pakar Dan Ahli. http://www.bangpahmi.com. Diakses pada tanggal 11 Juni 2018
83
Safaat, Nasrudin. 2015. Pemograman Aplikasi Mobile Smartphone Dan Tablet PC Berbasis Android. Bandung: Informatika.
Silvia Dewi, Mega. 2012. Penggunaan aplikasi adobe photoshop dalam meningkatkan keterampilan editing foto bagi anak tunarungu. Jurnal ilmiah pendidikan khusus. 1, 263
Sumami, nani dan Hidayat, Achmad. 2005. Budidaya Bawang Merah. Bandung : Balai Penelitian Tanaman Sayuran.
LAMPIRAN 1 SOURCES CODE Sources code Kebunku
public class Fragment_Home extends Fragment { @BindView(com.example.apenk.holtikultur.R.id.rv_fragm ent_home) RecyclerView rv_home; @BindView(com.example.apenk.holtikultur.R.id.btn_plus ) FloatingActionButton btn_float; private HomeAdapter adapter;
private List<KebunModel> list_kebun; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v =
inflater.inflate(com.example.apenk.holtikultur.R.layo ut.fragment_fragment__home, container, false);
ButterKnife.bind(this,v);
adapter = new HomeAdapter(getActivity()); rv_home.setLayoutManager(new LinearLayoutManager(getActivity())); rv_home.setAdapter(adapter); adapter.notifyDataSetChanged(); // startActivity(new Intent(getActivity(),Detailstatus.class)); btn_float.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { startActivity(new Intent(getActivity(),Tambah_Kebun.class)); } }); return v; } @Override
public void onResume() { super.onResume(); getData();
}
public void getData() { String id_petani = new
UserSession(getActivity()).getId_Petani(); final StringRequest request = new StringRequest(Request.Method.GET,
URL.get_kebun+id_petani, new Response.Listener<String>() { @Override
public void onResponse(String response) { Log.e("response home",response);
try {
JSONObject respon = new JSONObject(response);
if (respon.getInt("status") == 200){
JSONArray data = respon.getJSONArray("data");
Gson gson = new Gson(); TypeToken<List<KebunModel>> token = new TypeToken<List<KebunModel>>(){};
list_kebun =
gson.fromJson(data.toString(),token.getType());
adapter.setDatas(list_kebun); }else {
Toast.makeText(getActivity(), "Whoops, something wrong",
Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError error) { if (error.getMessage() != null){ VolleyHandler.handleVolleyError(getActivity(),error); Log.e("Error login",error.getMessage()); } } }); MySingleton.getInstance(getActivity()).addToRequestQu
eue(request); }
Source Code Notification
public class Fragment_Notification extends Fragment implements ItemClickListener {
private int jobId = 10;
private static final long REFRESH_INTERVAL = 15 * 1000;
private NotifAdapter adapter; private List<NotifModel> datas; public Fragment_Notification() {
// Required empty public constructor }
@BindView(R.id.rv_notif) RecyclerView rv_home; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment View v =
inflater.inflate(R.layout.fragment_fragment__notifica tion, container, false);
ButterKnife.bind(this, v);
// List<String> datas = new ArrayList<>(); // for (int i=0;i<10;i++){
// datas.add(""); // }
adapter = new NotifAdapter(getActivity()); adapter.setListener(this); rv_home.setLayoutManager(new LinearLayoutManager(getActivity())); rv_home.setAdapter(adapter); // AppCompatActivity activity = (AppCompatActivity) getActivity(); // activity.setSupportActionBar(my_toolbar); return v; } @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
getActivity().getMenuInflater().inflate(R.menu.notifi cation, menu);
super.onCreateOptionsMenu(menu, inflater); }
@Override
public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.startNotif){ startDispatcher(); } else if (item.getItemId() == R.id.cancelNotif){ cancelDispatcher(); } return super.onOptionsItemSelected(item); }
public void startDispatcher() {
ComponentName componentName = new
ComponentName(getActivity(), GetNotification.class); JobInfo.Builder builder = new
JobInfo.Builder(jobId, componentName); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_A NY); builder.setRequiresDeviceIdle(false); builder.setRequiresCharging(false); builder.setPeriodic(REFRESH_INTERVAL * 60); } else { builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_A NY); builder.setRequiresDeviceIdle(false); builder.setRequiresCharging(false); builder.setPeriodic(REFRESH_INTERVAL); }
JobScheduler jobScheduler = (JobScheduler) getActivity().getSystemService(Context.JOB_SCHEDULER_ SERVICE);
jobScheduler.schedule(builder.build()); Toast.makeText(getActivity(), "Job Service started", Toast.LENGTH_SHORT).show();
}
public void cancelDispatcher() { JobScheduler tm = (JobScheduler)
getActivity().getSystemService(Context.JOB_SCHEDULER_ SERVICE);
tm.cancel(jobId);
Toast.makeText(getActivity(), "Job Service canceled", Toast.LENGTH_SHORT).show();
getActivity().finish(); }
@OnClick(R.id.history_btn) public void detail () { startActivity(new
Intent(getActivity(),History_notif.class)); }
@Override
public void onClick(View view, int position) { final NotifModel notifModel =
datas.get(position); Intent i = new Intent(getContext(),DetailNotif.class); i.putExtra("namatanaman", notifModel.getJenis_tanaman().getNama_tanaman()); i.putExtra("lokasi", notifModel.getLokasi()); i.putExtra("kondisi_suhu", notifModel.getNotif().getTemperature().getKeterangan( )); i.putExtra("kondisi_airtanah", notifModel.getNotif().getMoisture().getKeterangan()); i.putExtra("kondisi_kelembaban", notifModel.getNotif().getHumadity().getKeterangan()); i.putExtra("kondisi_levelair", notifModel.getNotif().getLevelwater().getKeterangan() ); i.putExtra("kondisi_nutrisi", notifModel.getNotif().getPh().getKeterangan()); i.putExtra("kondisi_cahaya", notifModel.getNotif().getLight().getKeterangan()); startActivity(i); } @Override
public void onResume() { super.onResume(); getData();
}
public void getData() { String id_petani = new
final StringRequest request = new StringRequest(Request.Method.GET,
URL.get_notification+id_petani, new Response.Listener<String>() {
@Override
public void onResponse(String response) { Log.e("respon tanaman",response); try {
JSONObject respon = new JSONObject(response);
if (respon.getInt("status") == 200) {
JSONArray data = respon.getJSONArray("data");
Gson gson = new Gson(); TypeToken<List<NotifModel>> token = new TypeToken<List<NotifModel>>() {
}; datas = gson.fromJson(data.toString(), token.getType()); adapter.setDatas(datas); } else { Toast.makeText(getActivity(), "Whoops, something wrong",
Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError error) { if (error.getMessage() != null) { VolleyHandler.handleVolleyError(getActivity(), error); Log.e("Error login", error.getMessage()); } } }); MySingleton.getInstance(getActivity()).addToRequestQu eue(request); }
Source Code Penjadwalan
public class Fragment_Penjadwalan extends Fragment { ViewPager mViewPager;
TabLayout mTablayout;
TabPageAdapterPenjadwalan mAdapter; @Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v =
inflater.inflate(R.layout.fragment_fragment__penjadwa lan, container, false);
mViewPager = v.findViewById(R.id.main_viewpager); mTablayout = v.findViewById(R.id.main_tab_layout); mTablayout.addTab(mTablayout.newTab().setText("Pupuk" )); mTablayout.addTab(mTablayout.newTab().setText("Siram" )); mTablayout.setTabGravity(TabLayout.GRAVITY_FILL); mAdapter = new TabPageAdapterPenjadwalan((getActivity()).getSupportF ragmentManager()); mViewPager.setAdapter(mAdapter); mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTablayout)); mTablayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition()); }
@Override
public void onTabUnselected(TabLayout.Tab tab) {
@Override
public void onTabReselected(TabLayout.Tab tab) { } }); return v; } @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
LAMPIRAN 3 BIODATA PENULIS TUGAS AKHIR
Biodata Penulis Tugas Akhir
Nama : Supardi
Nomor Induk Mahasiswa : 1503107 Jenis Kelamin : Pria / Wanita
Tempat, Tanggal Lahir : Indramayu, 26 Oktober 1996 Status : Nikah / Belum Nikah
Agama : Islam
Asal Ijazah Sekolah : Nama Sekolah Kota Sekolah Tahun Ijazah SD : SDN Panyindangan Indramayu 2007 Wetan 2 SMP : SMPN Unggulan Indramayu 2010 Sindang SMA : SMKN 1 Indramayu 2013 Losarang
Program Studi/Jurusan : Teknik Informatika
Alamat : Desa Panyindangan Wetan Blok C Rt 25 RW 05, Kec. Sindang – Kab. Indramayu
No. Handphone : 0895334192911
Email : [email protected] Nama Orang Tua : Kasan – Rawiyem
Pekerjaan Orang Tua : Petani – Ibu Rumah Tangga
Alamat Orang Tua : Desa Panyindangan Wetan Blok C Rt 25 RW 05, Kec. Sindang – Kab. Indramayu
Judul Tugas Akhir : Aplikasi Monitoring Tanaman Hortikultura Pada Pertanian Indramayu Berbasis Android
Dosen Pembimbing : - A Sumarudin, S.Pd., MT., M.Sc - Azran Budi Arief, ST., MT.
Indramayu, 24 Agustus 2018 Penulis,
Supardi NIM. 1503107