KC50 Kiosk Usage Guide

EMDK For Android 13.0

Overview

Zebra's KC50 is a rugged Android-based fixed-mount computer designed for kiosk applications including point-of-sale, information display and/or look-up, and various payment and conversational self-service scenarios. Zebra's kiosk computers are available in 22-inch and 15-inch sizes, some of which can be powered over Ethernet.

Also available is the TD50, a 15-inch touch display designed to work with the KC50 to provide secondary video output and touch input. All KC50 and TD50 models support standard VESA mounting, with wall, floor and countertop mounting solutions available.

image The 15-inch KC50 (facing away) with optional TC50 Touch Display and back-to-back counter stand. Click image to enlarge; ESC to exit.

Premium KC50 models support Power over Ethernet (PoE) and all can be expanded to include scanners, LED indicators, payment terminals and other accessories to suit interactive use cases in airports, hospitality, retail, healthcare and many others. The unit is IP65-rated to protect it from dust, debris and liquids in kitchens and other hostile environments.

Available Models

  • 15-inch KC50 Kiosk Computer:
    • Android computer with 15-inch touch display
    • Bluetooth, Ethernet, Wi-Fi
    • Powered by AC/DC adapter
    • VESA mounting
  • 22-inch KC50 Kiosk Computer:
    • Android computer with 22-inch touch display
    • Bluetooth, Ethernet, Wi-Fi
    • Powered by AC/DC adapter
    • VESA mounting
  • TD50 Touch Display:
    • Touch-sensitive 15-inch monitor
    • Provides secondary video output and touch input for KC50
    • Powered by dedicated AC/DC adapter or nearby KC50 via USBC-to-USBC cable
    • USB-C cable also carries video and touch screen signals
    • VESA mounting

† Also available in Premium model, which adds a front-facing camera, NFC input, haptic feedback and Power Over Ethernet capabilities.

Accessories

  • AC/DC power supply (country-specific line cord sold separately)
  • USBC-to-USBC power and data cable (KC50-specific)
  • Z-Flex SE4720 scanner
  • Z-Flex LED Light Bar (see LED Usage Guide)
  • Stands* (third-party):
    • Single or dual display mount with countertop base
    • Dual display mount with pedestal base
      * Other styles available; see accessory guide (link below) or contact your Zebra sales representative.

For a list of product accessories and SKUs, see the Zebra Kiosk System Accessory Guide (.pdf).

image The 22-inch KC50 taking an order as a self-service kiosk. Click image to enlarge; ESC to exit.


image Zebra KC50 kiosk computers can be powered by AC or PoE, and are suitable for infinite self-service use cases.
Click image to enlarge; ESC to exit.


Default PoE Ratings

Shown below are "out-of-the-box" settings for the 22- and 15-inch KC50 models. A LifeGuard update scheduled for Q4-2024 is intended to allow customized power management configurations.

image The default PoE settings of KC50-series devices.
Click image to enlarge; ESC to exit.


KC50 Series Notes

  • The detection and discovery of the PoE power class (4, 6 or 8) occurs early during KC50 boot-up process.
  • A flashing red LED indicates the device has not detected a suitable power class (min. = class 4).
  • A list of compatible Power Sourcing Equipment (PSE) can be found in the online Product Reference Guide.
  • Zebra recommends fully testing PoE with minimum Cat5e RJ45 cabling before full deployment to ensure PoE equipment compatibility.
  • Qualified cable installers should be used at each site to ensure compliance with TIA 586.2-D specifications.
  • A Q4-2024 LifeGuard release is intended to allow customized power management configurations via .JSON file download.
  • By default, the TD50 mirrors content displayed on the KS50 to which it is connected.
  • Use of the TD50 as a secondary display requires activation of Desktop Mode on the KS50 in some scenarios.
  • Desktop Mode MUST be enabled if soft keyboard input is required on the TD50.
  • The KC50 (and a connected TD50, if present) can be configured to:

image With Z-Flex ports on all four sides, KC50 can be outfitted with accessories to fit an unlimited number of use cases. Click image to enlarge; ESC to exit.


LED Control

The KC50 supports an optional multi-color LED Light Bar that can be controlled programmatically through the Zebra LED service and its Android Interface Definition Language (AIDL) interface. This permits an app to control the light bar without the need for Android Notification APIs and the accompanying on-screen notifications. The sample code in this section can be modified for use in apps intended to run on the KC50. This gives app developers a means to visually indicate completed activities, required actions or any other purpose. Learn more about AIDL .

image Click image to enlarge; ESC to exit.

Requirements

  • KC50 with Z-Flex Light Bar attached
  • ILedBarLightService.aidl file (download now)

Supported Functions

  • Turn LED Light Bar ON with defined color
  • Repeat two-color alternating sequence indefinitely
  • Stop alternating sequence and display a single color
  • Turn Light Bar OFF

Binding to the LED service

In the example below, binding to the LED service (com.zebra.ledbarlightservice) is done using the established Android intent mechanism.

Example code


Intent i=new Intent(“LedBarLightService”);
i.setPackage(“com.zebra.ledbarlightservice”);
bindService(I, mConnection, BIND_AUTO_CREATE);

In the larger code snippet below, a ServiceConnection class method called onServiceConnected() captures the service binding.


