Developing for RealWear Navigator 520 without an SDK: How WearHF works

Developing for RealWear Navigator 520 without an SDK: How WearHF works

Executive summary

RealWear Navigator 520 development doesn't require a separate speech SDK for basic voice interaction. WearHF is part of the device software. It can inspect an Android screen, identify supported interactive views and expose voice commands for them. That means a standard Android button labeled CONTINUE can be activated by saying “CONTINUE” without importing a RealWear library.

Start with a standard Android app and test it on the target Navigator firmware. WearHF can recognize supported screen controls without any app-side speech code. Add a view directive in android:contentDescription when a control needs alternate phrases or special behavior. Use OVERRIDE_COMMANDS only when the app must take control of the recognizer and handle commands itself. Each of these paths has a different effect, as described below.

Important: “No SDK” doesn't mean “no code.” You still build the Android interface and business logic. The app doesn't need a separate RealWear speech SDK for basic voice control because WearHF provides that capability at the device level.

Core concept: You don't open WearHF, install WearHF or import a WearHF SDK for basic voice control. WearHF runs in the background as part of the RealWear operating system.

What is the RealWear Navigator 520?

The RealWear Navigator 520 is a rugged monocular assisted-reality computer designed for frontline work such as maintenance, inspection and field service. RealWear’s Navigator 500/520 firmware 2.x is based on Android 13, and the Ari OS 2.0 maintenance release of September 17, 2026 (firmware 3.0, build 3.0.3-15, offered to devices on build 2.2.3-33) moves the device to Android 16. Firmware roadmaps can change, so treat the device OS as a deployment constraint: record the tested firmware build, Android API level, app minSdk/targetSdk and device model in your release matrix. Don't infer minSdk or targetSdk solely from the headset’s Android version.

For developers, this means you build and package a normal Android app. WearHF runs on the device and can expose supported controls to voice. It doesn't implement your workflow, authorize a business action or replace app-side validation.

What is WearHF?

WearHF is RealWear’s built-in speech and hands-free interaction service. It interprets supported Android views and screen directives, then activates a view or sends a speech event according to the selected integration. Basic view interaction doesn't need a separate RealWear speech library. Embedded directives are parsed from android:contentDescription, and programmatic commands use documented Android broadcast intents. Don't confuse a view click with a recognizer override: an override takes control of the recognizer and can suppress embedded/scripted commands until it's restored.

What you need before building your first app

· A Navigator 520 running the firmware build you intend to support. Record its exact build and Android version.

· A Windows, macOS or Linux computer.

· Android Studio with the Android SDK and Platform Tools (ADB). Use the Android API level your app requires and validate it against RealWear’s supported firmware.

· A USB-C data cable.

· No RealWear SDK for the first app.

· A business workflow to test, such as advancing an inspection step or reporting an equipment issue.

How to build a voice-controlled Android app without a RealWear SDK

Step 1: Create a normal Android project

For this walkthrough, start with an Android Views project. In Android Studio, choose a Views-based Empty Activity (not a Compose-only template), then select Java or Kotlin. The examples below use Java. Compose can also work with WearHF on supported software, but you should test its semantics and accessibility tree on the target build.

1. Open Android Studio and select New Project.

2. Choose a Views-based Empty Activity. If the wizard offers language and minimum SDK fields, select Java and set minSdk to the lowest Android API your app actually supports. Don't copy a value from this example without checking your dependencies and device fleet.

3. Enter the app details. Set the app name, package name and save location, then create the project.

4. Wait for the project to open. Android Studio completes the Gradle sync and opens the project.

Don't add anything yet: You aren't looking for a RealWear project template. The point of the first build is to prove that a standard Android app can run on the Navigator 520.

Step 2: Add one Android button and connect it to Java

Start by creating one button. You'll add its Android layout, connect its click action in Java and then test it on the device.

1. In Android Studio’s Project panel, open app > res > layout > activity_main.xml. The full file path is app/src/main/res/layout/activity_main.xml.

2. Select Code in the layout editor. Replace the file contents with the complete XML shown below.

XML: One button with a WearHF command

