LANDASAN TEORI
2.1 Aplikasi Doa Harian
Aplikasi Doa Harian merupakan suatu aplikasi yang menampilkan pekerjaan Doa sesuai kebutuhan penggunanya. Perangkat lunak ini dibuat berdasarkan perhitungan yang didasarkan pada Al-Quran dan Sunnah.
2.1.1 Pengertian Doa
Doa menurut bahasa berarti permintaan dan permohonan. Doa menurut istilah adalah penyerahan diri kepada Allah Swt dalam memohon segala yang diinginkan, dan meminta dihindarkan dari segala yang dibenci. Doa juga berarti ibadah. Bahkan berdoa merupakan ibadah yang utama, karena doa adalah inti ibadah. Doa dapat melembutkan kerasnya qadha dan menolak bala bencana. Banyak berdoa membuat doa diperkenankan dan dicintai Allah Swt.
Doa merupakan salah satu bentuk ibadah yang harus dilaksanaan dengan seksama. Tidak hanya lisan, doa membutuhkan keikut sertaan hati yang tulus. Kata “doa” sering kita dengan dalam Al-Qur’an dengan makna beragam. Doa, misalnya berarti istighatsah (memohon bantuan dan pertolongan). Doa tidak hanya perlu dipanjatkan saat kita ditimpa kesulitan atau masalah yang tak kunjung
selesai. Doa harus menjadi bagian tak terpisahkan dalam hiup kita. Sebab, segala yang di dunia ini bersumber dari kasih sayang Allah unuk semesta alam.
Doa menghubungkan empat unsur dari diri kita, yakni hati (niat), ucapan (statement), pikiran (planning), dan tindakan (action).
2.2.2 Macam-Macam Doa
a. Zikir dapat berarti menginat dan menyebut. Zikir merupakan upaya mengingat Allah yang di lakukan makhluk-Nya yang hendak dilakukannya setiap saat. Firman Allah “Karena itu ingatlah kamu kepada-Ku Niscaya Aku ingat pula kepadamu” [Qs Al-Baqarah:152].
b. Istighfar berarti kita memohn ampun kepada Allah dapat menjadi jalan keluar bagi segala kesulitan dan kesempaitan hidup.
c. Sabar adalah perhiasan sekaligus senjata orang beriman saat menghadapi berbagai ujian dan cobaan. Sabar bukan berarti pasrah. Sabar justru menjadi simbol kekuatan untuk terus berjuang. “sesungguhnya hanya orang-orang yang bersabarlah yangdiberikan pahala mereka tanpa batas” [Qs Al-Zumar:10].
2.2 Sejarah Android
Android adalah sebuah sistem operasi untuk perangkat mobile berbasis linux yang mencakup sistem operasi, middleware dan aplikasi . Android menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi mereka. Awalnya, Google Inc. Membeli android Inc. Yang merupakan pendatang baru yang membuat peranti lunak untuk ponsel/smartphone. Kemudian untuk
mengembangkan Android, dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti keras, peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcom, T-Mobile, dan Nvidia. Pada saat perilisan perdana Android, 5 November 2007, Android bersama Open Handset Alliance menyatakan mendukung pengembangan open source pada perangkat mobile.
Dilain pihak, Google merilis kode-kode Android dibawah lisensi Apache, sebuah lisensi perangkat lunak dan open platform perangkat seluler. Pada masa saat ini sebagian besar vendor-vendor smartphone sudah memproduksi smartphone berbasis android, vendor-vendor itu antara lain HTC, Motorola, Samsung, LG, HKC, Sony Ericsson dan masih banyak lagi vendor smartphone di dunia yang memproduksi android. Hal ini, karena android itu adalah sistem operasi yang open source sehingga bebas didistribusikan dan dipakai oleh vendor manapun.
Tidak hanya menjadi sistem operasi di smartphone, saat ini Android menjadi pesaing utaa dari Apple pada sistem operasi Tablet PC. Android itu sendiri adalah platform yang sangat lengkap baik itu sistem operasinya, Aplikasi dan Tool Pengembangan, serta dukungan yang sangat tinggi dari komunitas Open Source dunia sehingga android terus berkembang pesat.
2.2.1 Tujuan Android Diciptakan
Beberapa hal yang berusaha dicapai Android, yaitu : a. Keseragaman Lingkungan Pengembangan Aplikasi.
Jutaan smartphone terjual disetiap tahunnya diseluruh dunia sehingga peluang bisnis aplikasi terbuka lebar. Namun, setiap merek smartphone memiliki lingkungan pengembangan aplikasi masing-masing. Ketidak seragaman ini menghambat pengembangan aplikasi bilitas menjadi rendah. Developer aplikasi mengembangkan setiap aplikasinya hanya untuk hardware tertentu.
Untuk pengembangan Aplikasi, Android menawarkan platform pengembangan yang konsisten untuk beragam vendor mobile phone. Oleh sebab itu Aplikasi yang dibuat untuk platform Android dapat dijalankan
b. Konsistensi Akses Hardware.
Pada Android, Aplikasi dapat menggunakan hardware yang tersedia sepanjang memiliki izin yang cukup. Developer dapat membuat aplikasi yang kaya fitur, yang terintegrasi dengan semua hardware yang digunakan.
c. Ekosistem Mobile Phone Bertenga, Kaya Fitur, Aman, dan Terjangkau.
Android dirancang untuk menyediakan beragam itur supaya piranti komunikasi menjadi lebih dari sekedar telepon. Selain layanan telepon dan pesan, Android juga menyediakan fitur kelola lokasi, grafis, multimedia, jaringan, dan database. Karena dibangn diatas kernel linux, android mewarisi fitur keamanan dan stabilitas. Android menerapkan aturan ketat terkait penggunaan layanan dan hardware yang tersedia. Aplikasi tidak dapat menggunakan fitur hardwar tanpa sepengetahuan pengguna. Android dirilis menggunakan Apache License.
Pengguna lisensi ini menyebabkan Android bersifat gratis dan bebas dikembangkan sehingga mampu menekan biaya produksi perangkat mobile phone.Vendor mobile phone sendiri tidak dikenakan biaya untuk menggunakan Android.
2.2.2 Arsitektur Android
Secara umum, arsitektur Android terdiri darilapisan software, yaitu lapisan framework, Android run-time sebagai lapisan perantara (middleware), serta kernel Linux yang membungkus hardware. Berikut penjelasan arsitektur dari Android : a. Aplikasi
Aplikasi yang dibuat berada pada level tertinggi dalam hirerki struktur software di Android. Termasuk didalamya aplikasi bawaan utama Android seperti telepon, pembaca email, program SMS, kontak, browser, dan kalender. Aplikasi umumnya ditulis didalam bahasa pemograman Java.
b. Framework Aplikasi
Dibawah aplikasi terdapat sejumlah software pendukung, meliputi layanan pengeola Activity View, sumber daya, pemberitahuan dan lain-lain.
c. Pustaka
Android menyediakan sejumlah pustaka dasar seperti pustaka grafis 2D dan 3D, multimedia playback, browser engine, pencetak font, database, dan lain-lain. Aplikasi yang memanfaatkan pustaka fungsi ini melalui lapisan framework aplikasi.
Android menyediakan sejumlah pustaka ini bagi pemograman Java. Dibawahnya terdapat Dalvik Virtual Machine (Dalvik VM) yang akan menjalankan aplikasi. Tiap aplikasi akan dijalankan pada proses terpisah dengan VM yang berbeda sehingga terisolasi satu sama lain. Aplikasi masih dapat berkomunikasi dengan aplikasi lain melalui mekanisme yang disediakan framework aplikasi. Dalvik VM bergantung pada lapisan dibawahannya (kernel Linux) untuk multi-threading dan pengelolaan memori tingkat rendah.
e. Kernel Linux
f. Kernel Linux bertanggung jawab menyediakan layanan dasar seperti keamanan, pengelolaan proses, pengelolaan file pengelolaan sumber daya memori, dan hardware.
Gambar 2.1 Arsitektur Android
Aplikasi Android ditulis dalam bahasa pemrograman java. Kode java dikompilasi bersama dengan data file resource yang dibutuhkan oleh aplikasi, dimana prosesnya dipackage oleh tools yang dinamakan “apt tools” kedalam paket android sehingga menghasilkan file dengan ekstensi apk. File apk itulah yang kita sebut dengan aplikasi, dan nantinya dapat di install di perangkat mobile. Ada enam jenis :
a. Activities
Suatu activities akan menyajikan user interface (UI) kepada pengguna, Sehingga pengguna dapat melakukan interaksi. Sebuah aplikasi android bisa jadi hanya memiliki satu activity, tetapi umumnya aplikasi memiliki banyak activity tergantung pada tujuan aplikasi dan desain dari aplikasi tersebut.
b. Service
Service tidak memiliki Graphic User Interface (GUI), tetapi service berjalan secara background, sebagai contoh dalam memainkan music, service mungkin memainkan music atau mengambil data dari jaringan, tetapi setiap service harus berada dalam kelas induknya.
c. Broadcast Receiver
Broadcast Receifer berfungsi menerima dan bereaksi untuk menyampaikan notifikasi. Contoh broadcast seperti zona waktu berubah, baterai low, gambar telah selesai diambil oleh kamera, atau pengubahan referensi bahasa yang digunakan. Broadcast Receifer tidak memiliki User Interface (UI), tetapi memiliki sebuah acticity untuk merespon informasi yang mereka terima, atau mungkin menggunakan Notification Manager untuk memberitahu kepada pengguna, seperti lampu latar atau vibrating (getaran) perangkat, dan lain sebagainya.
2.3 Java
Java adalah bahasa pemrograman tingkat tinggi yang berorientasi objek dan program java tersusun dari bagian yang disebut kelas. Kelas terdiri atas metode-metode yang melakukan pekerjaan dan mengembalikan informasi setelah melakukan tugasnya. Para pemrogram Java banyak mengambil keuntungan dari kumpulan kelas di pustaka kelas Java, yang disebut dengan Java Application Programming Interface (API).
Kelas-kelas ini diorganisasikan menjadi sekelompok yang disebut paket (package). Java API telah menyediakan fungsionalitas yang memadai untuk menciptakan applet dan aplikasi canggih. Jadi ada dua hal yang harus dipelajari dalam Java, yaitu mempelajari bahasa Java dan bagaimana mempergunakan kelas pada Java API. Kelas merupakan satu-satunya cara menyatakan bagian eksekusi program, tidak ada cara lain. Pada Java program javac untuk mengkompilasi file kode sumber Java menjadi kelas-kelas bytecode. File kode sumber mempunyai ekstensi *.java. Kompilator javac menghasilkan file bytecode kelas dengan ekstensi *.class. Interpreter merupakan modul utama sistem Java yang digunakan aplikasi Java dan menjalankan program bytecode Java.
Beberapa keunggulan java yaitu java merupakan bahasa yang sederhana. Java dirancang agar mudah dipelajari dan digunakan secara efektif. Java tidak menyediakan fitur-fitur rumit bahasa pemrograman tingkat tinggi, serta banyak pekerjaan pemrograman yang mulanya harus dilakukan manual, sekarang digantikan dikerjakan Java secara otomatis seperti dealokasi memori. Bagi pemrogram yang sudah mengenal bahasa C++ akan cepat belajar susunan bahasa
Java namun harus waspada karena mungkin Java mengambil arah (semantiks) yang berbeda dibanding C++.
Java merupakan bahasa berorientasi objek (OOP) yaitu cara ampuh dalam pengorganisasian dan pengembangan perangkat lunak. Pada OOP, program komputer sebagai kelompok objek yang saling berinteraksi. Deskripsi ringkas OOP adalah mengorganisasikan program sebagai kumpulan komponen, disebut objek. Objek-objek ini ada secara independen, mempunyai aturan-aturan berkomunikasi dengan objek lain dan untuk memerintahkan objek lain guna meminta informasi tertentu atau meminta objek lain mengerjakan sesuatu. Kelas bertindak sebagai modul sekaligus tipe. Sebagai tipe maka pada saat jalan, program menciptakan objek-objek yang merupakan instan-instan kelas. Kelas dapat mewarisi kelas lain. Java tidak mengijinkan pewarisan jamak namun menyelesaikan kebutuhan pewarisan jamak dengan fasilitas antarmuka yang lebih elegan.
Seluruh objek diprogram harus dideklarasikan lebih dulu sebelum digunakan. Ini merupakan keunggulan Java yaitu Statically Typed. Pemaksaan ini memungkinkan kompilator Java menentukan dan melaporkan terjadinya pertentangan (ketidakkompatibelan) tipe yang merupakan barikade awal untuk mencegah kesalahan yang tidak perlu (seperti mengurangkan variabel bertipe integer dengan variabel bertipe string).
Java menggunakan model pengamanan tiga lapis (three-layer security model) untuk melindungi sistem dari untrusted Java code. Pertama, bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan-aturan dasar bahasa Java. Kedua, class loader menangani pemuatan kelas
Java ke runtime interpreter. Ketiga, manajer keamanan menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses sumber daya seperti sistem file, port jaringan, proses eksternal dan sistem window.
2.4 Android Studio
Android Studio adalah Lingkungan Pengembangan TerpaduIntegrated Development Environment (IDE) untuk pengembangan aplikasi Android, berdasarkan IntelliJ IDEA. Selain merupakan editor kode IntelliJ dan alat pengembang yang berdaya guna, Android Studio menawarkan fitur lebih banyak untuk meningkatkan produktivitas Anda saat membuat aplikasi Android, misalnya:
1. Sistem versi berbasis Gradle yang fleksibel. 2. Emulator yang cepat dan kaya fitur.
3. Lingkungan yang menyatu untuk pengembangan bagi semua perangkat Android.
4. Instant Run untuk mendorong perubahan ke aplikasi yang berjalan tanpa membuat APK baru.
5. Template kode dan integrasi GitHub untuk membuat fitur aplikasi yang sama dan mengimpor kode contoh.
6. Alat pengujian dan kerangka kerja yang ekstensif.
7. Alat Lint untuk meningkatkan kinerja, kegunaan, kompatibilitas versi, dan masalah-masalah lain.
8. Dukungan C++ dan NDK
9. Dukungan bawaan untuk GoogleCloud Platform, mempermudah pengintegrasian Google Cloud Messaging dan App Engine.
10. Laman ini berisi pengantar dasar fitur-fitur Android Studio. Untuk memperoleh rangkuman perubahan terbaru, lihat Catatan Rilis Android Studio.
2.5 Integrated Development Enviorment (IDE)
Android Studio merupakan pengembangkan dari Eclipse IDE, dan dibuat berdasarkan IDE Java populer, yaitu IntelliJ IDEA. Android Studio merupakan IDE resmi untuk pengembangan aplikasi Android.
Sebagai pengembangan dari Eclipse, Android Studio mempunyai banyak fitur-fitur baru dibandingkan dengan Eclipse IDE. Berikut tampilannya.
Gambar 2.3 Tampilan Folder
Tampilan layout yang memiliki dua modeyaitu text activity untuk codingan dan design untuk mendesain tampilan aplikasi. Seperti gambar 2.4 dibawah ini.
2.6 Simbol pada Flowchart
Simbol pada flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta instruksinya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan hubungan antar proses digambarkan dengan garis penghubung. Flowchart disusun dengan simbol-simbol. Simbol ini dipakai sebagai alat bantu menggambarkan proses di dalam program. Simbol-simbol yang dipakai antara lain:
1. Flow Direction Symbols
Yaitu, simbol yang dipakai untuk menghubungkan antara simbol yang satu dengan simbol lainnya atau disebut juga connecting line.
Tabel 2.1 Flow Direction Symbols
Simbol Nama Fungsi
Arus / Flow Penghubung antara
prosedur / proses.
Connector
Simbol keluar / masuk prosedur atau proses dalam lembar / halaman yang sama.
Off-line Connector
Simbol keluar / masuk prosedur atau proses. dalam lembar / halaman yang lain.
2. Processing Simbols
Merupakan simbol yang menunjukkan jenis operasi pengolahan dalam suatu prosedur, berikut adalah tabel tentang Processing Simbols
Tabel 2.2 Processing Symbols
Simbol Nama Fungsi
Process
Simbol yang menunjukkan pengolahan yang dilakukan
Komputer.
Decision
Simbol untuk kondisi yang akan menghasilkan beberapa kemungkinan jawaban / aksi.
Predefined Process
Simbol untuk mempersiapkan penyimpanan yang akan digunakan sebagai tempat pengolahan didalam storage.
Terminal Simbol untuk permulaan atau akhir darti suatu program.
Manual Input Simbol untuk pemasukan data secara manual on-line keyboard.
3. Input-Output Simbol
Simbol yang dipakai untuk menyatakan jenis peralatan yang digunakan sebagai media input atau output.
Tabel 2.3. Input-Output Simbol
Simbol Nama Fungsi
Input-Output
Simbol yang menyatakan proses input dan output tanpa tergantung dengan jenis
peralatannya.
Document
Simbol yang menyatakan input berasal dari dokumen
dalam bentuk kertas atau output di cetak
dikertas.
Disk and On-line Storage
Simbol untuk menyatakan input berasal dari disk atau
output di simpan ke disk.