package mediabrowser.apiinteraction.android;
import android.content.SharedPreferences;
import mediabrowser.apiinteraction.*;
import mediabrowser.apiinteraction.connectionmanager.ConnectionManager;
import mediabrowser.apiinteraction.device.IDevice;
import mediabrowser.apiinteraction.discovery.ServerLocator;
import mediabrowser.apiinteraction.http.IAsyncHttpClient;
import mediabrowser.model.apiclient.ServerInfo;
import mediabrowser.model.logging.ILogger;
import mediabrowser.model.serialization.IJsonSerializer;
import mediabrowser.model.session.ClientCapabilities;
import android.content.Context;
import java.util.ArrayList;
public class AndroidConnectionManager extends ConnectionManager {
public AndroidConnectionManager(Context context, IJsonSerializer jsonSerializer, ILogger logger, IAsyncHttpClient httpClient, String applicationName, String applicationVersion, IDevice device, ClientCapabilities clientCapabilities, ApiEventListener apiEventListener) {
super(new AndroidCredentialProvider(jsonSerializer, context, logger),
new AndroidNetworkConnection(context, logger),
jsonSerializer,
logger,
new ServerLocator(logger, jsonSerializer),
httpClient,
applicationName,
applicationVersion,
device,
clientCapabilities, apiEventListener);
SaveAppInfo(context);
}
private void SaveAppInfo(Context context){
SharedPreferences preferences = context.getSharedPreferences("AndroidConnectionManager", Context.MODE_PRIVATE | Context.MODE_MULTI_PROCESS);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("appName", applicationName);
editor.putString("appVersion", applicationVersion);
editor.putString("capabilities", jsonSerializer.SerializeToString(getClientCapabilities()));
editor.putString("deviceId", getDevice().getDeviceId());
editor.putString("deviceName", getDevice().getDeviceName());
// Commit the edits!
editor.commit();
}
@Override
protected ApiClient InstantiateApiClient(String serverAddress) {
return new AndroidApiClient(httpClient,
jsonSerializer,
logger,
serverAddress,
applicationName,
device,
applicationVersion,
apiEventListener);
}
@Override
protected void FindServers(final Response<ArrayList<ServerInfo>> response)
{
Thread thread = new Thread(new FindServersRunnable(this, response));
thread.start();
}
void FindServersAndroid(final Response<ArrayList<ServerInfo>> response){
FindServersInternal(response);
}
}