VancedMicroG/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionImpl.java

197 lines
5.7 KiB
Java

/*
* Copyright (C) 2013-2017 microG Project Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.android.gms.cast.framework.internal;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.cast.ApplicationMetadata;
import com.google.android.gms.cast.CastDevice;
import com.google.android.gms.cast.framework.ISession;
import com.google.android.gms.cast.framework.ISessionProxy;
import com.google.android.gms.dynamic.IObjectWrapper;
import com.google.android.gms.dynamic.ObjectWrapper;
public class SessionImpl extends ISession.Stub {
private static final String TAG = SessionImpl.class.getSimpleName();
private String category;
private String sessionId;
private ISessionProxy proxy;
private CastSessionImpl castSession;
private CastContextImpl castContext;
private CastDevice castDevice;
private Bundle routeInfoExtra;
private boolean mIsConnecting = false;
private boolean mIsConnected = false;
private String routeId = null;
public SessionImpl(String category, String sessionId, ISessionProxy proxy) {
this.category = category;
this.sessionId = sessionId;
this.proxy = proxy;
}
public void start(CastContextImpl castContext, CastDevice castDevice, String routeId, Bundle routeInfoExtra) throws RemoteException {
this.castContext = castContext;
this.castDevice = castDevice;
this.routeInfoExtra = routeInfoExtra;
this.routeId = routeId;
this.mIsConnecting = true;
this.mIsConnected = false;
this.castContext.getSessionManagerImpl().onSessionStarting(this);
this.proxy.start(routeInfoExtra);
}
public void onApplicationConnectionSuccess(ApplicationMetadata applicationMetadata, String applicationStatus, String sessionId, boolean wasLaunched) {
this.mIsConnecting = false;
this.mIsConnected = true;
this.castContext.getSessionManagerImpl().onSessionStarted(this, sessionId);
try {
this.castContext.getRouter().selectRouteById(this.getRouteId());
} catch (RemoteException ex) {
Log.e(TAG, "Error calling selectRouteById: " + ex.getMessage());
}
}
public void onApplicationConnectionFailure(int statusCode) {
this.mIsConnecting = false;
this.mIsConnected = false;
this.routeId = null;
this.castContext = null;
this.castDevice = null;
this.routeInfoExtra = null;
this.castContext.getSessionManagerImpl().onSessionStartFailed(this, statusCode);
try {
this.castContext.getRouter().selectDefaultRoute();
} catch (RemoteException ex) {
Log.e(TAG, "Error calling selectDefaultRoute: " + ex.getMessage());
}
}
public void onRouteSelected(Bundle extras) {
}
public CastSessionImpl getCastSession() {
return this.castSession;
}
public void setCastSession(CastSessionImpl castSession) {
this.castSession = castSession;
}
public ISessionProxy getSessionProxy() {
return this.proxy;
}
public IObjectWrapper getWrappedSession() throws RemoteException {
if (this.proxy == null) {
return ObjectWrapper.wrap(null);
}
return this.proxy.getWrappedSession();
}
@Override
public String getCategory() {
return this.category;
}
@Override
public String getSessionId() {
return this.sessionId;
}
@Override
public String getRouteId() {
return this.routeId;
}
@Override
public boolean isConnected() {
return this.mIsConnected;
}
@Override
public boolean isConnecting() {
return this.mIsConnecting;
}
@Override
public boolean isDisconnecting() {
Log.d(TAG, "unimplemented Method: isDisconnecting");
return false;
}
@Override
public boolean isDisconnected() {
Log.d(TAG, "unimplemented Method: isDisconnected");
return false;
}
@Override
public boolean isResuming() {
Log.d(TAG, "unimplemented Method: isResuming");
return false;
}
@Override
public boolean isSuspended() {
Log.d(TAG, "unimplemented Method: isSuspended");
return false;
}
@Override
public void notifySessionStarted(String sessionId) {
Log.d(TAG, "unimplemented Method: notifySessionStarted");
}
@Override
public void notifyFailedToStartSession(int error) {
Log.d(TAG, "unimplemented Method: notifyFailedToStartSession");
}
@Override
public void notifySessionEnded(int error) {
Log.d(TAG, "unimplemented Method: notifySessionEnded");
}
@Override
public void notifySessionResumed(boolean wasSuspended) {
Log.d(TAG, "unimplemented Method: notifySessionResumed");
}
@Override
public void notifyFailedToResumeSession(int error) {
Log.d(TAG, "unimplemented Method: notifyFailedToResumeSession");
}
@Override
public void notifySessionSuspended(int reason) {
Log.d(TAG, "unimplemented Method: notifySessionSuspended");
}
@Override
public IObjectWrapper getWrappedObject() {
return ObjectWrapper.wrap(this);
}
}