Sådan bygger du din første app til Rokid AI Glasses med kamera, stemme og display

Sådan bygger du din første app til Rokid AI Glasses med kamera, stemme og display

Resumé

Udvikling af forretningsapps til Rokid AI Glasses begynder med Rokids dokumentation til Sprite Enterprise SDK og den tilhørende Android-demo. Enterprise-FAQ'en henviser enterprise-firmware til Rokid AI Enterprise eller enterprise-demoen. Android Studio er arbejdsmiljøet til kodningen; Glasses SDK giver adgang til enhedens funktioner, og Phone SDK understøtter den parrede Android-app.

Kompatibilitet kommer først. Disse offentlige instruktioner er rettet mod Rokid Glass3 Enterprise. En salgsbetegnelse som »Rokid Enterprise RV101« er ikke i sig selv bevis for SDK-kompatibilitet. Få skriftlig bekræftelse for netop din hardware, firmware, region og dine kommercielle SDK-rettigheder, før du følger integrationstrinnene. Hvis Rokid leverer et andet enterprise-SDK til din enhed, så brug den pakke og de tilhørende eksempler.

Vejledningen udvider den officielle enterprise-demo, så den kan tage ét foto, vise en status og teste dikterede noter. Der er tale om en udviklingsprototype. Upload af en forretningspost og administration af en enhedsflåde kræver virksomhedens egen backend og en separat bekræftet distributionsmetode til virksomheder.

Dokumentation til Enterprise SDK: Åbn officiel kilde

Hvorfor bygge en specialudviklet app til Rokid AI Glasses

En specialudviklet app kan koble feltinspektioner, vedligeholdelse eller lagerkontroller sammen med de oplysninger, virksomheden faktisk har brug for. En kort besked på displayet fortæller medarbejderen, hvad der skal gøres, kameraet dokumenterer, og taleinput kan mindske behovet for at skrive ved egnede opgaver.

Det nyttige resultat er en pålidelig forretningspost med det korrekte aktiv- eller arbejdsordre-ID og en tydelig status for, at den er gemt. Byg først det mindst mulige workflow til optagelse og gennemsyn, og forbind det derefter til driftssystemet, når hardwarens adfærd og datahåndteringen er testet.

Vælg enterprise-komponenterne

Android Studio, JDK og Gradle:

  • Rolle: Redigering, kompilering og fejlfinding af Android-projekter.
  • Forretningskrav: Brug en administreret udviklerarbejdsstation og projektets godkendte værktøjskæde.

Sprite Enterprise Glasses SDK:

  • Rolle: Kamera, tale, displayrelateret applikationslogik og enhedstjenester.
  • Forretningskrav: Kræver understøttet enterprise-hardware og -firmware; bekræft de kommercielle vilkår.

Sprite Enterprise Phone SDK:

  • Rolle: Parring, beskeder og udveksling af medier med en Android-telefon.
  • Forretningskrav: Bruges, når din arkitektur omfatter en virksomhedsadministreret telefon.

Rokid AI Enterprise eller enterprise-demo:

  • Rolle: Enterprise-forbindelse og udviklingstest.
  • Forretningskrav: Skaf det relevante build og de nødvendige konti via enterprise-kanalen.

Virksomhedens backend:

  • Rolle: Godkendelse og lagring af forretningsposter.
  • Forretningskrav: Brug godkendte endpoints, adgangskontroller og opbevaringsregler.

Det skal du bruge, før du går i gang

Klargør de understøttede enterprise-briller, et Glass3-datadebugkabel, en Android-testtelefon, Android Studio, JDK 17, Git og SDK-demoen. Git henter kildekoden, Gradle bygger den, og en APK er Androids installationsfil. Brug de versioner, der står i den godkendte demokonfiguration. Rokids Quick Start og FAQ angiver forskellige minimumsversioner af Android, så bekræft kravet ud fra den pakke, du har fået leveret, i stedet for at vælge den laveste værdi.

Trin 1: Bekræft enterprise-enheden og adgangen

• Notér målenheden. Åbn Indstillinger på brillerne, og notér model, systemversion og serienummer. Bed Rokid om at bekræfte, at dette build understøtter Sprite Enterprise SDK samt de kamera- og taletjenester, der kræves her.

• Skaf enterprise-pakken. Anmod om Rokid AI Enterprise eller enterprise-demoen, den tilsvarende SDK-udgivelse og forretningslegitimationsoplysninger fra din leverandør eller kontaktperson hos Rokid. Bekræft rettighederne til kommerciel udvikling og udrulning; en offentlig download afgør ikke i sig selv licensspørgsmålet.

