Langsung ke konten

Memulai

  1. Instal paket

    Terminal window
    npm i @capgo/capacitor-mute
  2. Sinkronkan dengan proyek asli

    Terminal window
    npx cap sync

Impor plugin dan gunakan metodenya untuk memeriksa status mute:

import { CapacitorMute } from '@capgo/capacitor-mute';
// Periksa apakah perangkat dalam mode mute
const checkMuteState = async () => {
const { value } = await CapacitorMute.isMuted();
if (value) {
console.log('Perangkat dalam mode mute/senyap');
// Sesuaikan perilaku aplikasi untuk mode senyap
} else {
console.log('Suara perangkat menyala');
}
};

Memeriksa apakah perangkat saat ini dalam mode mute/senyap.

const result = await CapacitorMute.isMuted();
// Mengembalikan: { value: boolean }
import { CapacitorMute } from '@capgo/capacitor-mute';
export class SoundManager {
private isMuted = false;
async initialize() {
// Dapatkan status mute awal
await this.checkMuteState();
}
async checkMuteState() {
try {
const { value } = await CapacitorMute.isMuted();
this.isMuted = value;
this.updateAppBehavior();
} catch (error) {
console.error('Gagal memeriksa status mute:', error);
}
}
private updateAppBehavior() {
if (this.isMuted) {
// Perangkat dalam mode mute - sesuaikan perilaku aplikasi
this.disableSoundEffects();
this.showVisualNotifications();
} else {
// Suara perangkat menyala
this.enableSoundEffects();
this.useAudioNotifications();
}
}
private disableSoundEffects() {
// Nonaktifkan suara dalam aplikasi
console.log('Menonaktifkan efek suara');
}
private enableSoundEffects() {
// Aktifkan suara dalam aplikasi
console.log('Mengaktifkan efek suara');
}
private showVisualNotifications() {
// Gunakan umpan balik visual daripada audio
console.log('Menggunakan notifikasi visual');
}
private useAudioNotifications() {
// Gunakan notifikasi audio
console.log('Menggunakan notifikasi audio');
}
}
// Penggunaan
const soundManager = new SoundManager();
await soundManager.initialize();
// Polling secara berkala untuk memeriksa perubahan
setInterval(() => {
soundManager.checkMuteState();
}, 5000); // Periksa setiap 5 detik
  • Mendeteksi status sakelar mute fisik
  • Tidak ada event perubahan real-time (diperlukan polling)
  • Bekerja pada iPhone dan iPad dengan sakelar mute
  • Memeriksa apakah mode dering diatur ke senyap atau getar
  • Tidak ada event perubahan (diperlukan polling)
  • Berdasarkan mode dering AudioManager
  1. Polling untuk perubahan Karena plugin tidak menyediakan event real-time, lakukan polling secara berkala jika Anda perlu melacak perubahan:

    // Periksa status mute secara berkala
    setInterval(async () => {
    const { value } = await CapacitorMute.isMuted();
    if (value !== previousMuteState) {
    handleMuteStateChange(value);
    }
    }, 5000);
  2. Hormati preferensi pengguna Selalu hormati status mute dan sesuaikan perilaku audio aplikasi Anda dengan tepat.

  3. Sediakan alternatif visual

    const { value: isMuted } = await CapacitorMute.isMuted();
    if (isMuted) {
    // Tampilkan notifikasi visual
    showToast('Pesan baru diterima');
    } else {
    // Putar notifikasi suara
    playNotificationSound();
    }
  1. Manajemen Suara Game

    const shouldPlaySound = async () => {
    const { value: isMuted } = await CapacitorMute.isMuted();
    return !isMuted && userPreferences.soundEnabled;
    };
  2. Penanganan Notifikasi

    const sendNotification = async (message: string) => {
    const { value: isMuted } = await CapacitorMute.isMuted();
    if (isMuted) {
    // Gunakan getaran atau notifikasi visual
    await Haptics.vibrate();
    showBanner(message);
    } else {
    // Putar notifikasi suara
    await playSound('notification.mp3');
    }
    };
  3. Pemutar Video

    const initVideoPlayer = async () => {
    const { value: isMuted } = await CapacitorMute.isMuted();
    videoPlayer.setMuted(isMuted);
    if (isMuted) {
    showSubtitles(true);
    showMuteIndicator();
    }
    };
  1. Selalu mengembalikan false di Android

    • Periksa apakah mode dering perangkat benar-benar diatur ke senyap
    • Beberapa perangkat Android mungkin memiliki perilaku yang berbeda
  2. Tidak ada event perubahan yang tersedia

    • Plugin tidak menyediakan event perubahan real-time
    • Implementasikan polling jika Anda perlu mendeteksi perubahan
  3. Tidak berfungsi di simulator

    • Simulator iOS tidak memiliki sakelar mute
    • Uji pada perangkat nyata untuk hasil yang akurat