/react-native-torch

Torch (flashlight) plugin for React Native (Android/iOS)

Primary LanguageJavaMIT LicenseMIT

react-native-torch

npm version

A simple React Native plugin to switch a flashlight on/off.

Currently supports both iOS (>= 8.0) and Android (all versions).

Applies the permission checks on Android API >=25 devices. Below API 25, Android will automatically require the user to accept permissions on install / update.

Install

npm install --save react-native-torch
react-native link react-native-torch

Usage

Without permissions check

import Torch from 'react-native-torch';

Torch.switchState(true); // Turn ON
Torch.switchState(false); // Turn OFF

With extra permission check and dialog (Android only)

import Torch from 'react-native-torch';
import { Platform } from 'react-native';

if (Platform.OS === 'ios') {
	Torch.switchState(this.isTorchOn);
} else {
	const cameraAllowed = await Torch.requestCameraPermission(
		'Camera Permissions', // dialog title
		'We require camera permissions to use the torch on the back of your phone.' // dialog body
	);

	if (cameraAllowed) {
		Torch.switchState(this.isTorchOn);
	}
}

Android catch exception accessing Torch e.g. in emulator or if device doesn't have a torch

try {
	await Torch.switchState(newTorchState);
	this.setState({ isTorchOn: newTorchState });
} catch (e) {
	ToastAndroid.show(
		'We seem to have an issue accessing your torch',
		ToastAndroid.SHORT
	);
}

NOTE: iOS fails silently, on Android, you can still call without the try/catch block and it won't cause a crash

A demo application TorchDemo is also available.

Android version has flow support.