Skip to main content

What is Fully Kiosk Browser?

Fully Kiosk Browser is a powerful Android app that transforms tablets and smartphones into dedicated kiosk systems, digital signage displays, or information panels. It’s designed for:
  • Retail displays - Product catalogs, price displays, self-service kiosks
  • Digital signage - Information boards, wayfinding systems, dashboards
  • IoT control panels - Smart home interfaces, industrial controls
  • Public information - Event schedules, building directories, reception systems
Fully Kiosk Browser is available for Android devices and provides extensive device control through its JavaScript API.

Key Capabilities

Fully Kiosk Browser provides web applications with access to device features that are normally unavailable to web browsers:

Device Information

Access detailed device and network information:
fully.getDeviceName();      // "Samsung Galaxy Tab A"
fully.getAndroidVersion();  // "11"
fully.getBatteryLevel();    // 85
fully.getIp4Address();      // "192.168.1.100"
fully.getWifiSsid();        // "Office-WiFi"

Hardware Control

Direct control over device hardware:
fully.turnScreenOn();
fully.turnScreenOff();
fully.setScreenBrightness(128); // 0-255
fully.getScreenOrientation();   // 0, 90, 180, 270

Sensors & Peripherals

Access to device sensors and peripheral hardware:
// NFC
fully.nfcScanStart();
fully.bind('onNdefDiscovered', 'handleNFC("$serial", "$message");');

// QR Code Scanner
fully.scanQrCode("Scan code", "callback-url");

// Bluetooth
fully.enableBluetooth();
fully.btOpenByMac("00:11:22:33:44:55");

// Motion Detection
fully.startMotionDetection();
fully.bind('onMotion', 'handleMotion();');

Event System

Real-time events for device state changes:
// Power events
fully.bind('screenOn', 'handleScreenOn();');
fully.bind('screenOff', 'handleScreenOff();');
fully.bind('pluggedAC', 'handleCharging();');
fully.bind('onBatteryLevelChanged', 'updateBattery();');

// Network events
fully.bind('networkDisconnect', 'handleOffline();');
fully.bind('networkReconnect', 'handleOnline();');

// User input events
fully.bind('showKeyboard', 'keyboardShown();');
fully.bind('hideKeyboard', 'keyboardHidden();');
Fully Kiosk’s event binding uses string-based callbacks. The node-fullykiosk library handles this complexity for you with proper React state management.

How the JavaScript API Works

Global API Object

Fully Kiosk Browser injects a global fully object into the JavaScript context of web pages:
// Check if running in Fully Kiosk
if (window.fully) {
    console.log('Running in Fully Kiosk Browser');
    console.log('Version:', fully.getFullyVersion());
}

Synchronous Methods

Most API methods are synchronous and return values immediately:
const battery = fully.getBatteryLevel();  // Returns immediately
const ssid = fully.getWifiSsid();         // Returns immediately
const isPlugged = fully.isPlugged();      // Returns immediately

Event-Based Methods

Some operations use event callbacks for asynchronous results:
// QR Code scanning
fully.bind('onQrScanSuccess', 'handleScan("$code");');
fully.bind('onQrScanCancelled', 'handleCancel();');
fully.scanQrCode("Scan your badge", "result-url");

// File downloads
fully.bind('onDownloadSuccess', 'downloadDone("$url", "$fileLength");');
fully.bind('onDownloadFailure', 'downloadFailed("$url", "$code");');
fully.downloadFile("https://example.com/file.zip", "/sdcard/");
The node-fullykiosk library converts these string-based callbacks into proper TypeScript function callbacks for a better developer experience.

Requirements for Using This Library

Android Device Requirements

  • Android Version: 5.0 (Lollipop) or higher recommended
  • Fully Kiosk Browser: Latest version recommended
  • Device Type: Tablet or smartphone
  • Permissions: Grant required permissions in Android settings

Fully Kiosk Browser Setup

  1. Install Fully Kiosk Browser from Google Play Store or APK
  2. Enable JavaScript in Fully settings (enabled by default)
  3. Configure Plus features (optional, for advanced API access)
  4. Grant permissions for hardware access (camera, location, etc.)
Some features require Fully Kiosk Plus (paid version), such as:
  • Camera and video recording
  • Advanced motion detection
  • Device administration features
  • Kiosk mode lockdown

React Application Requirements