LED APIs

setLight(int ID, int COLOR)

ON/OFF toggle and color selector for LED illumination.

Parameters

  • ID - integer (value of "101" identifies the single LED Light Bar supported by KC50)
  • COLOR - integer representing an RGB color in the range of 0x000000–0xFFFFFF and format 0xRRGGBB (see color table )

Behavior

  • If LED is off, calling API turns ON the LED with the specified color
  • If LED is on:
    • Calling API with a different color changes the color
    • Calling API with “transparent” color (0x000000) turns OFF the LED

Key

  • RR = Red Value 00 – FF
  • GG = Green Value 00 – FF
  • BB = Blue Value 00 – FF
    See color table

setLedOff ()

Turns OFF the LED Light Bar.

Parameters

  • (none)

setLightSequence(int ID, int COLOR1, int PERIOD1, int COLOR2, int PERIOD2)

Sets a repeating light sequence of two alternating colors, each with a defined period.

  • ID - integer (value of "101" identifies the single LED Light Bar supported by KC50)
  • COLOR1 - integer representing an RGB color in the range of 0x000000–0xFFFFFF and format 0xRRGGBB (see color table )
  • PERIOD1 - integer representing length of time (in milliseconds) to illuminate LED with COLOR1
  • COLOR2 - integer representing an RGB color in the range of 0x000000–0xFFFFFF and format 0xRRGGBB (see color table )
  • PERIOD2 - integer representing length of time (in milliseconds) to illuminate LED with COLOR2

setLedSequenceOff(int ID, int COLOR);

Stops sequencing of light set by setLightSequence().

Parameters

  • ID - integer (value of "101" identifies the single LED Light Bar supported by KC50)
  • COLOR - integer representing an RGB color in the range of 0x000000–0xFFFFFF and format 0xRRGGBB (see color table )

Behavior

  • Calling API with a color stops alternating sequence and continuously displays the specified color
  • Calling API with “transparent” color (0x000000) turns OFF the LED

Key

  • RR = Red Value 00 – FF
  • GG = Green Value 00 – FF
  • BB = Blue Value 00 – FF
    See color table

To control the KC50 Light Bar programmatically:

1. Download the KC50 AIDL file and add it to the Android Studio project:
image
2. Add the AIDL boilerplate code to connect with (and disconnect from) the Zebra LED service and modify as needed for the app under development.
Note the ComponentName in the sample code below:

    
package com.mycompany.mysampleapp;

// Imports go here

public class MySampleActivity extends Activity {
    private static final String TAG = "MySampleActivity"
    private ILed mLedService = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //...

        // Connect to the AIDL interface for LED control:
        Intent intent = new Intent().setComponent(new ComponentName("com.zebra.led", "com.zebra.led.LedService"));
        bindService(intent, ledConnection, Context.BIND_AUTO_CREATE);
    }

    @Override
    protected void onDestroy() {
        unbindService(ledConnection);
        super.onDestroy();
    }

    /**
      * Monitor the connection to the LED service:
      */
    private final ServiceConnection ledConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            mLedService = ILed.Stub.asInterface(iBinder);
        }
        @Override
        public void onServiceDisconnected(ComponentName componentName) {
            mLedService = null;
        }
    };

3. Call setLight() API parameters ledId and color to illuminate LED wth the desired color:

// ILedBarLightService.aidl
package com.zebra.ledbarlightservice;
interface ILedBarLightService {
      /**
       * Sets the color of the LED with the specified ID:
       *
       * @param ledId is the ID of the LED to control
       * @param color is the color value to set for the LED (format = 0xRRGGBB)
       */
      void setLight(int ledId, int color);
       /**
        * Turns off the LED:
        */
      void setLedOff();
       /**
        * sets the sequence of led to flash with the specific color till the respective times given:
        */
      void setLightSequence(int ledId, int color1, int period1, int color2, int period2);
      /**
       * sets the led sequence to off and display the color specified. If color is not specified, the LED will turn off.
       */
      void setLedSequenceOff(int ledId, int color);
 }

AIDL File

The Zebra KS50 AIDL file is shown below. Download the KC50 AIDL file.

// Copyright (c) 2024 Zebra Technologies Corporation and/or its affiliates. All rights reserved.

package com.zebra.led;
/**
 * Interface for apps to control device LEDs. Controls LEDs beyond what is 
 * available in Android's Notification API: 
 *   - to light an LED without showing an on-screen notification
 *   - to specify which LED to control if multiple LEDs are present
 */
// ILedBarLightService.aidl
package com.zebra.ledbarlightservice;
interface ILedBarLightService {
      /**
       * Sets the identified LED to the specified color.
       *
       * @param ledId is identity of the LED to control.
       * @param color is color value to set for the identified LED.
       */
      void setLight(int ledId, int color);
       /**
        * Turns OFF the LED.
        */
      void setLedOff();
       /**
        * Sets the identified LED to alternate between two specified colors for the given duration.
        */
      void setLightSequence(int ledId, int color1, int period1, int color2, int period2);
      /**
       * Sets the LED sequence to OFF and displays the specified color. 
       * If a color is not specified, turns OFF the LED.
       */
      void setLedSequenceOff(int ledId, int color);
 }

Also See