Tutorial Membuat Aplikasi GPS dan Compass Menggunakan Android Studio
Sunday, 2 September 2018
Add Comment
Hai bertemu lagi dengan saya pada blog saya malasnugas.com disini saya akan memberikan sebuah program untuk referensi kalian jika kalian akan membuat sebuah Aplikasi GPS ataupun Compass menggunakan Android Studio .Ketika Google memulai untuk memberikan layanan peta beberapa tahun yang
lalu, masih belum bisa dipastikan apakah dapat digabungkan dengan aplikasi perangkat mobile. Dan
pada saat versi web pertama dari aplikasi Google Map dirilis, iPhone sudah mulai mengembangkan
untuk dapat digabungkan dengan perangkat mobile. Dan sekarang, Google Map dapat diakses secara
langsung melalui aplikasi Android dengan menggunakan Google Maps Android API.Menggunakan Google Map membutuhkan koneksi internet. Sehingga kita perlu
memberikan
<uses-permission android:name="android.permission.INTERNET"/> |
ACCESS_FINE_LOCATION untuk dapat menggunakan GPS.
APLIKASI DENGAN GOOGLE MAP
Membuat aplikasi android yang menggunakan Google Maps Android API v2 memerlukan beberapa langkah,
sebagai berikut:
1. Install Android SDK
2. Download dan konfigurasi Google Play Service SDK, termasuk didalamnya Google Maps Android API.
3. Miliki API key dengan cara register project ke Google Developer Console.
4. Tambahkan setting-an yang diperlukan pada AndroidManifest
5. Tambahkan sebuah peta pada aplikasi
6. Jalankan aplikasi.
Berikut detil langkah-langkahnya:
1. Install Android SDK. Langkah pertama sudah dilakukan.
2. Download dan konfigurasi Google Play Service SDK, termasuk didalamnya Google Maps Android API.
Install Google Play Service SDK, jika pada android studio belum ada.
3. Buat activity dengan memilih map activity, langkah tersebut secara otomatis menambahkan pengaturan
tentang map.
4. Tambahkan versi Google Play service pada manifest dengan mengedit AndroidManifest.xml.
<meta-data
android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> |
6. Untuk mendapatkan kunci, masuk ke Google Console (console.developers.google.com)
7. Pilih Credential, kemudian API key.
8. API key sudah dibuat, copykan kode yang ada di kotak Yout API key.
9. Setelah itu, tambahkan kunci yang diperoleh pada AndroidManifest
<meta-data
android :name= "com.google.android.geo.API_KEY" android :value= "YOUR_API_KEY" /> |
<uses-permission android:name="permission_name"/> |
<uses-permission android:name="android.permission.INTERNET"/> |
android.permission.INTERNET Digunakan oleh API untuk mendownload peta dari Google Maps
Server.
android.permission.ACCESS_NETWORK_STATE Untuk mnegecek koneksi.
android.permission.WRITE_EXTERNAL_STORAGE Untuk menyimpan ke penyimpan eksternal.
Permissin berikut dapat digunakan.
android.permission.ACCESS_COARSE_LOCATION Untuk menggunakan Wifi untuk menentukan
lokasi device.
android.permission.ACCESS_FINE_LOCATION untuk agar API dapat menggunakan Global
Positioning System (GPS) untuk menentukan lokasi peralatan dalam area yang sangat kecil.
<uses-permission
android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- The following two permissions are not required to use Google Maps Android API v2, but are recommended. --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> |
1. Pertama kita akan membuat project untuk pendeteksian lokasi.
2. Buat project baru. Kemudian buat sebuah activity dengan nama activity_main.xml. Kodingnya
adalah sebagai berikut.
<LinearLayout xmlns: android=
"http://schemas.android.com/apk/res/android"
xmlns: tools = "http://schemas.android.com/tools" android :layout_width= "match_parent" android :layout_height= "match_parent" android :paddingBottom= "@dimen/activity_vertical_margin" android :paddingLeft= "@dimen/activity_horizontal_margin" android :paddingRight= "@dimen/activity_horizontal_margin" android :paddingTop= "@dimen/activity_vertical_margin" tools :context= ".MainActivity" android :orientation= "vertical" > <LinearLayout android :layout_width= "match_parent" android :layout_height= "wrap_content" android :layout_marginTop= "40dip" > <TextView android :id= "@+id/TextView01" android :layout_width= "wrap_content" android :layout_height= "wrap_content" android :layout_marginLeft= "10dip" android :layout_marginRight= "5dip" android :text= "Latitude: " android :textSize= "20dip" ></TextView> <TextView android :id= "@+id/TextView02" android :layout_width= "wrap_content" android :layout_height= "wrap_content" android :text= "unknown" android :textSize= "30dip" android :textStyle= "bold" android :textIsSelectable= "false" ></TextView> </LinearLayout> <LinearLayout android :layout_width= "match_parent" android :layout_height= "wrap_content" > <TextView android :id= "@+id/TextView03" android :layout_width= "wrap_content" android :layout_height= "wrap_content" android :layout_marginLeft= "10dip" android :layout_marginRight= "5dip" android :text= "Longitute: " android :textSize= "20dip" ></TextView> <TextView android :id= "@+id/TextView04" android :layout_width= "wrap_content" android :layout_height= "wrap_content" android :text= "unknown" android :textSize= "30dip" android :textStyle= "bold" ></TextView> </LinearLayout> </LinearLayout> |
<string name="app_name">Cari Lokasi</ string> |
<uses-permission android:name= "android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission android:name= "android.permission.NETWORK_PROVIDER" /> <uses-permission android:name= "android.permission.GPS_PROVIDER" /> |
import
android.content.Context;
import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements LocationListener { private TextView latituteField; private TextView longitudeField; private LocationManager locationManager; private String provider; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout. activity_main); latituteField = (TextView) findViewById(R.id. TextView02); longitudeField = (TextView) findViewById(R.id. TextView04); locationManager = (LocationManager) getSystemService(Context. LOCATION_SERVICE); Criteria criteria = new Criteria(); provider = locationManager .getBestProvider(criteria, false); Location location = locationManager .getLastKnownLocation(provider); if (location != null) { System.out.println("Provider " + provider + " has been selected."); onLocationChanged(location); } else { latituteField .setText("Location not available"); longitudeField .setText("Location not available"); } } @Override protected void onResume() { super .onResume(); locationManager .requestLocationUpdates(provider, 400, 1, this); } @Override protected void onPause() { super .onPause(); locationManager .removeUpdates(this); } @Override public void onLocationChanged(Location location) { double lat = (location.getLatitude()); double lng = (location.getLongitude()); latituteField .setText(String.valueOf(lat)); longitudeField .setText(String.valueOf(lng)); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { Toast.makeText(this, "Enabled new provider " + provider, Toast.LENGTH_SHORT).show(); } @Override public void onProviderDisabled(String provider) { Toast.makeText(this, "Disabled provider " + provider, Toast.LENGTH_SHORT).show(); } } |
7. Jika anda menjalankan di emulator, ikuti langkah-langkah berikut
8. Jalankan projetnya. Anda harus masuk ke telnet.
9. Jalankan control panel
10. Buka program and features
11. Klik windows feature on & off (kiri atas)
12. Cari telnet client, centang, kemudian ok
13. Masuk ke command prompt, cmd
14. Ketik > telnet localhost (no port emulator, biasanya 5554)
15. Jika sudah masuk, ketikkan > geo fix <nilai longitude> <nilai latitude>
16. Misalnya > geo fix 30.219470 -97.745361
17. Buat project baru. Tuliskan pada activity_mail.xml. Kodingnya sebagai berikut.
<RelativeLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=http://schemas.android.com/tools android:layout_width= "match_parent" android:layout_height= "match_parent" android:paddingLeft= "@dimen/activity_horizontal_margin" android:paddingRight= "@dimen/activity_horizontal_margin" android:paddingTop= "@dimen/activity_vertical_margin" android:paddingBottom= "@dimen/activity_vertical_margin" tools:context= ".MainActivity" > <TextView android :id= "@+id/tvHeading" android :layout_width= "wrap_content" android :layout_height= "wrap_content" android :layout_centerHorizontal= "true" android :layout_marginBottom= "40dp" android :layout_marginTop= "20dp" android :text= "Heading: 0.0" /> <ImageView android :id= "@+id/imageViewCompass" android :layout_width= "wrap_content" android :layout_height= "wrap_content" android :layout_below= "@+id/tvHeading" android :layout_centerHorizontal= "true" android:src= "@drawable/compass" /> </RelativeLayout> |
import
android.hardware.Sensor;
import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements SensorEventListener { private ImageView image; private float currentDegree = 0f; private SensorManager mSensorManager; TextView tvHeading; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout. activity_main); image = (ImageView) findViewById(R.id. imageViewCompass); tvHeading = (TextView) findViewById(R.id. tvHeading); mSensorManager = (SensorManager) getSystemService( SENSOR_SERVICE); } @Override protected void onResume() { super .onResume(); mSensorManager .registerListener(this, mSensorManager .getDefaultSensor(Sensor. TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME); } @Override protected void onPause() { super .onPause(); mSensorManager .unregisterListener(this); } @Override public void onSensorChanged(SensorEvent event) { float degree = Math.round(event.values [0]); tvHeading .setText("Heading: " + Float. toString(degree) + " degrees"); RotateAnimation ra = new RotateAnimation( currentDegree , -degree, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); ra.setDuration(210); ra.setFillAfter(true); image .startAnimation(ra); currentDegree = -degree; } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } } |
20. Masuk kembali ke telnet
21. Jika masuk, ketik > sensor set orientation 90:0:0 (angka 90 adalah sudut dari utara)
22. Amati hasilnya.
23. Project ketiga adalah menggunakan google map.
24. Buat project baru. Pilih Google Maps Activity. Perhatikan kembali langkah di atas (pada bagian teori). Pada activity_maps akan berisi kode berikut.
<fragment xmlns: android=
"http://schemas.android.com/apk/res/android"
xmlns: map = "http://schemas.android.com/apk/res-auto" xmlns: tools = "http://schemas.android.com/tools" android :id= "@+id/map" android :name= "com.google.android.gms.maps.SupportMapFragment" android :layout_width= "match_parent" android :layout_height= "match_parent" tools :context= "belajar.coba.firman.trylokasi2.MapsActivity" /> |
import
android.support.v4.app.FragmentActivity;
import android.os.Bundle; 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; public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private GoogleMap mMap; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout. activity_maps); //Obtain the SupportMapFragment and get notified when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; // Add a marker in center and move the camera LatLng sydney = new LatLng(0, 0); mMap .addMarker(new MarkerOptions().position(sydney).title( "Marker in Center")); mMap .moveCamera(CameraUpdateFactory.newLatLng (sydney)); } } |
<?
xml version=
"1.0"
encoding=
"utf-8"
?>
<manifest xmlns: android= "http://schemas.android.com/apk/res/android" package= "belajar.coba.ningrum.trylokasi2" > <uses-permission android:name= "android.permission.ACCESS_FINE_LOCATION" /> <application android :allowBackup= "true" android :icon= "@mipmap/ic_launcher" android :label= "@string/app_name" android :supportsRtl= "true" android :theme= "@style/AppTheme" > <meta-data android :name= "com.google.android.geo.API_KEY" android :value= " TULISKAN DISINI API_KEY ANDA " /> <meta-data android :name= "com.google.android.gms.version" android :value= "@integer/google_play_services_version" /> <activity android :name= ".MapsActivity" android :label= "@string/title_activity_maps" > <intent-filter> <action android:name= "android.intent.action.MAIN" /> <category android:name= "android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
28. Jalankan dan amati hasilnya.
29. Gantilah nilai latitude longitude nya.
30. Amati perbedaannya.
D. LATIHAN
Latihan diberikan oleh dosen pengampu pada saat praktikum.
Dikerjakan di laboratorium pada jam praktikum.
E. TUGAS
Tugas diberikan oleh dosen pengampu pada akhir praktikum.
Dikerjakan di rumah dan dilampirkan pada laporan.
untuk penjelasan dari program diatas kalian dapat membaca artikel saya berikut ini tentang Penjelasan scribt program dari aplikasi GPS dan Kompas Menggunakan Android Studio
0 Response to "Tutorial Membuat Aplikasi GPS dan Compass Menggunakan Android Studio"
Post a Comment