# IF3210-2020-20-BolaSepak ## Deskripsi Aplikasi Aplikasi BolaSepak merupakan aplikasi yang memberikan informasi mengenai jadwal pertandingan sepak bola dan tim sepak bola. Aplikasi ini juga menghitung langkah yang ditempuh oleh pengguna dalam satu hari, dan memberikan notifikasi terkait jadwal tim yang ingin dipantau oleh pengguna. ## Cara Kerja Aplikasi ini menggunakan dua buah API, yaitu API TheSportDB dan OpenWeather. API TheSportDB digunakan untuk mendapatkan informasi terkait dengan jadwal pertandingan dan data tim sepak bola. Sedangkan API OpenWeather digunakan untuk mendapatkan perkiraan cuaca pada waktu dan lokasi pertandingan. Penyimpanan *cache* pada aplikasi dilakukan menggunakan SQLite. Data yang disimpan berupa *cache* antara lain adalah detil mengenai setiap pertandingan dan setiap tim yang ditampilkan di aplikasi. Ketika membuka aplikasi, ditampilkan Main (*homepage*) yang berisi Step Counter, sebuah *search bar*, dan daftar pertandingan (Match). Berhubung API yang disediakan TheSportDB terbatas, daftar Match yang diambil adalah daftar Match pada suatu liga saja. Daftar tim pada suatu liga yang sama dengan daftar Match juga diambil dari TheSportDB, namun disembunyikan pada awal membuka aplikasi. Jika pengguna mengetik pada *search bar*, daftar tim akan di-*filter* hingga hanya menampilkan nama tim yang sesuai dengan masukan pengguna. Step Counter diimplementasikan dalam bentuk *service* yang dijalankan ketika pengguna membuka aplikasi untuk pertama kalinya. Step Counter berjalan terus-menerus di *foreground* untuk menghitung jumlah langkah yang telah ditempuh pengguna berdasarkan sensor Accelerometer. Step Counter akan menunggu hingga melewati pukul 00.00 untuk me-*reset* jumlah langkah yang telah ditempuh pengguna, dan kemudian mengulangi proses tersebut setiap 24 jam. Melakukan klik untuk suatu Match pada Main, pengguna akan diarahkan ke tampilan Match Detail yang berisi detil-detil dari pertandingan tersebut yang diambil dari TheSportDB. Selain itu, ditampilkan juga perkiraan cuaca pada waktu dan lokasi pertandingan tersebut. Melakukan klik ke suatu tim akan mengarahkan pengguna ke Team Detail yang berusi detil-detil dari tim tersebut. Jika pengguna menekan tomboh Subscribe pada tampilan, service Subscribe Notification akan memberikan notifikasi kepada pengguna mengenai pertandingan selanjutnya yang diikuti tim tersebut. ## Library Aplikasi ini menggunakan library Room dalam pengaksesan SQLite. Alasan penggunaan library ini adalah untuk memudahkan pengaksesan database yang kami lakukan. Selain itu, jika terjadi kesalahan dalam pembuatan skema, aplikasi yang kami buat hanya perlu melakukan sedikit perubahan. ## Screenshot ![](https://i.imgur.com/3m2vHrp.png) ***Gambar 1.** Tampilan Main, dengan Step Counter, *search bar*, dan daftar Match.* ![](https://i.imgur.com/NgZVBJh.png) ***Gambar 2.** Tampilan Main ketika layar perangkat berorientasi landscape.* ![](https://i.imgur.com/1H2q01b.png) ***Gambar 3.** Tampilan Main ketika pengguna memasukkan teks ke search bar.* ![](https://i.imgur.com/vUv62FV.png) ***Gambar 4.** Tampilan Main ketika pengguna mengganti fokus dari search bar kembali ke daftar Match.* ![](https://i.imgur.com/Vm7sS75.png) ***Gambar 5.** Tampilan Team Detail, dengan nama tim, daftar Match yang sudah berlalu (Prev Match), dan daftar Match yang akan datang (Next Match). Tab Prev Match dipilih.* ![](https://i.imgur.com/R94rhQB.png) ***Gambar 6.** Tampilan Team Detail. Tab Next Match dipilih.* ![](https://i.imgur.com/qHYOPYW.png) ***Gambar 7.** Pengguna menekan tombol Subscribe (kanan bawah) untuk mendapat notifikasi pertandingan tim.* ![](https://i.imgur.com/GBy1c2i.png) ***Gambar 7.** Pengguna menekan tombol Subscribe sekali lagi untuk melakukan unsubscribe dari notifikasi pertandingan tim.*