On Android, you can read, set, and observe the device's ringer mode (e.g., silent, vibrate, normal).
Key Operations:
getRingerMode(): Returns the current mode.setRingerMode(mode): Sets the mode using the RINGER_MODE enum.addRingerListener(callback): Subscribes to changes.checkDndAccess(): Checks if the app has Do Not Disturb access.requestDndAccess(): Requests Do Not Disturb access (opens Android settings).
React Hook: useRingerMode() provides mode, error, and setMode directly in your component.
import {
RINGER_MODE,
VolumeManager,
useRingerMode,
} from 'react-native-volume-manager';
// Imperative usage
const currentMode = await VolumeManager.getRingerMode();
await VolumeManager.setRingerMode(RINGER_MODE.vibrate);
const listener = VolumeManager.addRingerListener((status) => {
console.log(status.mode, status.status);
});
VolumeManager.removeRingerListener(listener);
// Hook usage
export function RingerControls() {
const { mode, error, setMode } = useRingerMode();
return (
<View>
<Text>Ringer mode: {mode}</Text>
<Button title="Silent" onPress={() => setMode(RINGER_MODE.silent)} />
<Button title="Normal" onPress={() => setMode(RINGER_MODE.normal)} />
<Button title="Vibrate" onPress={() => setMode(RINGER_MODE.vibrate)} />
<Text>{error?.message}</Text>
</View>
);
}