Menu

Service features

The Samsung EDU SDK offers the following features.

Network Manager

The Network Manager is a core service which is used across the agents for data communication. It provides the following key features:

  • Discovery of the nodes
  • Detect the node and network status changes
  • Connect and disconnect from the nodes
  • Send or receive data from the network
  • Get the local and connected node information

The Network Manager utilizes Samsung Chord for data communication. It also offer

Discovery Manager

Discovery Manager is an interface that provides API methods for the following actions:

  • Cast network (session) information when starting a lesson
  • Detect network (session) information for joining the lesson

Discovery manager provides the following Discovery methods.

  • Wi-Fi Multicast
  • BLE (Bluetooth LE)

Discovery Manager casts the session information to students, so that they can join the class to get session information.

In case of a teacher, Discovery Manager is started whenever a lesson is started. In case of a student, Discovery Manager is started when student starts to receive the started lesson.

System Manager

System Manager is an interface that provides API methods for the following actions:

  • Enable/disable bluetooth
  • Enable/disable GPS
  • Reboot device
  • Get memory size

Samsung devices supports API methods for the following additional actions:

  • Get hovering status
  • Get talkback status
  • Shutdown device

Screen Manager

Screen Manager is an interface that provides API methods for the following actions:

  • Capture device’s screen and return a bitmap image
  • Encode a bitmap image to byte array
  • Decode byte array to a bitmap image
  • Use JPEG codec and screen codec (ICON codec) when encoding or decoding

Screen Manager captures device’s screen and returns the captured image as a bitmap. It uses the EDU SDK for getting Android frame buffer and creates a bitmap. It supports encoding bitmap to JPEG data or screen codec data (usually, encoded data is of type byte array). It also supports decoding the encoded byte array data.

Before using the encoder, you must start it. While starting the encoder, you must input the codec selection, image size, and quality of image. After starting the encoder, screen capturing must be started.

Screen Manager makes a bitmap while it decodes the data. But, if you set mutable bitmap instance to Screen Manager, it does not make a new bitmap and reuses the same while decoding the data.

ScreenShareAgent and ScreenshotAgent use Screen Manager for capturing the screen bitmap.

Screen Share Manager

Screen Share Manager is an interface that provides APIs for the following actions:

  • Record Screen using H.264 codec and send to the recipients
  • Start WFD (Wi-Fi Display) for sending screen to other device(s)
  • Receive streaming video and play

Screen Share manager provides two types of screen sharing methods:

  • H.264: H.264 is most famous video codec. Fast because using HW encoding and decoding.
  • WFD: WFD (Wi-Fi Display) is component of Android. Screen Share Manager wraps the API for ease-of-use. WFD is supported over Android version 18(Kitkat). WFD supports only 1:1.

Screen Share Manager sends and receives screen data in real-time. There are two ways of sharing the screen:

  • Capture screen using E-SDK repeatedly. H.264 encoder makes streaming video using the continuous captured images. Screen Share Manager makes a connection with receivers and sends encoded data. Receivers decode received data and play on the Surface.
  • Android supports WFD over Kitkat version. If using Screen Share Manager, it is easy to use WFD. WFD supports only 1:1. Screen Share Manager uses MediaPlayer which is a component of Android for playing received data.

Screen Share Manager supports changeable bitrate when the screen is shared with the H.264 codec. When the network signal is strong, encoding is done with high quality. When the network signal is weak, Screen Share Manager controls the streaming video quality and, because of bitrate control, the delay is minimized.

 

Device Manager

Device Manager is an interface that provides API methods for the following actions:

  • To manage device
  • To control device

Device Manager checks for the following Android permissions:

  • Device Control APIs include App Launch, URL Launch, and remote event dispatch. See DeviceControlAgent for permissions based on DevicePolicy.
  • Device Lock APIs include App Lock, Screen Lock, and Status Bar Lock. See DeviceLockAgent for permissions based on DevicePolicy.
  • Device Manage APIs include Install package, Uninstall Package, Request Remote Device Information, and set Device Settings. See DeviceManageAgent for permissions based on DevicePolicy.

HTTP Requester

HTTP Requester is a robust connection manager framework which can be used for data communication in client-server apps.

Apps built on the EDU SDK can fetch/send data from/to server in parallel operations. The connection manager module is able to support multi-threading operations.

The EDU SDK provides HTTP Requester which enables the SDK user to use the following features:

  • HTTP Request (GET/ POST)
  • HTTP Download
  • HTTP Upload
  • Cancel Request
  • HTTPS support and access

If the user uses the HTTP Requester from the Agent, the user can directly get the HTTP Requester services from Service Fetcher.

HTTPRequester mHttpRequester = (HTTPRequester)serviceFetcher.getService(ServiceFetcher.HTTP);

If the user is a non-agent, then user can access HTTP Requester via Service Broker.

HttpRequester mHttpRequester = (HttpRequester)AgentManager.getInstance().getServiceBroker().getService(HttpRequester.class);

The following code example illustrates how to use the HTTP Requester.

mHttpRequester.request(url, MethodType.GET, new OnResponseListener() {
 @Override
 public void onResponseReceived(long requestId, int privateId, Object response, Object tag) {

 }
 @Override
 public void onRequestCancelled(long requestId, int privateId, Object tag, Object ReRequest) {

 }

 @Override
 public void onExceptionReceived(long requestId, int privateId, NetException ex, Object tag, Object ReRequest) {

 }
});