HomeDocsAndroidScreen recording

Screen recording

v1.8.0

Recording is off by default. With tester approval, attach up to 30 seconds of recent activity at balanced quality.

Recording permission

  • Requires Android 10 (API 29) or later and a hardware H.264 encoder. Ordinary reports still work on Android 7–9. Devices without a suitable hardware encoder report recording unavailable.
  • Android asks for recording permission and shows a recording indicator. BugScreen also shows a notification with a Stop button. The SDK declares FOREGROUND_SERVICE and FOREGROUND_SERVICE_MEDIA_PROJECTION; the no-op artifact declares neither. Screenshot permission does not cover recording.
  • Choose your app when Android offers app selection. Full-display recording can include notifications and system UI. Protected content may appear blank.
kotlin
BugScreenSDK.start(
    BugScreenConfig.Builder(this)
        .apiKey("fb_your_api_key_here")
        .startScreenRecordingImmediately(true)
        .build()
)

Check the recording

  1. Open the app and accept the system recording prompt.
  2. Use the app for a few seconds, then open a bug report.
  3. Play the attached clip to check it shows what happened before the report.

If no clip appears, check the recording state and try again after collecting more footage.

OptionDefaultDescription
startScreenRecordingImmediately(Boolean)falseStart recording after system permission. The no-op artifact never records.
screenRecordingOptions(ScreenRecordingOptions)30 seconds, BALANCEDSet duration and LOW, BALANCED or HIGH quality.

Duration and quality

Duration is clamped to 5–60 seconds. Clips may be shorter; video upload limits still apply.

kotlin
import app.bugscreen.android.ScreenRecordingOptions
import app.bugscreen.android.ScreenRecordingQuality

BugScreenSDK.start(
    BugScreenConfig.Builder(this)
        .apiKey("fb_your_api_key_here")
        .startScreenRecordingImmediately(true)
        .screenRecordingOptions(
            ScreenRecordingOptions(
                durationSeconds = 45,
                quality = ScreenRecordingQuality.LOW,
            )
        )
        .build()
)

Quality presets

  • LOW: up to 480 × 1066, 10 fps, 0.75 Mbps; 8 MiB buffer.
  • BALANCED (default): up to 720 × 1600, 15 fps, 1.5 Mbps; 16 MiB buffer.
  • HIGH: up to 1080 × 2400, 30 fps, 4 Mbps; 32 MiB buffer.

Sizes apply in either orientation, without stretching or upscaling. Frame rate and bitrate are targets. Buffer limits cover compressed history and exports, not total app memory.

Control recording at runtime

Start recording from a tester control to choose when the system asks for permission.

kotlin
BugScreenSDK.startScreenRecording()

After the tester responds to the system prompt, check screenRecordingState for the current status.

kotlin
val state = BugScreenSDK.screenRecordingState

To stop recording, call:

kotlin
BugScreenSDK.stopScreenRecording()

When recording pauses or stops

  • Recording stops and clears history when the app backgrounds or the phone locks. It can restart when the app returns, asking for permission again if needed. Call startScreenRecording() to retry after denial, a manual stop, or an interruption such as memory or thermal pressure. Rotation or resizing starts fresh history.
  • Opening a report pauses recording before the reporter appears. The clip uses one of the four attachment slots; testers can preview or remove it before submitting. Closing the reporter starts fresh history if the session is still approved. Recording permission prompts stay paused while the reporter is open.
  • Clips may be shorter after startup, rotation or dropped frames. If recording or preparation fails, reporting still works and existing attachments stay in place.

Performance

Choose Low quality to reduce encoding work, or shorten the duration to store less history.

Recording privacy

Recording stays on the device with no microphone or app audio. Only clips kept in submitted reports are uploaded. Stopping clears history; disabling recording keeps clips attached to a draft. Removed clips and temporary files are deleted. Videos cannot be redacted, so remove sensitive clips before submitting.

Configure recording in your app. The console and MCP cannot enable recording or approve permission. There is no React Native recording bridge.