Paste the complete layout into activity_main.xml, then save the file:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="24dp">

<Button android:id="@+id/continueButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CONTINUE" android:contentDescription="hf_commands:CONTINUE" />

</LinearLayout>

Quick explanation: `LinearLayout` stacks its contents vertically. `android:text` is the visible button label. `android:contentDescription` contains the WearHF directive. Android accessibility services also read this field, so test that the control remains understandable to your users.

Next, open app > java > your package > MainActivity.java in the Project panel. The full path is app/src/main/java/<your.package.name>/MainActivity.java. Keep the generated Activity class and `onCreate()` method.

If it's missing, add `import android.widget.Button;` to the imports at the top of MainActivity.java. Inside the existing `onCreate()` method, paste these lines immediately after `setContentView(R.layout.activity_main);`:

Button continueButton = findViewById(R.id.continueButton); continueButton.setOnClickListener(v -> openNextStep());

Add this method below `onCreate()` but before the final closing brace of the MainActivity class:

private void openNextStep() { // Navigate to the next inspection or work-order step. }

How to adjust it: Change `android:text` to the label that fits your workflow. Change `hf_commands:CONTINUE` to the phrase workers should say, for example `hf_commands:Continue Work, Next Step`. The XML ID `continueButton` must match `R.id.continueButton` in Java, so if you rename it, update both. Replace the comment in `openNextStep()` with the navigation or business action your app needs. Basic voice control doesn't require a separate WearHF SDK or the `RECORD_AUDIO` permission.

Step 3: Prepare the Navigator 520 for Android development

The development computer needs ADB authorization to install and debug the app. Use a USB-C cable that supports data. Charge-only cables won't enumerate as an ADB device.

1. Open Advanced Settings. From the Navigator Home screen, say MY SETTINGS to reach the Android settings list.

2. Open About Device. Say ABOUT DEVICE, then PAGE DOWN until Build Number is visible.

3. Enable Developer Options. Say BUILD NUMBER repeatedly, about seven times, until the device confirms that developer mode is enabled.

4. Open Developer Options. Say NAVIGATE BACK, then SYSTEM, then DEVELOPER OPTIONS.

5. Enable USB debugging. In Developer Options, turn on USB debugging.

6. Connect the USB-C cable and approve the RSA debugging prompt on the device. Confirm the connection with `adb devices`. The device should appear as `device`, not `unauthorized`.

If Android Studio doesn't list the headset, run `adb devices`. If it shows `unauthorized`, unlock the headset and approve the RSA prompt. To reinstall from the project root, use `adb install -r app/build/outputs/apk/debug/app-debug.apk`, replacing the path if your build variant or APK name is different. Use Android Studio Logcat or `adb logcat` to inspect crashes and application logs.

USB debugging is a development setting. Disable it after lab testing or manage it under your organization’s device security policy. Don't leave development access enabled on production fleet devices.

Step 4: Run the app on the Navigator 520

1. Select the Navigator in Android Studio. Use the device selector in the top toolbar and choose the connected RealWear device.

2. Click Run. Select the green Run triangle or use Run > Run 'app'.

3. Wait for installation. Android Studio builds the APK and installs it on the Navigator through ADB.

4. Launch the installed app from the device’s application launcher, or run `adb shell monkey -p your.application.id 1` from a development terminal. Replace `your.application.id` with the applicationId in the app module’s Gradle build file.

5. Confirm that the CONTINUE button is visible and enabled.

Step 5: Test WearHF without adding any SDK

WearHF is already running on the Navigator 520. With only the CONTINUE button on screen, test this control first:

1. Say CONTINUE and verify that the app’s normal click listener runs exactly once.

2. Say SHOW HELP to inspect the command WearHF exposes for this screen. Confirm that it shows CONTINUE.

3. Check the WearHF indicators and test numeric selection if it's offered. Don't rely on an indicator as the only way to identify a safety-critical action.

Optional: Add a second action after the CONTINUE test

Once the first button works, you can add REPORT ISSUE. In activity_main.xml, place this Button inside the LinearLayout, below CONTINUE and before </LinearLayout>:

<Button android:id="@+id/reportIssueButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="REPORT ISSUE" />

In MainActivity.java, add this listener inside onCreate(), after the CONTINUE listener:

Button reportIssueButton = findViewById(R.id.reportIssueButton); reportIssueButton.setOnClickListener(v -> openIssueReport());

Add openIssueReport() below onCreate(), inside MainActivity. Replace the comment with your app's issue-report workflow:

private void openIssueReport() { // Open the equipment issue form. }

Rebuild and reinstall the app, then say REPORT ISSUE. Confirm that the issue-report workflow opens.

Conclusion

Developing for the RealWear Navigator 520 without a dedicated SDK shows that clean, standard Android code is already voice-capable, relying on the built-in WearHF service to turn visible views and contentDescription directives into intuitive hands-free controls. For technical teams, this avoids third-party library bloat and complex speech engines while keeping core business logic within standard Android architecture. From a business perspective, this approach accelerates time to market and minimizes deployment costs: enterprises can directly leverage existing Android apps and in-house developer skill sets, sidestep proprietary SDK lock-in and smoothly modernize frontline workflows without disrupting their software stack.

For a first enterprise prototype, build one inspection or maintenance screen, verify view labels and accessible descriptions, then test voice activation on the exact Navigator 520 firmware used by the pilot fleet. Add embedded directives for specific UI needs, and add recognizer overrides only when the workflow requires full command ownership.

João Noronha

Written by

João Noronha

XR and Immersive Content Specialist at VR Expert

João Noronha is an XR and Immersive Content Specialist at VR Expert, with a strong interest in emerging technologies and their real world applications. He focuses on turning complex developments in VR, AR, AI glasses, and immersive technology into clear, practical content for businesses and professionals exploring the XR industry.

Frequently asked questions

This article

Yes. The app is still an Android application, so developers write the interface and business logic in Java, Kotlin, XML Views or another supported Android UI toolkit. Basic WearHF view interaction doesn't require a separate RealWear speech SDK.

Not for basic view commands. WearHF is built into the RealWear software and can derive commands from supported Android views. Use the documented directives or intents for custom behavior.

You don't open it as a separate app. WearHF runs in the background as part of the Navigator 520 software.

For supported clickable views, WearHF can derive a command from the view text or content description, depending on the directive and view hierarchy. Test the command exposed on the actual screen, because a visible label isn't a guarantee for every custom view.

Say SHOW HELP on the Navigator 520. RealWear displays the commands associated with that screen.

In a Views-based app, open the layout XML (for example, app/src/main/res/layout/activity_main.xml) and set `android:contentDescription` on the view. Use `hf_commands:Phrase One, Phrase Two` for multiple phrases and `-` between multiple directives.

`hf_commands` is a view-level WearHF directive. Put it in the view’s contentDescription, followed by comma-separated phrases. Each recognized phrase clicks that view.

No separate WearHF library is needed for embedded directives. They're strings in Android contentDescription that the device service interprets. Because accessibility services also use contentDescription, keep a useful accessible label and test both behaviors.

Use OVERRIDE_COMMANDS when the recognizer’s command list must be replaced at runtime. For screen-level commands that supplement views, consider `hf_add_commands`. Keep in mind that override mode temporarily suppresses embedded/scripted commands and must be restored or re-registered at the documented lifecycle points.

RealWear’s May 2026 Collaborate release notes state that WearHF supports Jetpack Compose natively. That's evidence of the platform’s Compose support, but it doesn't replace testing semantics, custom composables, accessibility labels and command overlays in your own app. This tutorial uses XML Views so the view-to-command mapping is explicit. Reference: The Collaborate 2.5.1 release note records that WearHF supports Compose natively (published May 7, 2026). Apply that claim only to device software that includes the corresponding support, and verify behavior on your target build.

The published Navigator 500/520 firmware release 2.2 is based on Android 13. RealWear’s firmware policy states a plan to move supported devices to an Android 16-based OS during 2026, but a plan isn't a release guarantee. Check the current GA release notes and test the exact fleet build before choosing compileSdk, targetSdk, minSdk, permissions or release behavior.