• Forbered forbindelsen. Oplad enhederne, og forbind brillerne til arbejdsstationen med datadebugkablet. Brug de enterprise-onboardinginstruktioner, der følger med dit build, til at klargøre den administrerede telefon og brillerne.

• Aftal dataflowet. Beslut, hvor fotos og dikterede noter må behandles og gemmes. Brug et testmiljø i virksomheden og ikke-følsomt testmateriale, mens demoen valideres.

System- og appkrav for enterprise: Åbn officiel kilde

Trin 2: Åbn og kør enterprise-demoen til Android

• Hent kildekoden. Kør kommandoen nedenfor i en terminal på udviklerarbejdsstationen. Gem checkouten i teamets normale udviklingsmappe, og notér dens commit med git rev-parse HEAD.

git clone https://github.com/RokidSuuport/glass3_sdk_demo.git

• Åbn projekterne. Vælg File > Open i Android Studio, og vælg glass3_sdk_demo/glassdemo. Åbn glass3sdkphonedemo separat til telefonen. Vent på Gradle-synkroniseringen, og vælg derefter JDK 17 under Settings > Build, Execution, Deployment > Build Tools > Gradle.

• Kontrollér afhængighederne. Åbn settings.gradle og app/build.gradle i hvert projekt i Project-panelet. Behold demoens fungerende konfiguration. I et separat Groovy-baseret projekt skal du flette disse repository- og afhængighedsposter ind i de eksisterende blokke; opret ikke dublerede blokke. Den offentliggjorte Quick Start angiver 2.2.0-E, men brug den version, der er godkendt til din firmware.

// settings.gradle, inde i dependencyResolutionManagement {

repositories { maven { url 'https://maven.rokid.com/repository/maven-public/' }

}

}

// Brille-app: app/build.gradle, inde i dependencies dependencies {

implementation('com.rokid.security:glass3.open.sdk:2.2.0-E') {

exclude group: 'org.slf4j'

}

}

// Kun telefon-app: app/build.gradle, inde i dependencies dependencies {

implementation('com.rokid.security:phone.sdk:2.2.0-E') {

exclude group: 'org.slf4j'

}

}

• Konfigurér og start. Åbn MainPhoneActivity i telefonprojektet, og find UserAuthInfo. Angiv den AK og SK, som virksomheden har fået udstedt, via godkendt lokal konfiguration uden for versionsstyringen. Før du kører brilledemoen, skal du åbne HomeActivity.initSDK() og erstatte eksempelkaldet setCameraLedEnable(false) med setCameraLedEnable(true). Genstart, som enhedens firmware kræver det. Kør først telefonappen, vælg derefter brilleenheden i Android Studio, og kør glassdemo. Opret forbindelse fra telefondemoen, og bekræft SDK-initialiseringen og en tekstbesked, før du begynder at redigere.

• Tilpas opsætningen. Repository-URL'en henter eksemplet, ikke et installationsprogram. De to afhængigheder hører til forskellige apps. Skift kun versioner samlet efter at have tjekket Rokids kompatibilitetsvejledning; behold demoens initialiseringshjælpere og de nødvendige imports.

Demoopsætning og kildestier: Åbn officiel kilde

SDK-repository og afhængigheder: Åbn officiel kilde

Trin 3: Gør den første optageknap tydelig

• Find skærmen. Åbn app/src/main/java/com/rokid/glass/SdkMediaActivity.kt i glassdemo-projektet. Dens layoutfil ligger i app/src/main/res/layout/activity_test_media.xml. Det er en eksisterende native Android-skærm med kamerakontroller, ikke en webside.

• Redigér én knap først. Find det eksisterende AppCompatButton-element med ID'et android:id="@+id/btPhoto480P" i XML-filen. Behold dets oprindelige ID og layoutbegrænsninger, så den eksisterende Kotlin-view binding (binding.btPhoto480P) fortsat virker uden at bryde referencer.

• Demoens oprindelige layout gør knappen 50dp bred og 36dp høj med en etiket på 10sp, hvilket vil afkorte den nye tekst. Ændr kun de attributter, der vises nedenfor, og lad resten af elementet være som det er (baggrund, tekstfarve, margener og de to app: layout_constraint-linjer); uden sine constraints mister knappen sin placering i ConstraintLayout:

XML

<androidx.appcompat.widget.AppCompatButton

android:id="@+id/btPhoto480P"

android:layout_width="120dp"

