Add picture in picture (PiP) support to React Native Android applications with full control over PiP mode and dimensions.
- ✅ Picture-in-Picture Mode Support - Enter PiP mode with custom dimensions
- ✅ Auto PiP Control - Enable/disable automatic PiP mode entry
- ✅ Custom Dimensions - Set custom width and height for PiP mode
- ✅ Android 8.0+ Support - Full compatibility with modern Android versions
npm install @videosdk.live/react-native-pip-android
# or
yarn add @videosdk.live/react-native-pip-android
Add the following to your android/app/src/main/AndroidManifest.xml
:
<activity
android:name=".MainActivity"
android:supportsPictureInPicture="true"
android:resizeableActivity="true"
... >
import PipHandler from '@videosdk.live/react-native-pip-android';
// Enter PiP mode with custom dimensions
PipHandler.enterPipMode(400, 300);
import PipHandler from '@videosdk.live/react-native-pip-android';
// Enable auto PiP mode (for meeting screens)
PipHandler.setMeetingScreenState(true);
// Disable auto PiP mode
PipHandler.setMeetingScreenState(false);
// Check current auto PiP state
const isEnabled = await PipHandler.getMeetingScreenState();
import PipHandler from '@videosdk.live/react-native-pip-android';
// Set custom default dimensions
PipHandler.setDefaultPipDimensions(500, 400);
// Get current default dimensions
const dimensions = await PipHandler.getDefaultPipDimensions();
console.log(`Width: ${dimensions.width}, Height: ${dimensions.height}`);
import { usePipModeListener } from '@videosdk.live/react-native-pip-android';
function MyComponent() {
const inPipMode = usePipModeListener();
if (inPipMode) {
return <Text>Currently in PiP Mode</Text>;
}
return <Text>Normal Mode</Text>;
}
Method | Parameters | Returns | Description |
---|---|---|---|
enterPipMode(width, height) |
width: number, height: number |
void |
Enter PiP mode with custom dimensions |
setMeetingScreenState(value) |
value: boolean |
void |
Enable/disable auto PiP mode |
getMeetingScreenState() |
None | Promise<boolean> |
Get current auto PiP mode state |
setDefaultPipDimensions(width, height) |
width: number, height: number |
void |
Set custom default dimensions |
getDefaultPipDimensions() |
None | Promise<{width: number, height: number}> |
Get current default dimensions |
Hook | Returns | Description |
---|---|---|
usePipModeListener() |
boolean |
Returns current PiP mode state |
- React Native 0.60+
- Android 8.0+ (API level 26+)
- AndroidX support
The following permissions are automatically added:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />