/*
WebRTCDeviceService.java
Copyright (c) 2015 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.deviceplugin.webrtc;
import org.deviceconnect.android.deviceplugin.webrtc.profile.WebRTCSystemProfile;
import org.deviceconnect.android.deviceplugin.webrtc.service.WebRTCService;
import org.deviceconnect.android.deviceplugin.webrtc.util.WebRTCManager;
import org.deviceconnect.android.event.EventManager;
import org.deviceconnect.android.message.DConnectMessageService;
import org.deviceconnect.android.profile.SystemProfile;
import java.util.logging.Logger;
/**
* WebRTC device plug-in.
*
* @author NTT DOCOMO, INC.
*/
public class WebRTCDeviceService extends DConnectMessageService {
/** ロガー. */
private final Logger mLogger = Logger.getLogger("webrtc.dplugin");
private WebRTCManager mWebRTCManager;
@Override
public void onCreate() {
super.onCreate();
mWebRTCManager = new WebRTCManager((WebRTCApplication) getApplication());
getServiceProvider().addService(new WebRTCService());
}
@Override
public void onDestroy() {
if (mWebRTCManager != null) {
mWebRTCManager.destroy();
mWebRTCManager = null;
}
super.onDestroy();
}
@Override
protected void onManagerUninstalled() {
// Managerアンインストール検知時の処理。
if (BuildConfig.DEBUG) {
mLogger.info("Plug-in : onManagerUninstalled");
}
}
@Override
protected void onManagerTerminated() {
// Manager正常終了通知受信時の処理。
if (BuildConfig.DEBUG) {
mLogger.info("Plug-in : onManagerTerminated");
}
}
@Override
protected void onManagerEventTransmitDisconnected(String sessionKey) {
// ManagerのEvent送信経路切断通知受信時の処理。
if (BuildConfig.DEBUG) {
mLogger.info("Plug-in : onManagerEventTransmitDisconnected");
}
if (sessionKey != null) {
EventManager.INSTANCE.removeEvents(sessionKey);
} else {
EventManager.INSTANCE.removeAll();
}
}
@Override
protected void onDevicePluginReset() {
// Device Plug-inへのReset要求受信時の処理。
if (BuildConfig.DEBUG) {
mLogger.info("Plug-in : onDevicePluginReset");
}
resetPluginResource();
}
/**
* リソースリセット処理.
*/
private void resetPluginResource() {
/** 全イベント削除. */
EventManager.INSTANCE.removeAll();
/** Peer切断処理. */
WebRTCApplication app = (WebRTCApplication) ((DConnectMessageService) getContext()).getApplication();
if (app != null) {
app.destroyPeer();
}
}
@Override
protected SystemProfile getSystemProfile() {
return new WebRTCSystemProfile();
}
public WebRTCManager getWebRTCManager() {
return mWebRTCManager;
}
}