Memulai
-
Instal paket
Terminal window npm i @capgo/capacitor-volume-buttonsTerminal window pnpm add @capgo/capacitor-volume-buttonsTerminal window yarn add @capgo/capacitor-volume-buttonsTerminal window bun add @capgo/capacitor-volume-buttons -
Sinkronkan dengan proyek native
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
Penggunaan
Section titled âPenggunaanâimport { VolumeButtons } from '@capgo/capacitor-volume-buttons';
// Dengarkan penekanan tombol volumeVolumeButtons.addListener('volumeButtonPressed', (event) => { console.log('Tombol volume ditekan:', event.direction);
if (event.direction === 'up') { console.log('Volume naik ditekan'); // Tangani volume naik } else if (event.direction === 'down') { console.log('Volume turun ditekan'); // Tangani volume turun }});
// Hapus semua listener ketika selesaiawait VolumeButtons.removeAllListeners();Referensi API
Section titled âReferensi APIâaddListener(âvolumeButtonPressedâ, callback)
Section titled âaddListener(âvolumeButtonPressedâ, callback)âDengarkan event penekanan tombol volume.
const handle = VolumeButtons.addListener('volumeButtonPressed', (event) => { console.log('Direction:', event.direction); // 'up' atau 'down'});
// Hapus listener spesifikawait handle.remove();Data Event:
direction:'up' | 'down'- Arah penekanan tombol
removeAllListeners()
Section titled âremoveAllListeners()âHapus semua listener yang terdaftar.
await VolumeButtons.removeAllListeners();getPluginVersion()
Section titled âgetPluginVersion()âDapatkan versi plugin.
const { version } = await VolumeButtons.getPluginVersion();console.log('Versi plugin:', version);Contoh Lengkap
Section titled âContoh Lengkapâimport { VolumeButtons } from '@capgo/capacitor-volume-buttons';
export class VolumeButtonController { private listener: any;
async initialize() { this.listener = VolumeButtons.addListener( 'volumeButtonPressed', this.handleVolumeButton.bind(this) );
console.log('Volume button listener diinisialisasi'); }
private handleVolumeButton(event: { direction: 'up' | 'down' }) { switch (event.direction) { case 'up': this.handleVolumeUp(); break; case 'down': this.handleVolumeDown(); break; } }
private handleVolumeUp() { console.log('Volume naik ditekan'); // Logika kustom Anda untuk volume naik // misalnya, navigasi maju, tingkatkan brightness, dll. }
private handleVolumeDown() { console.log('Volume turun ditekan'); // Logika kustom Anda untuk volume turun // misalnya, navigasi mundur, kurangi brightness, dll. }
async cleanup() { if (this.listener) { await this.listener.remove(); } await VolumeButtons.removeAllListeners(); console.log('Volume button listener dibersihkan'); }}Kasus Penggunaan
Section titled âKasus PenggunaanâPengambilan Foto/Video
Section titled âPengambilan Foto/VideoâGunakan tombol volume sebagai trigger shutter kamera:
VolumeButtons.addListener('volumeButtonPressed', async (event) => { // Tombol volume apapun memicu kamera await capturePhoto();});Navigasi Halaman
Section titled âNavigasi HalamanâNavigasi melalui konten dengan tombol volume:
let currentPage = 0;
VolumeButtons.addListener('volumeButtonPressed', (event) => { if (event.direction === 'up') { currentPage++; showPage(currentPage); } else { currentPage = Math.max(0, currentPage - 1); showPage(currentPage); }});Kontrol Media
Section titled âKontrol MediaâKontrol pemutaran media:
VolumeButtons.addListener('volumeButtonPressed', (event) => { if (event.direction === 'up') { skipForward(); } else { skipBackward(); }});Kontrol Game
Section titled âKontrol GameâGunakan tombol volume untuk aksi game:
VolumeButtons.addListener('volumeButtonPressed', (event) => { if (event.direction === 'up') { player.jump(); } else { player.crouch(); }});Praktik Terbaik
Section titled âPraktik Terbaikâ-
Bersihkan listener Selalu hapus listener ketika komponen Anda unmount:
useEffect(() => {const listener = VolumeButtons.addListener('volumeButtonPressed', handler);return () => {listener.remove();};}, []); -
Berikan feedback visual Tunjukkan kepada pengguna bahwa tombol volume digunakan untuk kontrol kustom:
VolumeButtons.addListener('volumeButtonPressed', (event) => {showNotification(`Volume ${event.direction} ditekan`);performAction(event.direction);}); -
Pertimbangkan aksesibilitas Ingat bahwa beberapa pengguna bergantung pada tombol volume untuk kontrol volume aktual. Sediakan kontrol alternatif.
-
Debounce penekanan cepat Cegah penekanan ganda yang tidak disengaja:
let lastPress = 0;const DEBOUNCE_MS = 300;VolumeButtons.addListener('volumeButtonPressed', (event) => {const now = Date.now();if (now - lastPress < DEBOUNCE_MS) {return; // Abaikan penekanan cepat}lastPress = now;handlePress(event.direction);}); -
Dokumentasikan perilaku Jelaskan kepada pengguna bahwa tombol volume memiliki fungsionalitas kustom:
function showVolumeButtonHelp() {alert('Gunakan tombol Volume Naik/Turun untuk navigasi halaman');}
Catatan Platform
Section titled âCatatan Platformâ- Bekerja di iOS 10.0+
- Tombol volume terdeteksi dengan andal
- UI volume sistem mungkin masih muncul sebentar
Android
Section titled âAndroidâ- Bekerja di Android 5.0 (API 21)+
- Memerlukan aplikasi di foreground
- Beberapa perangkat mungkin memiliki sedikit delay
- Tidak didukung di platform web
- Listener tidak akan dipicu
Pemecahan Masalah
Section titled âPemecahan MasalahâEvent tidak dipicu:
- Pastikan aplikasi memiliki fokus
- Periksa bahwa listener terdaftar dengan benar
- Verifikasi plugin terinstal dan tersinkronisasi
Perubahan volume sistem mengganggu:
- Ini adalah perilaku yang diharapkan - plugin mendeteksi penekanan tetapi tidak mencegah perubahan volume sistem
- Pertimbangkan UX yang bekerja bersama perubahan volume
Beberapa event dipicu:
- Implementasikan debouncing untuk menangani penekanan cepat
- Periksa registrasi listener duplikat