use of com.connectsdk.service.command.ServiceCommand in project butter-android by butterproject.
the class WebOSTVService method launchWebApp.
public void launchWebApp(final String webAppId, final JSONObject params, final WebAppSession.LaunchListener listener) {
if (webAppId == null || webAppId.length() == 0) {
Util.postError(listener, new ServiceCommandError(-1, "You need to provide a valid webAppId.", null));
return;
}
final WebOSWebAppSession _webAppSession = mWebAppSessions.get(webAppId);
String uri = "ssap://webapp/launchWebApp";
JSONObject payload = new JSONObject();
try {
payload.put("webAppId", webAppId);
if (params != null)
payload.put("urlParams", params);
} catch (JSONException e) {
e.printStackTrace();
}
ResponseListener<Object> responseListener = new ResponseListener<Object>() {
@Override
public void onSuccess(final Object response) {
JSONObject obj = (JSONObject) response;
LaunchSession launchSession = null;
WebOSWebAppSession webAppSession = _webAppSession;
if (webAppSession != null)
launchSession = webAppSession.launchSession;
else {
launchSession = LaunchSession.launchSessionForAppId(webAppId);
webAppSession = new WebOSWebAppSession(launchSession, WebOSTVService.this);
mWebAppSessions.put(webAppId, webAppSession);
}
launchSession.setService(WebOSTVService.this);
launchSession.setSessionId(obj.optString("sessionId"));
launchSession.setSessionType(LaunchSessionType.WebApp);
launchSession.setRawData(obj);
Util.postSuccess(listener, webAppSession);
}
@Override
public void onError(ServiceCommandError error) {
Util.postError(listener, error);
}
};
ServiceCommand<ResponseListener<Object>> request = new ServiceCommand<ResponseListener<Object>>(this, uri, payload, true, responseListener);
request.send();
}
use of com.connectsdk.service.command.ServiceCommand in project butter-android by butterproject.
the class WebOSTVServiceSocketClient method handleConnectionLost.
@SuppressWarnings("unchecked")
private void handleConnectionLost(boolean cleanDisconnect, Exception ex) {
ServiceCommandError error = null;
if (ex != null || !cleanDisconnect)
error = new ServiceCommandError(0, "conneciton error", ex);
if (mListener != null)
mListener.onCloseWithError(error);
for (int i = 0; i < requests.size(); i++) {
ServiceCommand<ResponseListener<Object>> request = (ServiceCommand<ResponseListener<Object>>) requests.get(requests.keyAt(i));
if (request != null)
Util.postError(request.getResponseListener(), new ServiceCommandError(0, "connection lost", null));
}
requests.clear();
}
use of com.connectsdk.service.command.ServiceCommand in project butter-android by butterproject.
the class WebOSTVServiceSocketClient method sendRegister.
protected void sendRegister() {
ResponseListener<Object> listener = new ResponseListener<Object>() {
@Override
public void onError(ServiceCommandError error) {
state = State.INITIAL;
if (mListener != null)
mListener.onRegistrationFailed(error);
}
@Override
public void onSuccess(Object object) {
if (object instanceof JSONObject) {
PairingType pairingType = PairingType.NONE;
JSONObject jsonObj = (JSONObject) object;
String type = jsonObj.optString("pairingType");
if (type.equalsIgnoreCase("PROMPT")) {
pairingType = PairingType.FIRST_SCREEN;
} else if (type.equalsIgnoreCase("PIN")) {
pairingType = PairingType.PIN_CODE;
}
if (mListener != null)
mListener.onBeforeRegister(pairingType);
}
}
};
int dataId = this.nextRequestId++;
ServiceCommand<ResponseListener<Object>> command = new ServiceCommand<ResponseListener<Object>>(this, null, null, listener);
command.setRequestId(dataId);
JSONObject headers = new JSONObject();
JSONObject payload = new JSONObject();
try {
headers.put("type", "register");
headers.put("id", dataId);
if (!(mService.getServiceConfig() instanceof WebOSTVServiceConfig)) {
mService.setServiceConfig(new WebOSTVServiceConfig(mService.getServiceConfig().getServiceUUID()));
}
if (((WebOSTVServiceConfig) mService.getServiceConfig()).getClientKey() != null) {
payload.put("client-key", ((WebOSTVServiceConfig) mService.getServiceConfig()).getClientKey());
}
if (PairingType.PIN_CODE.equals(mService.getPairingType())) {
payload.put("pairingType", "PIN");
}
if (manifest != null) {
payload.put("manifest", manifest);
}
} catch (JSONException e) {
e.printStackTrace();
}
requests.put(dataId, command);
sendMessage(headers, payload);
}
use of com.connectsdk.service.command.ServiceCommand in project butter-android by butterproject.
the class WebOSWebAppSession method next.
@Override
public void next(final ResponseListener<Object> listener) {
int requestIdNumber = getNextId();
final String requestId = String.format(Locale.US, "req%d", requestIdNumber);
JSONObject message = null;
try {
message = new JSONObject() {
{
put("contentType", namespaceKey + "mediaCommand");
put("mediaCommand", new JSONObject() {
{
put("type", "playNext");
put("requestId", requestId);
}
});
}
};
} catch (JSONException e) {
Util.postError(listener, new ServiceCommandError(0, "JSON Parse error", null));
return;
}
ServiceCommand<ResponseListener<Object>> command = new ServiceCommand<ResponseListener<Object>>(null, null, null, listener);
mActiveCommands.put(requestId, command);
sendMessage(message, listener);
}
use of com.connectsdk.service.command.ServiceCommand in project butter-android by butterproject.
the class WebOSWebAppSession method seek.
@Override
public void seek(final long position, ResponseListener<Object> listener) {
if (position < 0) {
Util.postError(listener, new ServiceCommandError(0, "Must pass a valid positive value", null));
return;
}
int requestIdNumber = getNextId();
final String requestId = String.format(Locale.US, "req%d", requestIdNumber);
JSONObject message = null;
try {
message = new JSONObject() {
{
put("contentType", namespaceKey + "mediaCommand");
put("mediaCommand", new JSONObject() {
{
put("type", "seek");
put("position", position / 1000);
put("requestId", requestId);
}
});
}
};
} catch (JSONException e) {
Util.postError(listener, new ServiceCommandError(0, "JSON Parse error", null));
}
ServiceCommand<ResponseListener<Object>> command = new ServiceCommand<ResponseListener<Object>>(null, null, null, listener);
mActiveCommands.put(requestId, command);
sendMessage(message, listener);
}
Aggregations