android:layout_height="wrap_content"

android:text="Capture"

android:contentDescription="Capture photo"

android:textSize="16sp" />

• Forklaring af etiketten.

• android:text="Capture": Angiver den synlige etiket, der vises direkte på skærmen.

• android:contentDescription="Capture photo": Giver en tilgængelighedsbeskrivelse til skærmlæsere og inspektion af UI-hierarkiet. Bemærk, at contentDescription på Rokid-enheder ikke automatisk opretter eller registrerer en stemmekommando; talestyring kræver eksplicit integration med Sprite Enterprise SDK's tale-/offlinekommandotjeneste.

• android:textSize="16sp": Sikrer læsbarhed på det monokulære optiske display.

• Design arbejdsskærmen. Hold brugerfladen minimal i forretningsversionen: en tydelig statusindikator, én primær optageknap og en defineret vej til at annullere eller gennemse. Følg Rokids enterprise-vejledning for displayet ved at bruge tekst med høj kontrast (f.eks. letlæselig grøn tekst oven på omgivelserne), og undgå at bruge farve alene til at signalere fejl eller optagelsesstatus. Kontrollér altid placering og afkortning af tekst på brillernes fysiske display i stedet for kun at stole på layoutvisningen i Android Studio.

Enterprise-vejledning til display og layout: Åbn officiel kilde

Trin 4: Test enterprise-taleinput

• Åbn taleeksemplet. Åbn app/src/main/java/com/rokid/glass/SendMessageActivity.kt i brilleprojektet. Find grenen R.id.btnOnlineAsr og funktionen speechCallback(token). ASR står for automatisk talegenkendelse: Det omdanner tale til tekst.

• Kør én talesession. Brug enterprise-demoens ASR-kontrol til at starte en session. Bevar dens sessionstoken og callback-håndtering. Eksemplet bruger cloud-ASR, som kun virker, når telefondemoen har initialiseret SDK'et med din AK og SK, så bekræft serviceberettigelse, understøttet sprog, netværksadgang og vilkår for behandling af forretningsdata, før du bruger medarbejdernes tale.

• Hold endelig tekst adskilt fra kommandoer. Håndtér den endelige tekst med applikationslogik som i eksemplet nedenfor inde i den eksisterende onAsrComplete-leveringsblok. Det er en indsættelse i det eksisterende callback, ikke en erstatning for hele SpeechCallback-implementeringen. Koden gemmer en note til gennemsyn; den udløser ikke kameraet eller en upload.

// Tilføj dette felt i SendMessageActivity: private var pendingBusinessNote: String? = null

// Inde i den eksisterende leveringsblok for det endelige resultat: pendingBusinessNote = content?.trim()?.takeIf { it.isNotEmpty() } // Vis pendingBusinessNote i din gennemsynsbrugerflade, før der gemmes.

• Tilføj kommandoer bevidst. Til håndfri optagelse skal du bruge enterprise-eksemplet med offlinekommandoer eller en valideret handler til endelige transskriptioner, der er koblet til optageskærmen. Begge skal kalde den samme optagefunktion som den synlige knap. Kontrollér sprog- og fonetikkonfigurationen med det leverede SDK. En dikteret note er fritekst og må ikke behandles som en kommando.

• Stop og gendan. Behold eksemplets stopSpeech og sessionsoprydning, når skærmen forlader forgrunden. Test stilhed, nægtet mikrofontilladelse, tabt netværksforbindelse og gentagne sessioner. Behold en reserveløsning via hardware eller en synlig kontrol.

Enterprise-eksempel på ASR og offlinekommandoer: Åbn officiel kilde

Trin 5: Tilføj kamerahandleren og feedback på resultatet

• Genbrug den eksisterende initialisering. Gå tilbage til SdkMediaActivity.kt. Behold demoens SDK-opsætning, imports og fotocallback. Erstat i initView() kun blokken binding.btPhoto480P.setOnClickListener med kaldet nedenfor, og tilføj derefter funktionen i samme Activity-klasse. Det bruger den eksisterende 480P-opløsningsenum og demoens delte Pictures-placering.

binding.btPhoto480P.setOnClickListener { captureBusinessPhoto() }

private fun captureBusinessPhoto() { val service = GlassSdk.getGlassMediaService() if (service == null) { binding.btPhoto480P.text = "Unavailable" return } val folder = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES ) if (!folder.exists() && !folder.mkdirs()) { binding.btPhoto480P.text = "Storage error" return } val output = File(folder, "inspection_${System.currentTimeMillis()}.png") binding.btPhoto480P.text = "Capturing" try { service.takePhoto(PhotoResolution.RESOLUTION_480P, output.absolutePath) } catch (e: Exception) { binding.btPhoto480P.text = "Try again" } }

• Vis succes fra callbacket. Find det eksisterende mPhotoFileCallback-objekt. Tilføj funktionen nedenfor i Activity'en, og kald derefter showBusinessPhoto(path) fra både onTakePhoto og onTakePhotoV2. Behold getCallbackId og den eksisterende callback-registrering. Opdatér kontrollen til »Try again« på UI-tråden i mICameraStateLister.onCameraError.

private var capturedBusinessPhoto: String? = null

private fun showBusinessPhoto(path: String) { runOnUiThread { if (!isFinishing && !isDestroyed) { capturedBusinessPhoto = path binding.btPhoto480P.text = "Captured" } } }

• Forstå og tilpas. takePhoto anmoder om en optagelse; dens callback leverer filstien. Captured betyder, at der findes en lokal fil, ikke at en forretningspost er gemt. På denne udviklingsskærm skal knappen gøres bredere af hensyn til statusteksten. På produktionsskærmen bør du bruge en separat statusvisning. Skift kun PhotoResolution til værdier, som dit SDK understøtter, og kontrollér billedudsnit og de faktiske dimensioner på outputtet.

• Håndtér tilladelser og livscyklus. Brug demoens tilladelsesflow før optagelse. Kamera og mikrofon kræver erklæringer i manifestet og eventuel godkendelse under kørsel. Behold removePhotoCallback og removeMediaStateLister i Activity'ens eksisterende oprydning i onDestroy. Tilføj en spærre for igangværende optagelser og en timeout, før stemmestyring kobles på, så gentagne hændelser ikke kan give dobbelte optagelser.

• Vælg sikker lagring. Demoen bruger delt lagerplads, som kan eksponere testfotos for anden software på enheden. Validér tjenesteadgang og et egnet lagringsdesign med Rokid, før der behandles rigtige poster. Fastlæg sletning efter gennemsyn, upload eller annullering. Gå ikke ud fra, at SDK'ets separate kameratjeneste kan skrive til appens private mappe.

Enterprise-medieeksempel: Åbn officiel kilde

Tilsvarende kamerakildekode og imports: Åbn officiel kilde

Android-tilladelser under kørsel: Åbn officiel kilde

Trin 6: Forbind prototypen med et forretningsworkflow

• Definér posten. Aftal aktiv-ID, arbejdsordre-ID, operatøridentitet, fotoformat, notefelt, endpoint og tilladt filstørrelse med ejeren af forretningssystemet. Brug en virksomhedsadministreret testkonto. En lokal filsti kan ikke sendes til backend, som om den var selve billedet.

• Implementér gennemsyn før upload. Opret en gennemsynsskærm med det optagne foto og den endelige note. Tilføj knapperne Bekræft og Annuller. Kun Bekræft må starte uploaden. Annuller skal rydde den ventende post og anvende den aftalte sletningspolitik.

• Specificér anmodningen. Implementér virksomhedens API i den telefon- eller brilleapp, der står for uploaden. Send fotoets bytes med de aftalte metadata og den aftalte godkendelse. Brug en netværksoperation i baggrunden, et unikt indsendelses-ID og et begrænset antal genforsøg. Opbevar langlivede legitimationsoplysninger på backend; afklar det understøttede godkendelsesflow for klienten med IT.

• Vis den korrekte tilstand. Brug Ready, Capturing, Captured, Review, Uploading, Saved og Retry. Skift først til Saved efter et vellykket serversvar med et post-ID. Vejledningens eksempelkode stopper ved lokal optagelse og indsamling af noter; uploaden kræver jeres faktiske API-kontrakt og implementering.

Trin 7: Verificér på enterprise-hardwaren

• Byg og kør. Brug kommandoen nedenfor fra glassdemo-mappen, eller brug Run-kontrollen i Android Studio med de understøttede briller valgt. På Windows skal du bruge gradlew.bat assembleDebug. Løs Gradle-fejl før test på enheden; en almindelig Android-emulator kan ikke validere Rokids enhedstjenester.

./gradlew assembleDebug

• Test optagelse og oprydning. Vælg optageknappen. Kontrollér resultatfilen, den læsbare status, fejlforløbet for kameraet og nægtet tilladelse. Forlad skærmen, åbn den igen, og kontrollér, at callbacks fjernes og tilknyttes igen uden dobbelte resultater. Bekræft, at kameraindikatoren forbliver aktiv under optagelsen.

