Configuration

Launching with options

Bugsee behavior is very customizable, if default configuration is not satisfying your needs you can launch the SDK with additional parameters passed as a dictionary.

!Java

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        HashMap<String, Object> options = new HashMap<>();
        options.put(Bugsee.Option.MaxRecordingTime, 60);
        options.put(Bugsee.Option.ShakeToTrigger, false);
        Bugsee.launch(this, "<your_app_token>", options);
    }
}

!Kotlin

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        val options : HashMap<String, Any> = hashMapOf(
                Bugsee.Option.MaxRecordingTime to 60,
                Bugsee.Option.ShakeToTrigger to false
        )
        Bugsee.launch(this, "<your_app_token>", options)
    }
}

Alternatively, parameters can be passed as LaunchOptions class instance.

!Java

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        LaunchOptions options = new LaunchOptions();
        options.Video.setMaxRecordingTime(60);
        options.General.setShakeToTrigger(false);
        Bugsee.launch(this, "<your_app_token>", options);
    }
}

!Kotlin

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        val options = LaunchOptions()
        options.Video.maxRecordingTime = 60
        options.General.isShakeToTrigger = false
        Bugsee.launch(this, "<your_app_token>", options)
    }
}

Note, that not all of the following options will work in an Instant App. Specifically, NotificationBarTrigger, VideoEnabled and CaptureLogs options are always set to false for an Instant App.

Stop, Relaunch

It is also possible to relaunch Bugsee with other options later

!Java

// Relaunch with other options.
HashMap<String, Object> options = new HashMap<>();
// Set other launch options.
//...
Bugsee.relaunch(options);

!Kotlin

// Relaunch with other options.
val options : HashMap<String, Any> = hashMapOf()
// Set other launch options.
//...
Bugsee.relaunch(options)

or stop the events and video recording.

!Java

// Stop recording completely.
Bugsee.stop();

!Kotlin

// Stop recording completely.
Bugsee.stop()

Available Options

Key Default value Notes
MaxRecordingTime 60 Maximum recording duration (in seconds)
ShakeToTrigger true Shake gesture to trigger report
NotificationBarTrigger true Trigger bug report from notification bar
ScreenshotToTrigger false (EXPERIMENTAL) Trigger bug report by taking screenshot on device.

Bugsee Android SDK 5.0.0 and up.

This feature requires additional permissions:
Android 14+: DETECT_SCREEN_CAPTURE permission is required. More details about the permission and the native API involved in Android development documentation.

Android 13: READ_MEDIA_IMAGES permission is required.

Android 12 and below: READ_EXTERNAL_STORAGE permission is required.

On Android 13 and below, Bugsee SDK monitors the gallery to detect screenshot creation and that's why the permissions mentioned above are required.
CrashReport true Catch and report application crashes
HandleAnr false Detect ANR (Application Not Responding) and transform it to a meaningful exception. Note: option is experimental and it is not recommended to use it in production builds.
VideoEnabled true Record video. If false, created issues will contain console logs, events and traces, but will not contain video.
ScreenshotEnabled true Attach screenshot to a report. Note, that if VideoEnabled option is false, default value of this option is false too.
ViewHierarchyEnabled true Flag that controls view hierarchy capturing for Bug reports
VideoMode V1 Screen capture mechanism. Video modes comparison is presented below in Video modes comparison section.
VideoScale 1.0 Additional down scaling applied to recorded video, (e.g., 0.5 would reduce both width and height by half).
MonitorNetwork true Monitor network events
RecordHttpBodyWithoutType false Attach http request / response body, which has no declared content type, to a report. If false, only textual body is attached to a report. Option has no effect if MonitorNetwork option value is false.
ServiceMode false Should be used, when Bugsee is launched from service. If true, video is not recorded and recording is not stopped, when app goes to background; ShakeToTrigger and NotificationBarTrigger options are set to false automatically.
CaptureLogs true Automatically capture Logcat logs.
LogLevel BugseeLogLevel.Verbose Minimal log level of Logcat messages, which will be attached to reports. Option has no effect if CaptureLogs option is false. Option has value of com.bugsee.library.events.BugseeLogLevel type.
MaxDataSize 50 Bugsee will avoid using more disk space than specified (in MB). If total Bugsee data size exceeds specified value, oldest recordings (even not sent) will be removed. Value should not be smaller than 10.
FrameRate FrameRate.High Specifies how often frames are captured. Option has value of com.bugsee.library.data.FrameRate type.
WifiOnlyUpload false Upload reports only when a device is connected to a wifi network.
ReportPrioritySelector false Allow user to modify priority manually when reporting - true to allow, false to disallow.
DefaultCrashPriority IssueSeverity.Blocker Default priority for crashes. Option has value of com.bugsee.library.data.IssueSeverity type.
DefaultBugPriority IssueSeverity.High Default priority for bugs. Option has value of com.bugsee.library.data.IssueSeverity type.
CaptureDeviceAndNetworkNames true Capture device name, wifi SSID and mobile carrier name.
RememberUserDecisionForScreenCapture false Instructs Bugsee SDK to remember the choice user has made when permission dialog was shown for VideoMode.V2. To reset the remembered choice, use Bugsee.resetVideoCapturePermissionDecision() method.
ReportSummaryRequired false Controls whether "Summary" field in bug reporting UI is mandatory or not.
ReportDescriptionRequired false Controls whether "Description" field in bug reporting UI is mandatory or not.
ReportEmailRequired false Controls whether "Email" field in bug reporting UI is mandatory or not.

Built-in reporting UI adjustments

Alongside stylistic changes, you can also change the placeholders' texts shown in input controls within the built-in bug reporting UI

!Java

Bugsee.getAppearance().ReportSummaryPlaceholder = "What's happened? Only shortly";
Bugsee.getAppearance().ReportDescriptionPlaceholder = "Here, describe all the pains and frustrations you had. In details";
Bugsee.getAppearance().ReportEmailPlaceholder = "Identify yourself here";
Bugsee.getAppearance().ReportLabelsPlaceholder = "Labels.For.Developers. [Comma separated]";

!Kotlin

Bugsee.appearance.ReportSummaryPlaceholder = "What's happened? Only shortly"
Bugsee.appearance.ReportDescriptionPlaceholder = "Here, describe all the pains and frustrations you had. In details"
Bugsee.appearance.ReportEmailPlaceholder = "Identify yourself here"
Bugsee.appearance.ReportLabelsPlaceholder = "Labels.For.Developers. [Comma separated]"

Video modes comparison

Mode name Surfaces (GlSurfaceView, VideoView, MapView, etc.) System views (keyboard, status bar, etc.) User consent Required Android API
VideoMode.V1 - - - 21
VideoMode.V2** + + + 21
VideoMode.V3*** + - - 24

**VideoMode.V2: Starting Android 9 it requires FOREGROUND_SERVICE permission. Starting Android 14 it requires additional FOREGROUND_SERVICE_MEDIA_PROJECTION permission. If you want to use V2 mode, your application will have to declare these permissions in manifest.

***VideoMode.V3: On Samsung devices, VideoMode.V3 will work only on Android 8 and up. Earlier versions of Android on Samsung devices are known to have issues when VideoMode.V3 is being used and hence it preemptively disabled there.