To use node-fullykiosk in your React application:
npm install fullykiosk
# or
pnpm add fullykiosk
# or
yarn add fullykiosk
Peer Dependencies:
  • React 16.8+ (hooks support)
  • TypeScript 4.0+ (optional, for type checking)

Development Environment

You can develop without Fully Kiosk Browser installed:
import { useBatteryLevel } from 'fullykiosk';

function BatteryWidget() {
    const { batteryLevel } = useBatteryLevel();
    
    // batteryLevel will be undefined in regular browser
    // All functionality works when deployed to Fully Kiosk
    return (
        <div>
            Battery: {batteryLevel ?? 'Not available'}%
        </div>
    );
}
Develop in your regular browser, test in Fully Kiosk Browser on device. All hooks gracefully handle the absence of the Fully API.

Common Use Cases

Digital Signage Dashboard

import { 
    useBatteryLevel, 
    useCharging,
    useScreenBrightness,
    useOrientation 
} from 'fullykiosk';

function SignageDashboard() {
    const { batteryLevel } = useBatteryLevel();
    const { charging } = useCharging();
    const { brightness, setBrightness } = useScreenBrightness();
    const orientation = useOrientation();
    
    // Auto-adjust brightness based on battery
    useEffect(() => {
        if (batteryLevel < 20 && !charging) {
            setBrightness(100); // Dim to save battery
        }
    }, [batteryLevel, charging]);
    
    return (
        <div style={{ transform: `rotate(${orientation}deg)` }}>
            <YourContentHere />
        </div>
    );
}

Kiosk Check-in System

import { useQRScanner, useKeyboard } from 'fullykiosk';

function CheckInKiosk() {
    const { scannedQR, startScanning } = useQRScanner({
        onScan: (code) => {
            // Process check-in
            console.log('Checked in:', code);
        }
    });
    
    const { showKeyboard, hideKeyboard } = useKeyboard();
    
    return (
        <div>
            <button onClick={() => startScanning('Scan badge', 'd')}>
                Scan Badge
            </button>
            <input 
                onFocus={showKeyboard}
                onBlur={hideKeyboard}
                placeholder="Or enter code"
            />
        </div>
    );
}

Smart Home Control Panel

import { 
    useWifi, 
    useBluetooth, 
    useScreenSleep,
    useQRScanner 
} from 'fullykiosk';

function SmartHomePanel() {
    const { wifiEnabled, openWifiSettings } = useWifi();
    const { enabled: btEnabled, enable: enableBt } = useBluetooth();
    const { startDaydream } = useScreenSleep();
    
    const { startScanning } = useQRScanner({
        onScan: (code) => {
            console.log('QR code scanned:', code);
        }
    });
    
    useEffect(() => {
        // Enable Bluetooth for device control
        if (!btEnabled) enableBt();
    }, []);
    
    return (
        <div>
            <SmartDeviceControls />
            <button onClick={startDaydream}>Sleep Display</button>
            <button onClick={() => startScanning('Scan device', '')}>
                Scan Device QR
            </button>
        </div>
    );
}

Retail Price Display

import { 
    useDeviceName,
    useScreenRotationLock,
    useDisplaySize 
} from 'fullykiosk';

function PriceDisplay() {
    const deviceName = useDeviceName();
    const rotationLocked = useScreenRotationLock();
    const { width, height } = useDisplaySize();
    
    // Log device info for inventory management
    useEffect(() => {
        console.log('Display:', deviceName, `${width}x${height}`);
    }, []);
    
    return (
        <div>
            <ProductPricing />
            {!rotationLocked && (
                <Warning>Rotation not locked</Warning>
            )}
        </div>
    );
}

Official Documentation

For comprehensive information about Fully Kiosk Browser:
Always refer to the official Fully Kiosk documentation for:
  • Version-specific feature availability
  • Android version compatibility
  • Permission requirements
  • Plus vs Free feature differences

Version Compatibility

Different Fully Kiosk features became available in different versions:
FeatureMinimum Version
Basic device info1.0+
WiFi signal level1.30+
Screen orientation1.40.2+
WiFi BSSID1.44+
Face detection count1.48+
Check fully.getFullyVersion() at runtime to conditionally enable features based on the installed Fully Kiosk version.

Next Steps

Explore Hooks

Browse all available React hooks in the API Reference

Quick Start

Set up your first project

Build docs developers (and LLMs) love