PEMROGRAMAN MOBILE
Dosen Pengampu :
KADEK SUAR WIBAWA, M.T.
Disusun oleh:
I Made Sundhias Yogi Dipa (2005551127)
TEKNOLOGI INFORMASI
FAKULTAS TEKNIK
UNIVERSITASUDAYANA
2022/2023
KATA PENGANTAR
Puji syukur Penulis panjatkan kehadirat Tuhan Yang Maha Esa karena atas segala
berkah dan rahmat-Nya sehingga Penulis dapat menyelesaikan penulisan Laporan
Pemrograman Mobile dalam pembuatan Aplikasi Pemesanan Hotel Berbasis Android
dengan baik dan tepat pada waktunya. Penulis menyampaikan ucapan terimakasih pada
kesempatan ini kepada:
1. Kadek Suar Wibawa, M.T. sebagai Dosen Pengampu mata kuliah Pemrograman
Mobile
2. Semua pihak yang telah banyak membantu, yang tidak dapat Penulis sebutkan satu
persatu.
Penulis mengharapkan semoga dengan dibuatnya laporan ini dapat menambah
wawasan pembaca mengenai Pengembangan Aplikasi Berbasis Android. Penulis menyadari
bahwa dalam penulisan tugas ini masih jauh dari kata sempurna. Oleh karena itu, Penulis
mengharapkan kritik, saran, serta informasi yang bersifat membangun untuk kesempurnaan
laporan ini.
Penulis
DAFTAR ISI
KATA PENGANTAR...................................................................................................2
DAFTAR ISI.................................................................................................................3
BAB I PENDAHULUAN.............................................................................................4
1.1 Latar Belakang................................................................................................4
1.2 Rumusan Masalah...........................................................................................5
1.3 Tujuan.............................................................................................................5
1.4 Manfaat...........................................................................................................5
BAB II TINJAUAN PUSTAKA..................................................................................7
2.1 SYSTEM OPERASI ANDROID......................................................................5
2.2 SEJARAH ANDROID......................................................................................5
2.3 VERSI ANDROID............................................................................................7
2.4 KELEBIHAN DAN KEKURANGAN...........................................................10
2.5 SDK.................................................................................................................13
2.6 AVD................................................................................................................14
2.7 JDK..................................................................................................................15
2.8 ADT.................................................................................................................15
2.9 Eclipse.............................................................................................................16
2.10 Source Coding.................................................................................................16
Pengembang Terpadu yang mendukung proses pembuatan aplikasi berbasis mobile. Salah
satu tugas dari IDE ini adalah menyediakan interface (antarmuka) untuk membuat aplikasi
dan mengelola manajemen file yang terlihat kompleks. Di dalam Android Studio, hal yang
perlu dilakukan adalah menulis, mengedit, atau menyimpan file proyek dengan sebaik –
baiknya.
Selain itu, Android Studio juga memiliki akses untuk SDK (Software Development
Kit) untuk dapat terintegrasi secara langsung. DapAndroid Studio dipilih karena memiliki
banyak fitur yang memudahkan para pembuat program terutama programmer level dasar
Android Software Development Kit (SDK). SDK adalah sebuah ekstensi dari kode Java
yang memperbolehkannya untuk berjalan dengan mulus di device Android. Untuk Java nya
dibutuhkan untuk menulis program, Android SDK sangat diperlukan untuk menjalankan
programnya di Android.
Sehingga ketika menemukan bug pada aplikasi, bisa mengetahui bug tersebut dengan
2.5 SDK
Android-SDK merupakan tools bagi para programmer yang ingin
mengembangkan aplikasi berbasis google android. Android SDK mencakup
seperangkat alat pengembangan yang komprehensif. Android SDK terdiri dari
debugger, libraries, handset emulator,dokumentasi, contoh kode, dan tutorial. Saat
ini Android sudah mendukung arsitektur x86 pada Linux (distribusi Linux apapun
untuk desktop modern), Mac OS X 10.4.8 atau lebih, Windows XP atau Vista.
Persyaratan mencakup JDK, Apache Ant dan Python 2.2 atau yang lebih baru.
IDE yang didukung secara resmi adalah Eclipse 3.2 atau lebih dengan
menggunakan pluginAndroid Development Tools (ADT), dengan ini pengembang
dapat menggunakan teks editor untuk mengedit file Java dan XML serta
menggunakan peralatan command line untuk menciptakan, membangun,
melakukan debug aplikasi Android dan pengendalian perangkat Android
(misalnya, reboot, menginstal paket perangkat lunak dengan jarak jauh).
Android SDK telah dirilis pada tanggal 12 November 2007. Dan pada
tanggal 15 Juli 2008 tim Android Developer Challenge sengaja mengirimkan
email ke semua pendatang di Android Developer Challenge untuk mengumumkan
bahwa rilis SDK terbaru telah tersedia pada halaman download pribadi. Email
tersebut juga ditujukan kepada pemenang Android Developer Challenge putaran
pertama. Sebuah penyataan bahwa Google telah menyediakan rilis SDK terbaru
untuk beberapa pengembang dan bukan untuk orang lain.
Pada tanggal 18 Agustus 2008, Android SDK 0.9 beta dirilis. Rilis ini
menyediakan API yang diperbarui dan diperluas, perbaikan pada alat-alat
pengembangan dan desain terbaru untuk layar awal. Petunjuk untuk meng-
upgrade SDK sudah tersedia pada rilis sebelumnya. Pada tanggal 23 September
2008, Android 1.0 SDK telah dirilis. Pada tanggal 9 Maret 2009, Google merilis
versi 1.1 untuk telepon seluler Android. Rilis terbaru tersebut termasuk dukungan
untuk pencarian dengan suara, harga aplikasi, perbaikan jam alarm, perbaikan
pengiriman gmail, perbaikan surat pemberitahuan dan peta.
Pada pertengahan Mei 2009, Google merilis versi 1.5 (Cupcake) pada
sistem operasi Android dan SDK. Pembaruan ini termasuk banyak fitur baru
seperti perekaman video, dukungan untuk bluetooth, sistem keyboard pada layar
dan pengenalan suara. Rilis ini juga membuka AppWidget framework kepada
para pengembang yang memungkinkan orang untuk membuat widget sendiri pada
halaman home. Pada September 2009 versi 1.6 (Donut) dirilis yang menampilkan
hasil pencarian yang lebih baik dan penggunaan indikator baterai.
2.7 JDK
Java Development Kit (JDK) ini wajib hukumnya, karena Android
merupakan aplikasi yang dibangun dengan menggunakan bahasa pemrograman
Java. Untuk mendapatkan installer JDK bisa mengunduh / medownload langsung
di situs resminya. Pilihlah installer JDK (java) yang sesuai dengan sistem operasi
komputer kita. JDK yang bisa digunakan untuk membuat program Android adalah
JDK 5 dan 6 atau versi terbarunya.
2.8 ADT
Android Development Tools (ADT) adalah plugin yang didesain untuk IDE
Eclipse yang memberikan kita kemudahan dalam mengembangkan aplikasi
android dengan menggunakan IDE Eclipse. Dengan menggunakan ADT untuk
Eclipse akan memudahkan kita dalam membuat aplikasi project android, membuat
GUI aplikasi, dan menambakan komponen-kompenen yang lainnya, begitu juga
kita dapat melakukan running aplikasi menggunakan Android SDK melalui
Eclipse. Dengan ADT juga kita dapat melakukan pembuatan package android
(.apk) yang digunakan untuk distribusi aplikasi android yang kita rancang.
2.9 Eclipse
Eclipse adalah sebuah IDE (Integrated Development Environment) untuk
mengembangkan perangkat lunak dan dapat dijalankan di semua platform
(platform-independent).
Berikut ini adalah sifat dari Eclipse:
Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows,
Linux, Solaris, AIX, HP-UX dan Mac OS X.
Mulit-language: Eclipse dikembangkan dengan bahasa pemrograman Java,
akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa
pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain
sebagainya.
Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun
bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat
lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan
lain sebagainya.
<LinearLayout
</LinearLayout>
<RelativeLayout
</ RelativeLayout>
<Button
Android:text=”ENTER”
Android:layout_width=”wrap_content”
Android:layout_heinght=”wrap_conent”
Andrid:id=“@+id/btn_1”
Andrid:Background=“@drawable/kucing”
untuk membuat button yang bergambar kucing dengan menggunakan
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
Andrid:Background=“@drawable/kucing” , setiap button harus mempunyai id
untuk identitas button dengan Andrid:id=“@+id/btn_1”.
berfungsi untuk memangil class lain . panggil_class adalah variabel dari Intent.
Class yang dituju adalah S01Activity.
BAB 3
PEMBAHASAN
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import com.azhar.villasreserved.decoration.LayoutMarginDecoration;
import com.azhar.villasreserved.model.ModelMain;
import com.azhar.villasreserved.utils.Tools;
import com.azhar.villasreserved.R;
import com.azhar.villasreserved.adapter.MainAdapter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
RecyclerView rvMainMenu;
Button btnMove;
Button btnHome;
LayoutMarginDecoration gridMargin;
ModelMain mdlMainMenu;
List<ModelMain> lsMainMenu = new ArrayList<>();
TextView tvToday;
String hariIni;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
public void onSelected(ModelMain mdlMain) {
switch (mdlMain.getTxtName()) {
case "Hotel":
startActivityForResult(new Intent(MainActivity.this, HotelActivity.class), 1);
break;
case "Kuliner":
startActivityForResult(new Intent(MainActivity.this, KulinerActivity.class), 1);
break;
case "Tempat Ibadah":
startActivityForResult(new Intent(MainActivity.this, PrayPlaceActivity.class),
1);
break;
case "Wisata":
startActivityForResult(new Intent(MainActivity.this, WisataActivity.class), 1);
break;
}
}
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="10dp"
android:text="Daftar Kategori"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMainMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp" />
</RelativeLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</FrameLayout>
DetailHotelActivity
package com.azhar.villasreserved.activities;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import com.azhar.villasreserved.model.ModelHotel;
import com.azhar.villasreserved.R;
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.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
Button btnMove;
Button btnHome;
Button btnWeb;
Button btnShare;
Toolbar tbDetailHotel;
GoogleMap googleMaps;
TextView txtNameHotel, txtAddressHotel, txtPhoneHotel;
String NameHotel, AddressHotel, PhoneHotel;
ModelHotel modelHotel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail_hotel);
btnMove = findViewById(R.id.btnMove);
btnHome = findViewById(R.id.btnHome);
btnWeb = findViewById(R.id.btnWeb);
btnShare = findViewById(R.id.btnShare);
tbDetailHotel = findViewById(R.id.tbDetailHotel);
tbDetailHotel.setTitle("Detail Villa");
setSupportActionBar(tbDetailHotel);
assert getSupportActionBar() != null;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//show maps
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
assert mapFragment != null;
mapFragment.getMapAsync(this);
//get String
NameHotel = modelHotel.getTxtNamaHotel();
AddressHotel = modelHotel.getTxtAlamatHotel();
PhoneHotel = modelHotel.getTxtNoTelp();
//set Id
txtNameHotel = findViewById(R.id.tvNamaHotel);
txtAddressHotel = findViewById(R.id.tvAddressHotel);
txtPhoneHotel = findViewById(R.id.tvPhoneHotel);
btnHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(DetailHotelActivity.this, MainActivity.class);
startActivity(i);
}
});
btnWeb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://google.com/maps/"));
startActivity(i);
}
});
btnShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Terima Kasih telah menggunakan
aplikasi kami !, Silahkan share kepada teman dan orang terdekat anda mengenai
pengalaman anda menggunakan aplikasi kami :)");
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
});
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onMapReady(GoogleMap googleMap) {
//get LatLong
String[] latlong = modelHotel.getKoordinat().split(",");
double latitude = Double.parseDouble(latlong[0]);
double longitude = Double.parseDouble(latlong[1]);
googleMaps = googleMap;
LatLng latLng = new LatLng(latitude, longitude);
googleMaps.addMarker(new MarkerOptions().position(latLng).title(NameHotel));
googleMaps.moveCamera(CameraUpdateFactory.newLatLng(latLng));
googleMaps.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16));
googleMaps.getUiSettings().setAllGesturesEnabled(true);
googleMaps.getUiSettings().setZoomGesturesEnabled(true);
googleMaps.setTrafficEnabled(true);
}
}
Activity_detail_hotel.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/tbDetailHotel"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/AppTheme.AppBarOverlay"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:titleTextAppearance="@style/Toolbar.TitleText" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_margin="10dp"
app:cardCornerRadius="5dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<fragment xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="250dp"
map:mapType="normal" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardCornerRadius="5dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivDetailHotel"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_hotel"
android:tint="@android:color/white" />
<TextView
android:id="@+id/tvNamaHotel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivDetailHotel"
android:textSize="14sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivAddressHotel"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_loc"
android:tint="@android:color/white" />
<TextView
android:id="@+id/tvAddressHotel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivAddressHotel"
android:textSize="14sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivPhoneHotel"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_phone"
android:tint="@android:color/white" />
<TextView
android:id="@+id/tvPhoneHotel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivPhoneHotel"
android:textSize="14sp" />
</RelativeLayout>
<Button
android:id="@+id/btnWeb"
android:text="BUKA DI WEB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnWeb"/>
<Button
android:id="@+id/btnMove"
android:text="MENU LAIN"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnMove"/>
<Button
android:id="@+id/btnHome"
android:text="MENU UTAMA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnHome"/>
<Button
android:id="@+id/btnShare"
android:text="SHARE"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnShare"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;
import com.azhar.villasreserved.model.ModelKuliner;
import com.azhar.villasreserved.R;
import com.azhar.villasreserved.api.Api;
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.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import org.json.JSONException;
import org.json.JSONObject;
Button btnMove;
Button btnHome;
Button btnWeb;
Button btnShare;
Toolbar tbDetailKuliner;
GoogleMap googleMaps;
TextView tvNamaKuliner, tvAddressKuliner, tvPhoneKuliner, tvOpenTime, tvDesc;
String idKuliner, NamaKuliner, AddressKuliner, PhoneKuliner, OpenTime, Desc;
ModelKuliner modelKuliner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail_kuliner);
btnMove = findViewById(R.id.btnMove);
btnWeb = findViewById(R.id.btnWeb);
btnHome = findViewById(R.id.btnHome);
btnShare = findViewById(R.id.btnShare);
tbDetailKuliner = findViewById(R.id.tbDetailKuliner);
tbDetailKuliner.setTitle("Detail Kuliner");
setSupportActionBar(tbDetailKuliner);
assert getSupportActionBar() != null;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//show maps
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
//set Id
tvNamaKuliner = findViewById(R.id.tvNamaKuliner);
tvAddressKuliner = findViewById(R.id.tvAddressKuliner);
tvPhoneKuliner = findViewById(R.id.tvPhoneKuliner);
tvOpenTime = findViewById(R.id.tvOpenTime);
tvDesc = findViewById(R.id.tvDesc);
getDetailKuliner();
}
btnMove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(DetailKulinerActivity.this, WisataActivity.class);
startActivity(i);
}
});
btnHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(DetailKulinerActivity.this, MainActivity.class);
startActivity(i);
}
});
btnWeb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://google.com/maps/"));
startActivity(i);
}
});
btnShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Terima Kasih telah menggunakan
aplikasi kami !, Silahkan share kepada teman dan orang terdekat anda mengenai
pengalaman anda menggunakan aplikasi kami :)");
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
});
}
//set Text
tvNamaKuliner.setText(NamaKuliner);
tvAddressKuliner.setText(AddressKuliner);
tvPhoneKuliner.setText(PhoneKuliner);
tvOpenTime.setText(OpenTime);
tvDesc.setText(Desc);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(DetailKulinerActivity.this,
"Gagal menampilkan data!", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onError(ANError anError) {
Toast.makeText(DetailKulinerActivity.this,
"Tidak ada jaringan internet!", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
//get LatLong
String[] latlong = modelKuliner.getKoordinat().split(",");
double latitude = Double.parseDouble(latlong[0]);
double longitude = Double.parseDouble(latlong[1]);
googleMaps = googleMap;
LatLng latLng = new LatLng(latitude, longitude);
googleMaps.addMarker(new
MarkerOptions().position(latLng).title(NamaKuliner));
googleMaps.moveCamera(CameraUpdateFactory.newLatLng(latLng));
googleMaps.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16));
googleMaps.getUiSettings().setAllGesturesEnabled(true);
googleMaps.getUiSettings().setZoomGesturesEnabled(true);
googleMaps.setTrafficEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
Source code Detail Kuliner
Source code pada detail kuliner adalah layout yang akan menampilkan list
menu kuliner berupa image botton yang berisi deskripsi dan juga botton untuk
berpindah ke menu lainnya.
Activity_detail_kuliner.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/tbDetailKuliner"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/AppTheme.AppBarOverlay"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:titleTextAppearance="@style/Toolbar.TitleText" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_margin="10dp"
app:cardCornerRadius="5dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<fragment xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="250dp"
map:mapType="normal" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardCornerRadius="5dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<TextView
android:id="@+id/tvDesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:textSize="14sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivDetailKuliner"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_kuliner"
android:tint="@android:color/white" />
<TextView
android:id="@+id/tvNamaKuliner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivDetailKuliner"
android:textSize="14sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivAddressKuliner"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_loc"
android:tint="@android:color/white"
android:contentDescription="TODO" />
<TextView
android:id="@+id/tvAddressKuliner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivAddressKuliner"
android:textSize="14sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivOpenTime"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_time"
android:tint="@android:color/white" />
<TextView
android:id="@+id/tvOpenTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivOpenTime"
android:textSize="14sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivPhoneKuliner"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_phone"
android:tint="@android:color/white" />
<TextView
android:id="@+id/tvPhoneKuliner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivPhoneKuliner"
android:textSize="14sp" />
</RelativeLayout>
<Button
android:id="@+id/btnWeb"
android:text="BUKA DI WEB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnWeb"/>
<Button
android:id="@+id/btnMove"
android:text="MENU LAIN"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnMove"/>
<Button
android:id="@+id/btnHome"
android:text="MENU UTAMA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnHome"/>
<Button
android:id="@+id/btnShare"
android:text="SHARE"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnShare"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
DetailWisataActivity
package com.azhar.villasreserved.activities;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;
import com.azhar.villasreserved.model.ModelWisata;
import com.azhar.villasreserved.R;
import com.azhar.villasreserved.api.Api;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import org.json.JSONException;
import org.json.JSONObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail_wisata);
btnMove = findViewById(R.id.btnMove);
btnHome = findViewById(R.id.btnHome);
btnWeb = findViewById(R.id.btnWeb);
btnShare = findViewById(R.id.btnShare);
tbDetailWisata = findViewById(R.id.tbDetailWisata);
tbDetailWisata.setTitle("Detail Wisata");
setSupportActionBar(tbDetailWisata);
assert getSupportActionBar() != null;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//set Id
imgWisata = findViewById(R.id.imgWisata);
tvNamaWisata = findViewById(R.id.tvNamaWisata);
tvDescWisata = findViewById(R.id.tvDescWisata);
//get Image
Glide.with(this)
.load(modelWisata.getGambarWisata())
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imgWisata);
getDetailWisata();
}
btnMove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(DetailWisataActivity.this, HotelActivity.class);
startActivity(i);
}
});
btnHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(DetailWisataActivity.this, MainActivity.class);
startActivity(i);
}
});
btnWeb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://google.com/maps/"));
startActivity(i);
}
});
btnShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Terima Kasih telah menggunakan
aplikasi kami !, Silahkan share kepada teman dan orang terdekat anda mengenai
pengalaman anda menggunakan aplikasi kami :)");
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
});
}
NamaWisata = response.getString("nama");
Desc = response.getString("deskripsi");
//set Text
tvNamaWisata.setText(NamaWisata);
tvDescWisata.setText(Desc);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(DetailWisataActivity.this,
"Gagal menampilkan data!", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onError(ANError anError) {
Toast.makeText(DetailWisataActivity.this,
"Tidak ada jaringan internet!", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/tbDetailWisata"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/AppTheme.AppBarOverlay"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:titleTextAppearance="@style/Toolbar.TitleText" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_margin="10dp"
app:cardCornerRadius="5dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imgWisata"
android:layout_width="match_parent"
android:layout_height="250dp"
android:scaleType="fitXY" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardCornerRadius="5dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivNamaWisata"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_wisata"
android:tint="@android:color/white" />
<TextView
android:id="@+id/tvNamaWisata"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivNamaWisata"
android:textSize="14sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<ImageView
android:id="@+id/ivDescWisata"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:background="@drawable/bg_circle_radius_primary"
android:padding="10dp"
android:src="@drawable/ic_dtl_desc"
android:tint="@android:color/white" />
<TextView
android:id="@+id/tvDescWisata"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/ivDescWisata"
android:textSize="14sp" />
</RelativeLayout>
<Button
android:id="@+id/btnWeb"
android:text="BUKA DI WEB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnWeb"/>
<Button
android:id="@+id/btnMove"
android:text="MENU LAIN"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnMove"/>
<Button
android:id="@+id/btnHome"
android:text="MENU UTAMA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnHome"/>
<Button
android:id="@+id/btnShare"
android:text="SHARE"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="btnShare"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Menampilkan share text dari aplikasi villas reserved. Terdapat text yang
sudah ditulis pada source code aplikasi yang bisa digunakan untuk berbagai
keperluan seperti promosi dan mengshare link website.
BAB 4
PENUTUP
4.1 Kesimpulan
Bedasarkan pada bab-bab sebelumnya, maka penelitian dapat menyimpulkan
hal-hal sebagai berikut:
2. Dalam proses aplikasi pembelajaran sebagai alat bantu belajar bahasa inggris
ini, mudah digunakan oleh para anak hanya cukup memerlukan klik pada
button-button yan tersedia pada setiap tampilan, untuk mendapatkan materi-
materi yang disajikan.
4.2 Saran
Berdasarkan hasil yang diperoleh, maka saran-saran untuk pengembangan
Aplikasi Pembelajaran sebagai alat bantu belajar Bahasa Inggris, yaitu: