Camera Module Reference
Complete API reference for camera capture and vision components.
EstuaryCamera (Example)
Example component for handling camera capture on Spectacles hardware. Listens for cameraCaptureRequest events and captures images automatically.
Location: Examples/EstuaryCamera.ts
EstuaryCamera is an example implementation provided in the SDK's Examples/ folder. Copy it to your project and customize as needed.
Inspector Inputs
| Input | Type | Default | Description |
|---|---|---|---|
debugMode | boolean | true | Enable debug logging |
captureResolution | number | 512 | Image resolution (smaller dimension in px) |
enableVisionAcknowledgment | boolean | true | AI says acknowledgment before analyzing |
Methods
| Method | Parameters | Returns | Description |
|---|---|---|---|
manualCapture() | text?: string | void | Manually trigger camera capture |
Lifecycle
// CameraModule APIs cannot be called in onAwake!
// Component automatically initializes in OnStartEvent
Example Usage
@component
export class CameraController extends BaseScriptComponent {
@input
estuaryCamera: ScriptComponent;
onAwake() {
// Set up a tap to capture
this.createEvent("TapEvent").bind(() => {
(this.estuaryCamera as any).manualCapture("What is this?");
});
}
}
CameraCaptureRequest
Request object sent by the server when the AI agent decides it needs visual context. The server's LLM uses function calling to trigger camera captures — no client-side intent detection is needed.
Location: src/Core/EstuaryEvents.ts
import { CameraCaptureRequest } from 'estuary-lens-studio-sdk';
Interface
interface CameraCaptureRequest {
request_id: string; // Unique identifier for this request
text?: string; // Optional text context for the capture
}
Usage
import { EstuaryManager, CameraCaptureRequest } from 'estuary-lens-studio-sdk';
// Receiving camera capture requests from the server
EstuaryManager.instance.on('cameraCaptureRequest', (request: CameraCaptureRequest) => {
print(`Capture requested: ${request.request_id}`);
print(`Context: ${request.text}`);
});
EstuaryManager Camera Methods
Camera-related methods on the EstuaryManager singleton.
Location: src/Components/EstuaryManager.ts
sendCameraImage
Send a captured image to the server for AI analysis.
sendCameraImage(
imageBase64: string,
mimeType?: string,
requestId?: string,
text?: string,
sampleRate?: number
): void
| Parameter | Type | Default | Description |
|---|---|---|---|
imageBase64 | string | required | Base64-encoded image data |
mimeType | string | 'image/jpeg' | MIME type of the image |
requestId | string | - | Request ID if responding to a cameraCaptureRequest |
text | string | - | Text context to send with image |
sampleRate | number | - | TTS output sample rate |
import { EstuaryManager } from 'estuary-lens-studio-sdk';
EstuaryManager.instance.sendCameraImage(
base64ImageData,
'image/jpeg',
'request-123',
'What do you see?'
);
Events
cameraCaptureRequest
Emitted by both EstuaryManager and EstuaryCharacter when the server's AI agent requests a camera capture.
import { EstuaryManager, CameraCaptureRequest } from 'estuary-lens-studio-sdk';
// Via EstuaryManager
EstuaryManager.instance.on('cameraCaptureRequest', (request: CameraCaptureRequest) => {
print(`Server requested capture: ${request.request_id}`);
});
// Via EstuaryCharacter
character.on('cameraCaptureRequest', (request: CameraCaptureRequest) => {
print(`Server requested capture: ${request.request_id}`);
// Capture and send image
const imageBase64 = captureImage();
EstuaryManager.instance.sendCameraImage(imageBase64, 'image/jpeg', request.request_id);
});
Type Definitions
Complete Type Reference
// Camera Capture Request (server → client)
interface CameraCaptureRequest {
request_id: string;
text?: string;
}
SDK Structure
estuary-lens-studio-sdk/
├── src/
│ ├── Components/
│ │ └── EstuaryManager.ts ← sendCameraImage()
│ └── Core/
│ └── EstuaryEvents.ts ← CameraCaptureRequest type
└── Examples/
├── EstuaryVoiceConnection.ts ← Vision integration with voice
└── EstuaryCamera.ts ← Camera capture settings (captureResolution, enableVisionAcknowledgment)
See Also
- Camera Module Guide - Setup and usage guide
- Component Layer - EstuaryManager reference
- Voice Connection - Audio and transcript setup