我正在使用一个应用程序,我试图投射一个视频,但当我想设置一个监听器的投射会话是不工作。我在一个片段内工作,所以我无法找出问题所在。
private void setupCastListener() {
mSessionManagerListener = new SessionManagerListener<CastSession>() {
@Override
public void onSessionEnded(CastSession session, int error) {
onApplicationDisconnected();
}
@Override
public void onSessionResumed(CastSession session, boolean wasSuspended) {
Log.d("fragment tv", "onSessionResumed");
onApplicationConnected(session);
}
@Override
public void onSessionResumeFailed(CastSession session, int error) {
onApplicationDisconnected();
}
@Override
public void onSessionStarted(CastSession session, String sessionId){ Log.d("fragment tv", "onSessionStarted");
onApplicationConnected(session);
}
@Override
public void onSessionStartFailed(CastSession session, int error) {
onApplicationDisconnected();
}
@Override
public void onSessionStarting(CastSession session) {
}
@Override
public void onSessionEnding(CastSession session) {
}
@Override
public void onSessionResuming(CastSession session, String sessionId) {
}
@Override
public void onSessionSuspended(CastSession session, int reason) {
}
private void onApplicationConnected(CastSession castSession) {
Log.d("fragment tv", "connected");
mCastSession = castSession;
mLocation = PlaybackLocation.REMOTE;}
private void onApplicationDisconnected() {
Log.d("fragment tv", "disconnected");
mLocation = PlaybackLocation.LOCAL;
}
};
}
故障1 :-通常情况下,人们会忘记注册监听者在 onResume
办法
onResume(){
mCastContext.getSessionManager()
.addSessionManagerListener(mSessionManagerListener, CastSession.class);
}
错2 :- 有些人添加 MediaRouteButton
关于 home screen
并写 SessionManagerListener
在不同的活动中,忘记添加 MediaRouteButton
关于 scrren
. 所以,很明显 SessionManagerListener
将永远不会被调用。
所以,要注意添加 MediaRouteButton
再加上 SessionManagerListener
在相应的活动上。
MediaRouteButton mMediaRouteButton;
onCreateView(){
...
...
setupCastListener(); // initialize listener variable
mCastContext = CastContext.getSharedInstance(getActivity());
// add and setup mMediaRouteButton - CastButtonFactory
mMediaRouteButton = getActivity().findViewById(R.id.media_route_button);
CastButtonFactory.setUpMediaRouteButton(getContext(), mMediaRouteButton);
...
...
}