Availability: Android SDK v1.5.6+

The Annotation feature allows you to annotate on a Remote Stream. To support Annotations, you need to enable Canvas Streaming during Room Creation by setting: { canvas: true; }} in the JSON payload. To implement Annotation, you need to add Annotation Toolbar before you can start Annotations.

Table of Contents

Add Annotation Toolbar

Initiate Annotation Toolbar using the following code in XML:

<enx_rtc_android.annotations.EnxAnnotationsToolbar
        android:id="@+id/annotations_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

Start Annotation

The EnxRoom.startAnnotation() method is used to start Annotation on a given Stream object. To initiate Annotation, you need to setAnnotationObserver after getting connected to the room.

ClassEnxRoom

Observerpublic void setAnnotationObserver(Annotations-Observer-Instance)

Method: public void startAnnotation(EnxStream) 

Parameter: 

EnxStream – Stream Object to be annotated.

Callbacks:

  • public void onStartAnnotationAck(JSONObject) – Acknowledgment to the Annotator when Annotation starts.
  • public void onAnnotationStarted(EnxStream) – Notification to everyone in the Room when Annotation starts.
// Set Observer
room.setAnnotationObserver(Annotations-Observer-Instance);

// Start Annotation
room.startAnnotation(EnxStream enxStream); 

// Notification to all - Annotation started
public void onAnnotationStarted(EnxStream enxStream) {
	// Add Annotations view to parent view
	((ViewGroup) mAnnotationViewContainer).addView(enxStream.EnxPlayerView);

}
 
// Acknowlegement to Annotator - Annotation started
public void onStartAnnotationAck(JSONobject jsonObject) {
	// Handdle UI. See info on jsonObject
}

Stop Annotation

The EnxRoom.stopAnnotation() method is used to stop Annotations.

Class: EnxRoom

Method: public void stopAnnotation()

Callbacks:

  • public void onStoppedAnnotationAck(JSONObject) – Acknowledgment to the Annotator when Annotation stops.
  • public void onAnnotationStopped(EnxStream) – Notification to everyone in the Room when Annotation stops.
// Stop Annotation
room.stopAnnotation(); 

// Notification to all - Annotation stopped
public void onAnnotationStopped(EnxStream enxStream) {
// Remove Annotations view to parent view
((ViewGroup) mAnnotationViewContainer).removeView(enxStream.EnxPlayerView);

}

// Acknowlegement to Annotator - Annotation stopped
public void onStoppedAnnotationAck(JSONobject jsonObject) {
// Handdle UI. See info on jsonObject
}

Error Codes / Exceptions: 

CodeDescription
5093Annotation Access denied.
5104Repeated startAnnotation() call made while Annotations already active in the Room.
5106Repeated startAnnotation() call made while a previous request is in process.
5108Invalid Stream passed to startAnnotation().
5109Failed to publish Annotation Stream.
5112Annotation support available in Landscape Mode only.
5094Repeated stopAnnotation() call made while a previous request is in process.