Skip to content
Star

Floating Ball

The floating ball lets you trigger BiBi Keyboard's voice recognition even when you are using other keyboards, enabling true cross-app voice input.

Overview

The floating ball is a draggable circular button overlay. It provides:

  • Works with any IME: use BiBi Keyboard ASR even when a third-party keyboard is active
  • Global: available in any app (settings, browser, chat apps, etc.)
  • State indicator: color/animation indicates current status
  • Free positioning: drag anywhere; auto snap to screen edge

States

StateDescription
Idlewaiting; tap/hold to start recording
Recordingrecording audio with waveform animation
Processingrecognizing; spinner while waiting
Donecheckmark; result has been inserted

Settings

All options are under Settings → UI & Interaction → Floating Settings:

KeyTypeDefaultDescription
floatingAsrEnabledBooleantrueenable floating ball voice recognition
floatingSwitcherOnlyWhenImeVisibleBooleantrueshow only when keyboard is visible
floatingSwitcherAlphaFloat1.0transparency (0.2-1.0)
floatingBallSizeDpInt44size (28-96dp)
floatingWriteTextCompatEnabledBooleantruecompatibility mode (select-all + paste)

Details

1. Enable floating ball

  • Path: Settings → UI & Interaction → Floating Settings → Enable voice recognition
  • Description: master switch; when disabled the floating ball is hidden

2. Visibility condition

  • Path: Settings → UI & Interaction → Floating Settings → Only show when keyboard is visible
  • Behavior:
    • On (default): show only when the keyboard panel is visible
    • Off: always show; when keyboard hidden, it becomes semi-transparent and sticks to the edge

3. Transparency

  • Range: 0.2 (20%) to 1.0 (opaque)
  • Lower values reduce obstruction on screen

4. Size

  • Range: 28dp to 96dp
  • Default: 44dp

5. Compatibility mode

  • Path: Settings → UI & Interaction → Floating Settings → Write-text compatibility mode
  • Behavior:
    • On (default): uses "Select-all + Paste" strategy for better compatibility
    • Off: uses standard Accessibility APIs (faster, but may not work in some apps)

About compatibility mode

Accessibility does not provide a true IME-style "insert text" API. Some apps (e.g. WeChat, QQ, some games) may restrict accessibility text input, causing insertion failure. Compatibility mode can mitigate such cases, but it is not perfect.

For best reliability, prefer using the BiBi Keyboard IME, or use Fcitx5 AIDL linking.

You can configure the target package list in Settings (one per line; supports prefix match).

Permissions

The floating ball requires three system permissions:

1. Overlay permission

Purpose: show the floating ball over other apps.

How to grant:

  1. When enabling the feature, the app jumps to system settings
  2. Find BiBi Keyboard and allow "Display over other apps"

2. Accessibility permission

Purpose: insert recognition result into the active editor.

How to grant:

  1. Settings → Accessibility
  2. Enable "BiBi Keyboard speech accessibility service"

Privacy

BiBi Keyboard's accessibility service is only used for text insertion. It does not read screen content or collect sensitive info.

3. Microphone permission

Purpose: record audio.

How to grant:

  1. On first use, Android shows a permission prompt
  2. Tap "Allow"

Usage

Basic

  1. Start recording:
    • Default: press and hold the floating ball; release to stop
    • Tap mode: tap to start; tap again to stop (enable in settings)
  2. Stop recording:
    • Hold mode: release finger
    • Tap mode: tap again
  3. Cancel:
    • Swipe up/left while holding (hold mode)
    • Long-press to cancel (tap mode)

Advanced

  • Radial menu: long-press and drag toward the screen center to open the menu; release on a menu item to trigger it. Items include:
    • switch AI post-processing prompt
    • switch ASR provider
    • switch IME
    • toggle VAD
    • view recognition history
    • upload/pull clipboard (requires clipboard sync enabled)
  • Drag: long-press for ~2s until you feel two vibration feedbacks; then drag and release to snap to edge
  • Reset: tap "Reset floating position" in settings

Common issues

Floating ball not visible

Possible causes:

  1. Overlay permission not granted
  2. Master switch off (floatingAsrEnabled)
  3. "Only show when keyboard is visible" enabled (you need to show keyboard first)
  4. System battery optimization/background restrictions kill the app or its accessibility service

Cannot insert text

Possible causes:

  1. Accessibility permission not granted
  2. The target app blocks accessibility text input → try enabling compatibility mode

Released under the Apache 2.0 License.