Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PhoneGap
Code

Bangun AudioPlayer dengan PhoneGap: Logika Aplikasi

by
Difficulty:BeginnerLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Nindya Novita (you can also view the original English article)

Ini adalah bagian kedua dari seri tentang Audero Audio Player. Dalam artikel ini, kita akan membuat logika bisnis pemain kita. Saya juga akan menjelaskan beberapa API Cordova yang diperkenalkan di artikel sebelumnya.


Ikhtisar Seri


Menciptakan Player

Di bagian ini, saya akan menunjukkan kepada Anda kelas yang disebut Player, yang memungkinkan kami bermain, berhenti, mundur, dan maju cepat. Kelas sangat bergantung pada API Media; tanpa metode, pemain kami akan benar-benar tidak berguna. Selain API Media, kelas ini mengambil keuntungan dari metode alert() pada Pemberitahuan API. Tampilan lansiran bervariasi di antara platform. Sebagian besar sistem operasi yang didukung menggunakan kotak dialog asli tetapi yang lain, seperti Bada 2.X, menggunakan fungsi alert () klasik browser, yang kurang dapat disesuaikan. Metode sebelumnya menerima hingga empat parameter:

  1. message: String yang berisi pesan untuk ditampilkan
  2. alertCallback: Callback untuk memanggil ketika dialog peringatan ditutup
  3. title: Judul dialog (nilai defaultnya adalah "Alert")
  4. buttonName: Teks tombol yang termasuk dalam dialog (nilai default adalah "OK")

Ingatlah bahwa Windows Phone 7 mengabaikan nama tombol dan selalu menggunakan default. Windows Phone 7 dan 8 tidak memiliki peringatan browser built-in, jadi jika Anda ingin menggunakan alert ('message') ;, Anda harus menetapkan window.alert = navigator.notification.alert.

Sekarang setelah saya menjelaskan API yang digunakan oleh Player, kita dapat melihat cara pembuatannya. Kami memiliki tiga properti:

  • media: referensi ke objek suara saat ini
  • mediaTimer: yang akan berisi ID interval unik yang dibuat menggunakan fungsi setInterval () yang akan kita lewati ke clearInterval () untuk menghentikan pengatur suara
  • isPlaying: variabel yang menentukan apakah suara saat ini diputar atau tidak. Selain properti, kelas memiliki beberapa metode.

Metode initMedia () menginisialisasi properti media dengan objek Media yang mewakili suara yang dipilih oleh pengguna. Yang terakhir ini diberitahukan menggunakan API Pemberitahuan jika terjadi kesalahan. Tujuan dari metode playPause, stop (), dan seekPosition () harus jelas, jadi saya akan melanjutkan. Metode resetLayout () dan changePlayButton () sangat sederhana. Mereka digunakan untuk mengatur ulang atau memperbarui tata letak pemain sesuai dengan tindakan yang dilakukan oleh pengguna. Metode terakhir yang tersisa adalah updateSliderPosition (), yang mirip dengan penggeser waktu. Yang terakhir memiliki nol (awal slider) sebagai nilai default untuk posisi saat ini, atur menggunakan atribut value = "0". Ini harus diperbarui secara bersamaan saat suara dimainkan untuk diberikan kepada pengguna umpan balik visual mengenai waktu pemutaran yang telah berlalu.

Kami telah menemukan semua detail kelas ini, jadi di sini adalah kode sumber file:


Mengelola File Audio

Bagian ini mengilustrasikan kelas AppFile yang akan digunakan untuk membuat, menghapus, dan memuat suara menggunakan Web Storage API. API ini memiliki dua area, Sesi dan Lokal, tetapi Cordova menggunakan yang terakhir. Semua suara disimpan dalam item yang berjudul "file" seperti yang Anda lihat dengan melihat properti _tableName.

Harap perhatikan bahwa API ini hanya dapat menyimpan data dasar. Oleh karena itu, agar sesuai dengan kebutuhan kita untuk menyimpan objek, kita akan menggunakan format JSON. JavaScript memiliki kelas untuk menangani format yang disebut JSON ini. Ia menggunakan metode parse() untuk mem-parse string dan membuat ulang data yang sesuai, dan stringify() untuk mengonversi objek dalam string. Sebagai catatan akhir, saya tidak akan menggunakan notasi titik dari API karena Windows Phone 7 tidak mendukungnya, jadi kami akan menggunakan metode setItem() dan getItem () untuk memastikan kompatibilitas untuk semua perangkat.