• Test tale separat. Diktér en kort testnote, kontrollér den endelige tekst, og annullér. Gentag med repræsentativ støj fra arbejdspladsen og på hvert godkendt sprog. Hvis du tilføjer kommandoer, så test urelateret tale og gentagne ytringer mod spærren for dobbelte optagelser.

• Test det integrerede build. Når upload er implementeret, skal du teste afbrudte forbindelser, timeouts, tilbagekaldt adgang og gentagen bekræftelse. Kontrollér, at en mislykket anmodning ikke viser Saved, og at et nyt forsøg med samme indsendelse ikke opretter endnu en post.

Trin 8: Pak og udrul via forretningskanalen

• Forbered en release. Udskift demoens branding, og fjern urelaterede eksempelfunktioner og testlegitimationsoplysninger. Gennemgå vilkårene for genbrug af SDK og eksempler med Rokid. Brug pakkenavne, versionering og signeringsnøgler, som virksomheden kontrollerer.

• Byg en signeret APK. Åbn Build > Generate Signed Bundle / APK i Android Studio, vælg APK, vælg virksomhedens keystore, og byg release-varianten. Opbevar signeringsnøglen sikkert: Senere opdateringer skal bruge den korrekte signeringsidentitet.

• Bekræft privat installation. Brug den rute til installation og applikationsadministration, som Rokid bekræfter for din enterprise-firmware. Få oplyst den understøttede metode til levering af APK'er, kontoprovisionering og proceduren for opdatering/tilbagerulning. Gå ikke ud fra, at almindelig software til administration af Android-enheder understøtter denne brillemodel.

• Pilottest og test igen. Udrul til en lille administreret gruppe, mål optagekvalitet, genkendelsesnøjagtighed og svartid, og test igen efter ændringer i SDK eller firmware. Notér buildversioner, og hav en fungerende tilbagerulningspakke klar, før udrulningen udvides.

Signering af Android-apps: Åbn officiel kilde

Almindelige fejl, du bør undgå

• At betragte et produktnavn som bevis på kompatibilitet. Kontrollér den faktiske enterprise-firmware og den understøttede SDK-udgivelse før implementeringen.

• At udgive demoen uændret. Eksemplet demonstrerer funktioner. Dets delte medielagring, eksempelfraser og urelaterede funktioner skal gennemgås før en udrulning i virksomheden.

• At forveksle optagelse med lagring. Et lokalt foto og en transskription er ikke en gemt arbejdsordre. Bekræft posten i backend, før der vises succes.

Konklusion

En nyttig forretningsapp til Rokid starter med bekræftet enterprise-hardware og SDK-adgang, en fungerende Android-demo og et lille workflow til optagelse og gennemsyn. Derefter tilføjer udviklerne tydelig feedback på displayet, valideret taleinput og integration med virksomhedens godkendte backend. Test på målenheden og udrulning via den understøttede forretningskanal gør prototypen til et værktøj, der kan forbedre feltdokumentationen og mindske manuel indtastning.

João Noronha

Skrevet af

João Noronha

Ofte stillede spørgsmål

Denne artikel

Brug dokumentationen til Sprite Enterprise SDK, Android Studio og den tilsvarende enterprise-demo, når hardwarekompatibilitet og kommerciel adgang er bekræftet. Brug Rokid AI Enterprise, hvor den leverede onboarding kræver det.

Nej. Bekræft koblingen mellem model og firmware med Rokid. Den offentlige SDK-dokumentation, der bruges her, nævner Glass3 Enterprise.

Ja. Native Android-udvikling kræver Gradle-konfiguration, Kotlin- eller Java-kode og XML eller et andet Android-UI-framework. Denne vejledning viser, hvor enterprise-demoen skal ændres.

Nej. Den beskriver en kontrol. Stemmeaktivering kræver integration med de kommando- eller talehændelser, som enterprise-SDK'et understøtter.

Lokal funktionalitet afhænger af enhedens tjenester og SDK-konfigurationen. Den dokumenterede cloud-ASR-løsning kræver forbindelse. Test enhver offlinekommandokonfiguration separat; upload til en server kræver også den tilhørende netværksforbindelse.

Det er en målrettet ændring af demoen, kontrolleret op mod den dokumenterede kildekode, ikke et hardwaretestet produktionsbuild. Tilføj spærrer for optagelse, timeouthåndtering, gennemsyn, sikker lagring og backendintegration før udrulning.