c732d49e |
/*
* |
74ca6d11 |
* Copyright (C) 2020, University of the Basque Country (UPV/EHU) |
c732d49e |
*
* Contact for licensing options: <licensing-mcpttclient(at)mcopenplatform(dot)com>
*
* This file is part of MCOP MCPTT Client
*
* This is free software: you can redistribute it and/or modify it under the terms of
* the GNU General Public License as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.mcopenplatform.muoapi;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import org.mcopenplatform.muoapi.utils.Utils;
import java.util.ArrayList;
public class Engine {
private final static String TAG = Utils.getTAG(Engine.class.getCanonicalName());
private static Engine sInstance;
private static ArrayList<ManagerClient> mClients;
private static int NUM_MAX_CLIENT=1;
public static Engine getInstance(){
if(sInstance == null){
sInstance = new Engine();
}
return sInstance;
}
public Engine() {
mClients=new ArrayList<>();
Log.d(TAG,"Start engine SDK MCOP");
}
|
175b478c |
protected IBinder newClient(Intent intent,Context context,boolean isRebind){ |
c732d49e |
IBinder result=null; |
175b478c |
ManagerClient managerClient=null;
if(mClients.size()==NUM_MAX_CLIENT){
managerClient=mClients.get(0);
}if(mClients.size()<NUM_MAX_CLIENT){ |
c732d49e |
Log.d(TAG,"Create new client"); |
175b478c |
String connectivityPluginPackageMain = intent.getStringExtra(ConstantsMCOP.CONNECTIVITY_PLUGIN_PACKAGE_ID);
String connectivityPluginPackageService = intent.getStringExtra(ConstantsMCOP.CONNECTIVITY_PLUGIN_SERVICE_ID);
String simPluginPackageMain = intent.getStringExtra(ConstantsMCOP.SIM_PLUGIN_PACKAGE_ID);
String simPluginPackageService = intent.getStringExtra(ConstantsMCOP.SIM_PLUGIN_SERVICE_ID);
String configurationPluginPackageMain = intent.getStringExtra(ConstantsMCOP.CONFIGURATION_PLUGIN_PACKAGE_ID);
String configurationPluginPackageService = intent.getStringExtra(ConstantsMCOP.CONFIGURATION_PLUGIN_SERVICE_ID);
String mbmsPluginPackageMain = intent.getStringExtra(ConstantsMCOP.MBMS_PLUGIN_PACKAGE_ID);
String mbmsPluginPackageService = intent.getStringExtra(ConstantsMCOP.MBMS_PLUGIN_SERVICE_ID);
managerClient=new ManagerClient(context
,connectivityPluginPackageService
,connectivityPluginPackageMain
,simPluginPackageService
,simPluginPackageMain
,configurationPluginPackageService
,configurationPluginPackageMain
,mbmsPluginPackageService
,mbmsPluginPackageMain
); |
c732d49e |
mClients.add(managerClient); |
175b478c |
|
c732d49e |
}else{
Log.e(TAG,"The number of users of the server to exceeded the allowed maximum number");
} |
175b478c |
//Test
//Only in demo
String userSelect=null;
if(managerClient!=null && (userSelect=intent.getStringExtra("PROFILE_SELECT"))!=null && !userSelect.trim().isEmpty()){
Log.d(TAG,"Select profile:"+userSelect);
managerClient.selectProfileMCOP2(userSelect);
}
if(managerClient!=null)
result=managerClient.startManagerClient(isRebind); |
c732d49e |
return result;
}
public boolean stopClients(){
boolean success=false;
if(mClients!=null){
success=true;
for(ManagerClient managerClient:mClients){
success &=managerClient.stopManagerClient(); |
175b478c |
//mClients.remove(managerClient); |
c732d49e |
}
}
return success;
}
public boolean onDestroyClients(){
boolean success=false;
if(mClients!=null){
success=true;
for(ManagerClient managerClient:mClients){
success &=managerClient.onDestroyClient(); |
175b478c |
//mClients.remove(managerClient); |
c732d49e |
}
}
return success;
}
} |