SessionManagerListener 不工作

Posted

技术标签:

【中文标题】SessionManagerListener 不工作【英文标题】:SessionManagerListener not working 【发布时间】:2016-09-20 08:19:17 【问题描述】:

我正在使用应用程序并尝试投射视频,但是当我想为投射会话设置监听器时无法正常工作。我在一个片段中工作,所以我无法弄清楚问题出在哪里。

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;

            
        ;
    

【问题讨论】:

你在哪里/如何注册这个监听器? 我发现问题出在哪里了,这行代码我忘记了,mCastContext.getSessionManager().addSessionManagerListener( mSessionManagerListener, CastSession.class); 【参考方案1】:

故障 1 :- 通常人们忘记在 onResume 方法中注册监听器

onResume()
   mCastContext.getSessionManager()
               .addSessionManagerListener(mSessionManagerListener, CastSession.class);

错误 2 :- 有些人在 home screen 上添加 MediaRouteButton 并在不同的活动中写 SessionManagerListener 而忘记在 @987654327 上添加 MediaRouteButton @。所以,显然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);
...
...


【讨论】:

以上是关于SessionManagerListener 不工作的主要内容,如果未能解决你的问题,请参考以下文章

重剑无锋 大巧不工

CGRect.offsetBy 不工​​作

重剑无锋,大巧不工

SQL 查询 Distinct / Group By 不工​​作

大巧不工-WEB前端设计修炼之道pdf

通过自定义策略级别不工作为组件提供对 sharepoint 的完全信任