Modul Praktikum Mobile Application
Modul Praktikum Mobile Application
Mobile Appliacation
Praktikum
Topik
1-8
Mobile App
HANDOUT MOBILE APPLICATION
TOPIK 1
“PENGINSTALAN ANDROID STUDIO”
I. Pendahuluan
Android Studio adalah Integrated Development Environment (IDE) resmi untuk
pengembangan aplikasi Android, yang didasarkan pada IntelliJ IDEA . Selain sebagai
editor kode dan fitur developer IntelliJ yang andal, Android Studio menawarkan banyak
fitur yang meningkatkan produktivitas Anda dalam membuat aplikasi Android.
Untuk menginstal Android Studio harus mempunyai spek laptop/PC seperti
berikut :
RAM minimal 3GB. Direkomendasikan 8GB RAM.
Minimal 2 GB penyimpanan yang tersedia. Direkomendasikan 4 GB
(500 MB untuk IDE dan 1,5 GB untuk Android SDK dan sistem
emulator)
Resolusi layar minimum 1280 x 800.
II. Cara Menginstall Android Studio
1. Setup Android Studio
Berikut ini adalah langkah pertama cara Install Android Studio :
1.1 Download Android Studio
Sebelum melakukan instalasi, hal pertama yang harus dilakukan
adalah mengunduh file Android Studio. Buka link ini
(https://developer.android.com/studio) untuk mengunduh file tersebut
lalu klik Download Android Studio.
4) Konfigurasi Project
Setelah memilih activity, langkah selanjutnya yaitu kita harus
memberikan konfigurasi pada project android yang kita buat. Adapun yang
harus di konfigurasi yaitu :
Name : isikan nama project
Package name : isikan nama perusahaan atau pembuat aplikasi
Save location : tentukan file project aplikasi android ini akan disimpan
pada direktori apa
Language : pilih bahasa pemrograman yang akan digunakan, Java atau
Kotlin. Pada tutorial ini kita menggunakan Java
Minimum API level : tentukan API berapa yang akan digunakan. Pada
bulan April 2017 google merilis daftar versi OS yang banyak digunakan
tahun 2017 dan hasilnya Lollipop (OS versi 5.0 dengan SDK 21/22) ada
di urutan nomor satu. Jadi untuk minimum SDKnya kita pilih API 15
yaitu untuk versi OS Ice Cream Sandwich ke atas.
5) Proses Gradle
Tunggu sampai proses gradle selesai. Ini biasanya memakan waktu
beberapa menit. Lama atau sebentarnya tergantung spesifikasi ram dan prosesor
yang digunakan pada komputer atau laptopmu.
14
1. Tujuan
Mahasiswa dapat membuat Proyek yang berbasis android
Mahasiswa mengerti dan dapat menggunakan perintah yang terdapat pada shell
Sistem Operasi Android
2. Komponen / Peralatan
PC / Laptop
Android Studio
Genymotion Atau Virtual Android Lainnya
3. Dasar Teori
3.1. Android Studio
a. Pada Android Studio, di toolbar menu pilih File New Project
sesuai Gambar 1.
15
Gambar 2. Wizard Android Project
c. Kemudian pilih next, pada dialog new Android Project isikan sesuai Gambar
3. sebagai berikut :
d. Tekan next maka akan akan dikanjutkan menuju menu pemilihan layout yang
dibuat akan terbentuk sesuai Gambar 4.
16
Gambar 4. New Layout
e. Tekan next maka akan akan dikanjutkan menuju menu new activity yang
dibuat akan terbentuk sesuai Gambar 5.
f. Tekan finish maka akan proyek yang dibuat akan terbentuk tampilan
sesuai Gambar 6.
17
Gambar 5. Tampilan Project Baru
18
h. Klik create virtual device untuk membuat device baru dan memilih hardware
yang diperlukan seperti gambar 7.
19
i. Memberikan nama virtual device seperti gambar 8.
j. Tunggu hingga selesai dan Android virtual device yang baru telah terbentuk,
seperti gambar 9.
20
android dapat dilihat pada direktori /system/bin. Untuk masuk pada shell pada
sistem operasi android dapat digunakan perintah ‘adb shell’ pada command
prompt komputer pengembang atau masuk pada emulator melalui menu Dev
Tools lalu pilih terminal emulator
a. Perintah
ls digunakan untuk menampilkan daftar dari isi sebuah direktori
sintaks : ls : menampilkan isi direktori aktif
ls namafile/namadirektori : menampilkan namafile (jika file ada)
atau isi dari namadirektori
ls –l : menampilkan isi dari direktori dalam format panjang
cd digunakan untuk berpindah ke sebuah direktori
sintaks :cd namadirektori : berpindah ke namadirektori
cd .. : berpindah ke direktori atasnya
echo untuk menampilkan teks ke standar keluaran
sintaks :echo ‘abc‘ : menampilkan teks abc ke layar
mkdir untuk membuat direktori
sintaks : mkdir namadirektori : membuat direktori namadirektori
rm/rmdir untuk menghapus file atau direktori
sintaks :rm namafile : menghapus file namafile
rmdir namadirektori : menghapus direktori
namadirektori
pwd digunakan untuk menampilkan nama lengkap dari file direktori aktif
sekarang
sintaks : pwd
cat menampilkan isi dari sebuah file ke stdout
sintaks : cat namafile : menampilkan isi dari namafile
ps menampilkan daftar proses yang sedang berjalan
sintaks : ps
kill mematikan proses yang sedang berjalan
sintaks : kill pid : mematikan proses yang memiliki nomor pid
date menampilkan waktu
b. Pengalihan
21
Fasilitas pengalihan memungkinkan untuk menyimpan keluaran dari sebuah proses
ke suatu file.
Sintaks :
22
4. Langkah Praktikum
4.1. Membuat Helo Mob App
Untuk Menampilan tulisan ‘Helo Mob App’ pada layar. Buat proyek seperti
langkah yang telah dijelaskan pada dasar teori. Lalu lakukan langkah berikut ini :
Buka folder Layout lalu buka pada folder res selanjutnya buka sub folder
layout. Tambahkan “android:id="@+id/helo"” pada main.xml untuk
memebrikan id pada text agar dapat diubah melalui pemrograman java.
Hasilnya seperti pada source 1.
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"
tools:context="forge.simbah.whitemith.shellapplication.MainAct
ivity">
<TextView
android:id="@+id/helo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=”"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Source 1
23
Buka folder java lalu klik pada package kalian, misalkan
“forge.simbah.whitemith.shellapplication”. Package untuk tipa user mungkin
akan berbeda – beda tergantung keinginan user. Tambahkan :
package forge.simbah.whitemith.shellapplication;
import
android.support.v7.app.AppCompatActivity;
android.widget.TextView;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
teks = (TextView)findViewById(R.id.helo);
24
Pilih dan jalankan virtual device genymotion
25
Hasil Run Program
26
4.2. Membuka Shell Android
Menjalankan Android Virtual Device
27
Ketuk “su” dan tekan enter untuk mengubah menjadi super user
28
Ketik “mkdir (nama folder)”, misal “mkdir zzz” lalu lakukan “ls”
Ketik “cat > (nama folder)”, misal “cat > coba.txt” lalu isi file dengan
tulisan
29
Handout Praktikum Mobile Application Topik 3
“Creating Menu dan Intents”
1. Tujuan
Mahasiswa dapat memahami User Interface yang digunakan pada sistem operasi
Android dan dapat menerapkannya pada Aplikasi berbasis sistem operasi Android.
2. Komponen / Peralatan
PC/ Laptop
Android Studio
Geny Motion
3. Dasar Teori
Pada aplikasi Android, UI dibangun menggunakan objek dari View dan ViewGroup.
Objek dari View merupakan dasar dari pembangunan UI pada platform Android. Objek
dari View yang berfungsi sebagai UI dengan pengguna disebut widget. Kelas View
menangani dasar untuk sub kelas widget, yang menawarkan seluruh UI objek seperti text
fields dan buttons. Kelas ViewGroup menangani dasar untuk subkelas layout, yang
menawarkan berbagai jenis arsitekture dari layout. Dalam penjelasan sederhana
ViewGroup adalah View yang memiliki beberapa View anak.
EditText merupakan sebuah box yang berisi teks yang dapat diubah.
Penggunaan properti capitalize untuk mengatur huruf yang besar misalnya pada
awal kalimat. Juga dapat digunakan properti phoneNumber jika diperlukan
penerimaan teks nomor telepon. Selain itu jika dibutuhkan field untuk password
dapat digunakan properti password.
Button
Button merupakan tombol tekan standar yang berisi teks sebagai
pengidentifikasinya. Digunakan untuk menangani klik event.
ImageButton merupakan tombol tekan yang memiliki gambar untuk
identifikasinya.
CheckBoxes dan RadioButton
CheckBoxes adalah tombol-tombol yang digunakan apabila diinginkan pilihan
lebih dari satu dengan jawaban ya atau tidak pada setiap pilihan.
RadioButton digunakan apabila hanya diperbolehkan memilih satu pilihan
pada satu waktu.
Spinner
Spinner digunakan untuk menampilkan List/Dropdown menu, yang terdiri dari
item-item, untuk memudahkan user dalam memilih sebuah konten pada aplikasi.
2. ViewGroup
Layout
LinearLayout
Akan menempatkan komponen-komponen di dalamnya secara horizontal atau
vertikal. Linearlayout memiliki atribut weight untuk masing-masing child view
yang berguna untuk menentukan porsi ukuran view dalam sebuah ruang (space)
yang tersedia.
Gambar 2. Pilihan pada LinearLayout
RelativeLayout
Layout yang paling fleksible dikarenakan posisi dari masing-masing komponen di
dalamnya dapat mengacu secara relatif pada komponen yang lainnya dan juga
dapat mengacu secara relatif ke batas layar.
4. Langkah Praktikum
1. Buat Project baru di Android Studio dengan nama TugasTopik3, minimal target SDK
yaitu API level 21, tipe activity EmptyActivity, activity name yaitu MainActivity.
(Pastikan laptop/ PC anda sudah terhubung dengan jaringan internet)
2. Buka berkas build.gradle(Module:App) dan tambahkan code berikut di
bagian dependecies. implementation 'de.hdodenhof:circleimageview:3.0.0',
1
1. Tujuan
Mahasiswa mengerti penggunaan kelas Intent dan pmbuatan UI complex dalam
pembuatan aplikasi sistemoperasi Android.
2. Komponen / Peralatan
Peralatan yang digunakan adalah PC / laptop yang sudah terpasang aplikasi Android Studio.
3. Dasar Teori
Intent merupakan sebuah kelas dalam programming Android yang berfungsi untuk
perpindahan halaman. Lebih jelasnya, ada beberapa fungsi intent yaitu berfungsi untuk
berpidah halaman dari satu activity ke activity lain. Contohnya kita membuat aplikasi
dengan tiga activity, activity pertama berisi tombol informasi dan login, ketika tombol login
ditekan maka akan menampilkan activity login begitu juga jika tombol informasi ditekan
akan menampilkan halaman informasi. Kedua intent berfungsi untuk mengirimkan
data dari satu activity ke activity lain. Contoh, pada saat kita mengisi data pada halaman
login user maka nanti akan ditampilkan informasinya pada activity informasi user. Ketiga,
intent berfungsi untuk memanggil activity pada internal android seperti melakukan
dial number, mengakses kamera, mengakses pesan singkat ataupun buku telepon.
Intent memiliki dua bentuk yaitu, Explicit Intent dan Implicit Intent.
2
Jika Anda tidak mendeklarasikan izin berbahaya, atau jika aplikasi diinstal di
perangkat yang menjalankan Android 5.1 (API level 22) atau lebih rendah, izin akan
diberikan secara otomatis.
4. Langkah Praktikum
Membuat contoh pindah dari Activity ke Activity lain tanpa membawa data.
1. Buat Project pada Android Studio dengan nama project dengan nama MyIntentApp
dengan target minimum SDK Api Level 21.
2. Pada file activity_main.xml tambahkan kode seperti gambar 1.
3
Gambar 3. Code MainActivity.java
5. Button yang dibuat berfungsi untuk berpindah Activity ke Activity lain. Selanjutnya
buat Activity baru dengan cara : klik kanan dipackage utama aplikasi package
name > New > Activity > Empty Activity.
6. Beri nama activity baru dengan nama MoveActivity kemudian klik finish.
7. Tambahkan TextView pada activity_move.xml, sehingga program menjadi
seperti gambar 4.
4
Gambar 5. MainActivity.java
9. Setelah semuanya selesai, jalankan aplikasi.
Sekarang kita akan membuat sebuah intent yang didalamnya akan membawa data ke
activity tujuan.
1. Melanjutkan project yang sebelumnya. Buka activity_main.xml. Tambahkan
program untuk button.
5
Gambar 7. File MainActivity.java
3. Setelah itu buat Activity baru sama seperti cara sebelumnya dengan nama
ActivityMoveWithData.
4. Pada file activity_move_with_data.xml, tambahkan TextViewer yang
memiliki ID untuk menampilkan data yang dikirim dari activity asal
Gambar 8. activity_move_with_data.xml
5. Pada file ActivityMoveWithData.java tulis code seperti gambar 9.
6
Gambar 9. ActivityMoveWithData.java
public static final merupakan sebuah konstanta(variabel yang nilainya
tetap), public(dapat diakses diluar kelas), static(nilai tidak berubah),
final(tidak ada perubahan agi).
6. Setelah itu pada file MainActivity.java tambahkan beberapa baris code berikut
pada percabangan event clickButton.
Intent moveWithDataIntent = new Intent(MainActivity.this,
ActivityMoveWithData.class);
moveWithDataIntent.putExtra(ActivityMoveWithData.EXTRA_NAME,
"Mobile Application");
moveWithDataIntent.putExtra(ActivityMoveWithData.EXTRA_AGE, 20);
startActivity(moveWithDataIntent);
Method putExtra()merupakan metode yang menampung pasangan key-value.
7. Jalankan aplikasi ini.
Sekarang kita akan membuat intent dengan tipe implisit.
1. Pada file main_activity.xml tambahkan Button 1 lagi.
7
3. Setelah itu tambahkan action ketika tombol di klik.
String phoneNumber = "085777666555";
Intent dialPhoneIntent = new Intent(Intent.ACTION_DIAL,
Uri.parse("tel:"+phoneNumber));
startActivity(dialPhoneIntent);
URI merupakan sebuah untaian karakter yang digunakan untuk mengidentifikasi
nama, sumber, atau layanan internet sesuai dengan RFC 2396. Secara struktur, URI
dibagi menjadi :
Gambar 12
3. Pada class MainActivity, kalian deklarasikan ImageView.
6. Oke setelah menambahkan dua izin ini pada file manifes, kalian perlu
membuat fungsi untuk memeriksa izin runtime di MainActivity.
Fungsi ini akan menampilkan sembulan jika pengguna tidak memiliki
izin sehingga pengguna dapat mengklik tombol izinkan untuk
memberikan izin ke aplikasi Anda.
9
7. Kalian perlu Override onRequestPermissionsResult dimana kalian
menangani hasil Permission kalian, jika Permission diberikan maka
kalian dapat memanggil fungsi chosseImage
10
9. Setelah itu membuat menu dengan tiga pilihan :
Take Photo
Choose a Photo from the gallery
Exit
11
11. Setelah Anda selesai dengan semua langkah, Anda memanggil fungsi pemeriksaan
izin dalam metode onCreate.
12
13
HANDOUT PRAKTIKUM MOBILE APPLICATION
Topik V Penyimpanan Data Dengan Firebase
14
1. Tujuan
Mahasiswa dapat membuat database dan menggunakannya pada aplikasi.
Mahasiswa dapat melakukan query melalui Firebase pada android.
2. Komponen / Peralatan
PC / Laptop
Android Studio
3. Dasar Teori
Firebase Realtime Database adalah database yang di-host di cloud. Pada database ini,
data akan disimpan sebagai JSON dan disinkronkan secara realtime ke setiap klien yang
terhubung. Dengan kemampuan sinkronisasi secara realtime ini, ketika kita
mengembangkan aplikasi yang cross platform dengan SDK Android, iOS, dan JavaScript,
semua klien akan berbagi sebuah instance Realtime Database dan menerima update data
terbaru secara otomatis.
3.1 Cursordan Content Values
ContentValues digunakan untuk menambahkan baris baru ke tabel. Query di Android
akan mengembalikan obyek Cursor. Cursor merupakan penunjuk dari serangkaian hasil
pokok data. Cursors melayani pengaturan posisi (baris) pada kumpulan hasil dari
query database. Beberapa Method yang ada pada Kelas Cursor:
moveToFirst() : Memindahkan cursor ke baris pertama dari hasil Query
moveToNext() : Memindahkan cursor ke baris selanjutnya
15
moveToPrevious() : Memindahkan cursor ke baris sebelumnya
getCount() : Mengembalikan jumlah baris pada kumpulan hasil
getColumnIndexOrThrow() : mengembalikan indeks dari kolom sesuai namayang
diberikan atau melemparkan exception jika tidak ada kolom sesuai nama
tersebut.
getColumnName() : mengembalikan nama dari indeks kolom yang ditentukan
getColumnNames() : mengembalikan seluruh nama kolom dari Cursor saat ini
moveToPosition() : memindahkan cursor ke baris yang ditentukan
getPosition() : mengembalikan posisi cursor saat ini.
16
perangkat agar tetap tersedia saat offline.
4. Langkah Praktikum
Membuat aplikasi note sederhana dengan media penyimpanan menggunakan
Firebase sebagai databasenya.
1. Buat project android baru dengan nama project MyNotesApp(nama terserah).
2. Set up Firebase Database:
Untuk menggunakan Firebase Assistant, kita pilih menu Tools→Firebase, selanjutnya akan
muncul Windows Assistant.
Pilih Real Time Database lalu klik Get started with Realtime Database
17
Akan muncul window Firebase di browser kalian pakai
Setelah itu klik Continue dan Continue lagi, sampai di halaman Configure Google
Analytics
18
Setelah itu klik Create Project dan tunggu sampai selesai loadingnya dan klik Continue.
Kembali ke Android Studio di window Firebase, setelah Connect your app to Firebase
sudah Connected
Setelah itu akan tampil windows untuk menambahkan dependencies ke dalam aplikasi. Tekan
tombol Accept Changes untuk menambahkan dependencies.
19
3. Membuat Database dan Setup Konfigurasi database
Pada tahapan ini kita akan buat database dan kita atur konfigurasinya. Sekarang kita coba Sign
in ke Firebase Console menggunakan account google kita. Di console Firebase, kita dapat
menemukan project Aplikasi Pengelolaan data mahasiswa yang sudah dibuat di tahap
sebelumnya.
Klik Project yang telah kalian buat tadi untuk menuju ke halaman project.
Di dashboard project kita pilih menu Database.
20
Di halaman ini kita bisa lihat ada dua jenis database, yaitu Firestore dan Real Time Database.
Kita scroll ke bawah, pilih create database untuk Real Time database.
Selanjutnya tampil pengaturan security untuk database. Karena project kita masih tahap
development pilih menu Start in test mode. Setelah itu kita tekan tombol enable.
Selanjutnya tampil halaman database. Itu artinya database siap digunakan untuk pengembangan aplikasi
project.
4. Menambahkan fitur Create Data Mahasiswa
Dalam proses menambahkan data atau insert data ke database, kita perlu dua activity. Yang
pertama kita akan menggunakan MainActivity, kita tambahkan button dan object lainnya. Button ini
kita gunakan untuk masuk ke activity yang kedua yaitu CreateActivity yang nanti akan kita gunakan
untuk menambahkan data ke dalam database.
Pertama buka file activity_main.xml, lalu sesuaikan kode seperti di bawah ini:
21
5. Selanjutnya, buat package baru dengan nama model. Caranya klik kanan pada package utama
→ new → package. Setelah package berhasil dibuat, kita buat satu file java class baru dengan
nama Mahasiswa dan ketik kode berikut ini:
22
23
6. Selanjutnya, buat package baru dengan nama mahasiswa. Caranya klik kanan pada package
utama → new → package lalu isi nama package dengan nama mahasiswa. Setelah package
terbentuk, buat satu activity baru dengan nama CreateActivity dan tipenya adalah empty
activity di dalam package mahasiswa.
Di dalam file activity_main.xml terdapat object button untuk menambahkan data baru, fungsi
button ini ketika diklik pengguna akan diarahkan ke activity yang baru dibuat, yaitu
CreateActivity. Buka file MainActivity lalu sesuaikan codenya menjadi:
7. Tahap selanjutnya adalah membuat form. Buka file activity_create.xml lalu sesuaikan kode
24
seperti di bawah ini.
8. Supaya aplikasi dapat mengakses internet, kita harus mengatur permission di dalam file
AndroidManifest.xml. Buka file AndroidManifest.xml, lalu tambahkan kode:
9. Buat file item_mahasiswa.xml untuk tampilan list dengan cara klik kanan pada direktori
layout → new → layout resource file dan kemudian beri nama item_mahasiswa.xml.
Sesuaikan kodenya menjadi seperti berikut:
25
10. Selanjutnya, buat package baru dengan nama adapter. Di dalamnya buat sebuah kelas baru
dengan nama MahasiswaAdapter. Lalu ketik kode di bawah ini:
26
11. Buat satu activity baru dengan nama UpdateActivity dan tipenya adalah empty activity di
dalam package mahasiswa. Setelah activity selesai dibuat, buka file activity_update.xml dan
sesuaikan menjadi seperti kode berikut ini:
27
12. Selanjutnya tambahkan resource directory baru dengan nama menu pada res directory, dengan
cara klik kanan pada folder res -> new -> Android Resource Directory -> ubah resource type
menjadi menu. Lalu buatlah berkas xml (Menu Resource File) dengan nama menu_form di
dalam direktori menu yang baru saja dibuat.
13. Di dalam baris kode di atas terdapat drawable/ic_clear, itu artinya kita buat file di dalam
directory drawable dengan cara klik kanan pada folder drawable -> new -> Vector Asset -> lalu
pilih clip art dengan icon X dan beri nama ic_clear seperti yang terlihat pada gambar berikut.
28
14. Selanjutnya buka file UpdateActivity, ketik kode dibawah ini:
29
Soal
30
1
2. Komponen / Peralatan
PC / Laptop
Android Studio
JDK
3. Dasar Teori
Salah satu fitur unik dari aplikasi seluler adalah kesadaran lokasi. Pengguna seluler
membawa perangkat mereka ke mana saja, dan menambahkan kesadaran lokasi ke aplikasi
Anda menawarkan pengalaman yang lebih kontekstual kepada pengguna. API lokasi yang
tersedia di layanan Google Play memfasilitasi penambahan kesadaran lokasi ke aplikasi Anda
dengan pelacakan lokasi otomatis, deteksi sisi jalan yang salah, pembatasan wilayah, dan
pengenalan aktivitas.
Latitude = garis lintang mengarah dari khatulistiwa (0) ke kutub selatan, atau
khatulistiwa ke kutub utara (sudut 0-90 dan 0 -90)
Longitude = garis bujur adalah garis horizontal seperti dari khatulistiwa. Sudut 0
(Greenwich) ke arah Hawai adalah 0-180, sedangkan kebalikannya dari 0 ke -180
1. Langkah Praktikum
Menganses Lokasi Perangkat Anda dan menampilkan Longitude dan Latitude
Untuk mempelajari mengakses GPS dapat dilihat pada contoh ini. Contoh ini akan
menampilkan data Longitude dan Latitude.
Setelah pembuatan layout, selanjutnya kita membuat coding di file Java nya ya. Kita buka
MainActivity.java dan silahkan ikuti coding seperti dibawah ini
HANDOUT PRAKTIKUM MOBILE APPLICATION
2. Dasar Teori
Platform Android menyediakan beberapa sensor yang memungkinkan Anda memantau
gerakan suatu perangkat. Arsitektur sensor yang mungkin bervariasi berdasarkan jenis sensor:
Sensor gravitasi, akselerasi linear, vektor rotasi, gerakan signifikan, penghitung langkah, dan
pendeteksi langkah berbasis hardware atau berbasis software.
Sensor akselerometer dan giroskop selalu berbasis hardware.
Sebagian besar perangkat yang berbasis Android memiliki akselerometer, dan kini banyak yang
menyertakan giroskop. Ketersediaan sensor berbasis softaware lebih bervariasi karena sering
mengandalkan satu atau lebih sensor hardware untuk memperoleh datanya. Bergantung pada
perangkatnya, sensor berbasis hardware ini dapat memperoleh data mereka baik dari
akselerometer dan magnetometer atau dari giroskop.
Sensor gerak berguna untuk memantau pergerakan perangkat, seperti gerakan miring,
guncangan, rotasi, atau ayunan. Gerakan ini biasanya merupakan refleksi dari input pengguna
langsung (misalnya, pengguna yang menyetir mobil di dalam game atau pengguna yang
mengendalikan bola di dalam game), tetapi itu juga bisa menjadi refleksi dari lingkungan fisik
tempat perangkat itu berada. (misalnya, bergerak bersama Anda saat mengendarai mobil). Dalam
kasus pertama, Anda memantau gerakan yang relatif dengan bingkai referensi perangkat atau
bingkai referensi aplikasi Anda; dalam kasus kedua Anda memantau gerakan yang relatif dengan
bingkai referensi dunia. Sensor gerak sendiri biasanya tidak digunakan untuk memantau posisi
perangkat, tetapi dapat digunakan dengan sensor lain, seperti sensor medan geomagnetik, untuk
menentukan posisi perangkat yang relatif dengan bingkai referensi dunia (lihat Sensor Posisi
untuk informasi lebih lanjut).
Semua sensor gerak menampilkan array multi-dimensi dari nilai-nilai sensor untuk
masing-masing SensorEvent. Misalnya, selama kejadian sensor tunggal, akselerometer
menampilkan data gaya akselerasi untuk tiga sumbu koordinat, dan giroskop menampilkan laju
data rotasi untuk tiga sumbu koordinat. Nilai data ini ditampilkan dalam array float (values)
bersama dengan parameter SensorEvent lainnya. Tabel 1 merangkum sensor gerak yang tersedia
di platform Android.
Tabel 1. Sensor gerak yang didukung pada platform Android.
Data kejadian Keteranga Unit
Sensor
sensor n ukuran
Gaya
akselerasi
di
SensorEvent.values[0] sepanjang
sumbu x
(termasuk
gravitasi).
TYPE_ACCELEROMETER m/s2
Gaya
akselerasi
di
SensorEvent.values[1] sepanjang
sumbu y
(termasuk
gravitasi).
3
Gaya
akselerasi
di
SensorEvent.values[2] sepanjang
sumbu z
(termasuk
gravitasi).
Akselerasi
terukur di
sepanjang
SensorEvent.values[0] sumbu X
tanpa
kompensasi
bias.
SensorEvent.values[1] Akselerasi
terukur di
sepanjang
sumbu Y
tanpa
kompensasi
bias.
SensorEvent.values[2] Akselerasi
terukur di
sepanjang
sumbu Z
tanpa
kompensasi
bias.
SensorEvent.values[3] Akselerasi
TYPE_ACCELEROMETER_UNCALIBRAT
terukur di m/s2
ED
sepanjang
sumbu X
dengan
estimasi
kompensasi
bias.
SensorEvent.values[4] Akselerasi
terukur di
sepanjang
sumbu Y
dengan
estimasi
kompensasi
bias.
SensorEvent.values[5] Akselerasi
terukur di
sepanjang
sumbu Z
dengan
estimasi
kompensasi
bias.
Gaya
TYPE_GRAVITY SensorEvent.values[0] m/s2
gravitasi di
4
sepanjang
sumbu x.
Gaya
gravitasi di
SensorEvent.values[1]
sepanjang
sumbu y.
Gaya
gravitasi di
SensorEvent.values[2]
sepanjang
sumbu z.
Laju rotasi
SensorEvent.values[0] di sekitar
sumbu x.
Laju rotasi
TYPE_GYROSCOPE SensorEvent.values[1] di sekitar rad/s
sumbu y.
Laju rotasi
SensorEvent.values[2] di sekitar
sumbu z.
Laju rotasi
(tanpa
kompensasi
SensorEvent.values[0]
drift) di
sekitar
sumbu x.
Laju rotasi
(tanpa
kompensasi
SensorEvent.values[1]
drift) di
sekitar
sumbu y.
Laju rotasi
(tanpa
kompensasi
TYPE_GYROSCOPE_UNCALIBRATED SensorEvent.values[2] rad/s
drift) di
sekitar
sumbu z.
Estimasi
drift di
SensorEvent.values[3]
sekitar
sumbu x.
Estimasi
drift di
SensorEvent.values[4]
sekitar
sumbu y.
Estimasi
drift di
SensorEvent.values[5]
sekitar
sumbu z.
Gaya
akselerasi
TYPE_LINEAR_ACCELERATION SensorEvent.values[0] di m/s2
sepanjang
sumbu x
5
(tidak
termasuk
gravitasi).
Gaya
akselerasi
di
sepanjang
SensorEvent.values[1]
sumbu y
(tidak
termasuk
gravitasi).
Gaya
akselerasi
di
sepanjang
SensorEvent.values[2]
sumbu z
(tidak
termasuk
gravitasi).
Komponen
vektor
rotasi
SensorEvent.values[0]
sepanjang
sumbu x (x
* sin(θ/2)).
Komponen
vektor
rotasi
SensorEvent.values[1]
sepanjang
sumbu y (y
Tanpa
TYPE_ROTATION_VECTOR * sin(θ/2)).
unit
Komponen
vektor
rotasi di
SensorEvent.values[2]
sepanjang
sumbu z (z
* sin(θ/2)).
Komponen
skalar dari
SensorEvent.values[3] vektor
rotasi
((cos(θ/2)).1
TYPE_SIGNIFICANT_MOTION N/A N/A N/A
Jumlah
langkah
yang
diambil
oleh Langka
TYPE_STEP_COUNTER SensorEvent.values[0]
pengguna h
sejak reboot
terakhir
saat sensor
diaktifkan.
TYPE_STEP_DETECTOR N/A N/A N/A
6
Sensor berikut memberikan data mentah kepada aplikasi Anda tentang gaya linear dan
rotasi yang diterapkan ke perangkat. Untuk menggunakan nilai dari sensor ini secara efektif,
Anda perlu memfilter faktor dari lingkungan, misalnya gravitasi. Anda mungkin juga perlu
menerapkan algoritme perataan untuk tren nilai guna mengurangi derau.
Menggunakan sensor akselerometer
Sensor akselerasi mengukur akselerasi yang diterapkan pada perangkat, termasuk gaya gravitasi.
Kode berikut ini menunjukkan cara mendapatkan instance sensor akselerasi default:
Namun, gaya gravitasi selalu memengaruhi akselerasi yang diukur berdasarkan hubungan
berikut:
Karena alasan ini, saat perangkat berada di atas meja (dan tidak berakselerasi), akselerometer
membaca kekuatan g = 9,81 m/s2. Demikian pula, saat perangkat jatuh bebas dan karenanya
dengan cepat berakselerasi ke tanah pada 9,81 m/s2, akselerometernya membaca kekuatan g = 0
m/s2. Oleh karena itu, untuk mengukur akselerasi nyata perangkat, kontribusi gaya gravitasi
harus dihapus dari data akselerometer. Ini dapat dilakukan dengan menerapkan filter high-pass.
Sebaliknya, filter low-pass dapat digunakan untuk mengisolasi gaya gravitasi. Contoh berikut
menunjukkan cara Anda dapat melakukan ini:
Akselerometer menggunakan sistem koordinat sensor standar. Dalam praktiknya, ini berarti
bahwa kondisi berikut ini berlaku saat perangkat diletakkan datar di atas meja dalam orientasi
7
alami:
Jika Anda mendorong perangkat di sisi kiri (sehingga bergerak ke kanan), nilai akselerasi
x adalah positif.
Jika Anda mendorong perangkat di bagian bawah (sehingga menjauh dari Anda), nilai
percepatan y adalah positif.
Jika Anda mendorong perangkat ke arah langit dengan akselerasi A m/s2, nilai akselerasi
z sama dengan A + 9,81, yang sesuai dengan akselerasi perangkat (+A m/s2) minus gaya
gravitasi (-9,81 m/s2).
Perangkat yang tidak bergerak akan memiliki nilai akselerasi +9,81, yang sesuai dengan
akselerasi perangkat (0 m/s2 minus gaya gravitasi, yaitu -9,81 m/s2).
Secara umum, akselerometer adalah sensor yang baik untuk digunakan jika Anda memantau
gerakan perangkat. Hampir setiap handset dan tablet berbasis Android memiliki akselerometer,
dan menggunakan daya sekitar 10 kali lebih sedikit daripada sensor gerak lainnya. Salah satu
kelemahannya adalah Anda mungkin harus menerapkan filter low-pass dan high-pass untuk
menghilangkan gaya gravitasi dan mengurangi derau.
3. Langkah Praktikum
Ubah activity_main.xml kalian ke kode berikut.
Setelah itu buat kelas baru dengan nama “MyCompassView” , dengan code
seperti berikut :
9
Setelah itu buat kelas baru dengan nama “SensorActivity”, dengan kode seperti
berikut.
10
4. Soal
1. Lakukan langkah praktikum diatas dan lihatkan hasilnya!(20)
2. Jelaskan langkah praktikum diatas dengan jelas!(20)
3. Buatlah sebuah aplikasi Kompas yang dapat menunjukan mata angin!(60)
HANDOUT PRAKTIKUM MOBILE APPLICATION
2. Dasar Teori
Setiap aplikasi Android berjalan dalam sandbox dengan akses terbatas. Jika aplikasi perlu
menggunakan resource atau informasi di luar sandbox-nya sendiri, Anda dapat mendeklarasikan
izin runtime dan menyiapkan permintaan izin yang menyediakan akses ini. Langkah-langkah ini
adalah bagian dari alur kerja untuk menggunakan izin.
Jika Anda mendeklarasikan izin berbahaya dan jika aplikasi diinstal pada perangkat yang
menjalankan Android 6.0 (API level 23) atau yang lebih tinggi, Anda harus meminta izin
berbahaya saat runtime dengan mengikuti langkah-langkah dalam panduan ini.
Jika Anda tidak mendeklarasikan izin berbahaya, atau jika aplikasi diinstal di perangkat yang
menjalankan Android 5.1 (API level 22) atau lebih rendah, izin akan diberikan secara otomatis,
dan Anda tidak perlu menyelesaikan langkah-langkah lainnya di halaman ini.
Mengizinkan sistem mengelola kode permintaan izin untuk mengizinkan sistem mengelola kode
permintaan yang terkait dengan permintaan izin, tambahkan dependensi pada library berikut di
file build.gradle modul Anda:
androidx.activity, versi 1.2.0 atau yang lebih baru
androidx.fragment, versi 1.3.0 atau yang lebih baru
Kemudian, Anda dapat menggunakan salah satu class berikut:
Untuk meminta satu izin, gunakan RequestPermission.
Untuk meminta beberapa izin secara bersamaan, gunakan
RequestMultiplePermissions.
Langkah-langkah berikut menunjukkan cara menggunakan kontrak RequestPermission.
Prosesnya hampir sama untuk kontrak RequestMultiplePermissions.
1. Dalam logika inisialisasi aktivitas atau fragmen, teruskan implementasi
ActivityResultCallback ke dalam panggilan ke registerForActivityResult().
ActivityResultCallback menentukan cara aplikasi Anda menangani respons pengguna
terhadap permintaan izin.
Simpan referensi ke nilai hasil registerForActivityResult(), yang berjenis
ActivityResultLauncher.
2. Untuk menampilkan dialog izin sistem saat diperlukan, panggil metode launch()
pada instance ActivityResultLauncher yang Anda simpan pada langkah sebelumnya.
Setelah launch() dipanggil, dialog izin sistem akan muncul. Saat pengguna menentukan
pilihan, sistem akan memanggil implementasi ActivityResultCallback secara asinkron, yang telah
Anda tentukan pada langkah sebelumnya.
Contoh Codenya :
3
Dan cuplikan kode ini menunjukkan proses yang direkomendasikan untuk memeriksa izin dan meminta
izin dari pengguna jika diperlukan:
Setelah pengguna merespons dialog izin sistem, sistem akan memanggil implementasi
onRequestPermissionsResult() aplikasi Anda. Sistem meneruskan respons pengguna ke dialog izin serta
kode permintaan yang Anda tentukan, seperti yang ditunjukkan dalam cuplikan kode berikut:
4
3. Langkah Praktikum
Tambah permission di AndroidManifest.xml
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'com.google.android.gms:play-services-location:21.0.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.google.firebase:firebase-auth:21.2.0'
def cameraxVersion = "1.1.0-alpha05"
implementation "androidx.camera:camera-core:${cameraxVersion}"
implementation "androidx.camera:camera-camera2:${cameraxVersion}"
implementation "androidx.camera:camera-lifecycle:${cameraxVersion}"
implementation 'androidx.camera:camera-view:1.0.0-alpha25'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}