首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaRouter.sendControlRequest不起作用

MediaRouter.sendControlRequest不起作用
EN

Stack Overflow用户
提问于 2014-10-05 19:04:02
回答 1查看 491关注 0票数 0

我正在开发小型android chromecast发件人应用程序。当我试图使用MediaRouter API创建新会话时,它不起作用。

代码语言:javascript
复制
import android.support.v7.media.MediaControlIntent;
import android.support.v7.media.MediaRouteSelector;
import android.support.v7.media.MediaRouter;

class PlayerFragment extends Fragment 
{

MediaRoute.Callback cb;

/*
  ....
*/


cb = new MediaRouter.Callback() {
        @Override
        public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo route) {
            super.onRouteSelected(router, route);

            Log.v("PlayerFragment", "Route selected");
            mRoute = route;
            createSession();
        }

        @Override
        public void onRouteUnselected(MediaRouter router, MediaRouter.RouteInfo route) {
            super.onRouteUnselected(router, route);

            mRoute = null;
        }
    };

private void startDiscovery(){
    mRouter.addCallback(selector, cb, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}

private void createSession(){

    Intent intent = new Intent(MediaControlIntent.ACTION_START_SESSION);

    intent.addCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK);

    intent.putExtra(CastMediaControlIntent.EXTRA_CAST_APPLICATION_ID,
            CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID);

    intent.putExtra(CastMediaControlIntent.EXTRA_CAST_RELAUNCH_APPLICATION, true);

    intent.putExtra(CastMediaControlIntent.EXTRA_DEBUG_LOGGING_ENABLED, true);

    intent.putExtra(CastMediaControlIntent.EXTRA_CAST_STOP_APPLICATION_WHEN_SESSION_ENDS,
            true);

    mRoute.sendControlRequest(intent, new MediaRouter.ControlRequestCallback() {
        @Override
        public void onResult(Bundle data) {
            super.onResult(data);

            mSessionId = data.getString(MediaControlIntent.EXTRA_SESSION_ID);
            Log.v("PlayerFragment", "Session ID is: " + mSessionId);
        }
    });
}

}

应用程序不在电视上启动,logcat中没有对应的字符串,onResult方法中的调试器断点也没有捕获。这里是logcat的一部分

代码语言:javascript
复制
10-05 23:02:05.097    5740-5740/shirokovoi.ChromeCastSSAPP I/System.out﹕ debugger has settled (1372)
10-05 23:02:05.582    5740-5740/shirokovoi.ChromeCastSSAPP I/MediaRouter﹕ Found default route: MediaRouter.RouteInfo{ uniqueId=android/.support.v7.media.SystemMediaRouteProvider:DEFAULT_ROUTE, name=Tablet, description=null, enabled=true, connecting=false, playbackType=0, playbackStream=3, volumeHandling=1, volume=15, volumeMax=15, presentationDisplayId=-1, extras=null, providerPackageName=android }
10-05 23:02:06.074    5740-5740/shirokovoi.ChromeCastSSAPP D/android.widget.GridLayout﹕ vertical constraints: y1-y0>=500, y2-y1>=32, y3-y2>=48, y4-y3>=0, y4-y0<=512 are inconsistent; permanently removing: y4-y0<=512.
10-05 23:02:06.222    5740-5740/shirokovoi.ChromeCastSSAPP D/OpenGLRenderer﹕ Enabling debug mode 0
10-05 23:02:06.722    5740-5740/shirokovoi.ChromeCastSSAPP I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@419a2a68 time:38947645
10-05 23:02:15.863    5740-5740/shirokovoi.ChromeCastSSAPP V/PlayerFragment﹕ Route selected
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-08 21:16:48

最后,我解决了这个问题。重点是在我的意图中缺少EXTRA_SESSION_STATUS_UPDATE_RECEIVER。我不知道为什么没有这个额外的,但如果我加起来,它是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26206153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档