Sekarang setelah Anda memiliki gambaran tentang bagaimana kami akan menyimpan data, mari kita bicara tentang data yang perlu kita simpan. Satu-satunya informasi yang kita butuhkan untuk setiap suara yang ditemukan adalah nama (name properti) dan jalur absolut (properti fullPath). Kelas AppFile juga memiliki "konstan", disebut EXTENSIONS, di mana kami akan mengatur ekstensi yang akan diuji terhadap setiap file. Jika mereka cocok, file akan dikumpulkan oleh aplikasi. Kami memiliki metode untuk menambahkan file (addFile()), salah satu metode untuk menghapus file (deleteFile()), salah satu metode yang menghapus seluruh database (deleteFiles()), dan, terakhir, dua metode yang mengambil file dari database: getAppFiles() untuk mengambil semua file, dan getAppFile() untuk mengambil satu saja. Kelas ini juga memiliki empat metode perbandingan, dua statis (compare() dan compareIgnoreCase()) dan dua non-statis (compareTo() dan compareToIgnoreCase()). Metode terakhir adalah yang digunakan untuk mengambil indeks file tertentu, getIndex(). Kelas AppFile memungkinkan Anda untuk melakukan semua operasi dasar yang mungkin Anda butuhkan.

Kode yang mengimplementasikan apa yang telah kita bahas dapat dibaca di sini:


Kelas Utilitas

File utility.js sangat singkat dan mudah dimengerti. Hanya memiliki dua metode. Satu digunakan untuk mengonversi milidetik menjadi string berformat yang akan ditampilkan di pemutar, sementara yang lain adalah implementasi JavaScript dari metode Java yang terkenal endsWith.

Inilah sumbernya:


Menempatkannya Semua Bersama

Bagian ini membahas file JavaScript terakhir dari proyek, application.js, yang berisi kelas Aplikasi. Tujuannya adalah melampirkan acara ke elemen halaman aplikasi. Kejadian-kejadian itu akan memanfaatkan kelas yang telah kita lihat sejauh ini dan memungkinkan pemain untuk bekerja dengan benar.

Kode fungsi yang diilustrasikan tercantum di bawah ini:


Mengelola Tautan Eksternal

Di bagian sebelumnya dari seri ini, saya menyebutkan bahwa poin menarik dari halaman kredit adalah atribut target="_blank" yang diterapkan pada tautan. Bagian ini akan menjelaskan mengapa metode openLinksInApp () kelas Aplikasi masuk akal.

Sekali waktu, Cordova digunakan untuk membuka tautan eksternal di Cordova WebView yang sama yang menjalankan aplikasi. Saat ini, tautan eksternal dibuka, secara default, menggunakan Cordova WebView jika URL ada di daftar putih aplikasi Anda. URL yang tidak ada dalam daftar putih Anda dibuka menggunakan API InAppBrowser. Saat ini, tautan eksternal dibuka, secara default, menggunakan Cordova WebView jika URL ada di daftar putih aplikasi Anda. URL yang tidak ada dalam daftar putih Anda dibuka menggunakan API InAppBrowser. Jika Anda tidak mengelola tautan dengan cara yang benar, atau jika pengguna mengetuk tautan yang ditampilkan di InAppBrowser atau sistem dan kemudian memilih untuk kembali, semua perangkat seluler jQuery Mobile hilang. Perilaku ini terjadi karena file CSS dan JavaScript dimuat oleh halaman utama, dan yang berikut dimuat menggunakan AJAX. Sebelum mengungkap solusi, mari kita lihat apa yang InAppBrowser.

The InAppBrowser adalah browser web yang ditampilkan di aplikasi Anda ketika Anda menggunakan jendela. Buka panggilan.

API ini memiliki tiga metode:

  • addEventListener (): Memungkinkan Anda untuk mendengarkan tiga peristiwa (loadstart, loadstop, dan exit) dan melampirkan fungsi yang berjalan segera setelah peristiwa-peristiwa itu dipecat
  • removeEventListener (): Menghapus listener yang terlampir sebelumnya.
  • close (): Digunakan untuk menutup jendela InAppBrowser.

Jadi, apa solusinya? Tujuan dari fungsi openLinksInApp (), digabungkan dengan whitelist yang ditentukan dalam file konfigurasi, adalah untuk menangkap klik pada semua tautan eksternal yang dikenali dengan menggunakan atribut target = "_ blank", dan membukanya menggunakan window.open () metode. Dengan teknik ini, kami akan menghindari masalah yang dijelaskan, dan pemain kami akan terus melihat dan bekerja seperti yang diharapkan.


Bagian Selanjutnya

Pada seri ketiga dan terakhir dari seri ini, kita akan melihat file terakhir yang tersisa sehingga Anda dapat menyelesaikan proyek dan bermain-main dengannya.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.