1

目前我正在进入 MediaRoute Android 课程。我已经遵循并理解了这些示例,并且我正在尝试在两个设备之间共享视频,例如,两个具有相同硬件的平板电脑。我有两个自定义应用程序。

  1. MediaRouter 应用程序,它将发送视频
  2. MediaRouterProvider 应用程序,它将接收视频并播放它。

事实是,如果第二个应用程序安装在第二个设备中,我安装在第一个设备上的第一个应用程序看不到路线。相反,如果我在第一个设备上安装第二个应用程序,我能够发现 MediaRouteProvider 应用程序中定义的 MediaRoutes,因此第二个应用程序在本地工作。

我正在发布这样的 MediaRouteProvider 路由:

private void publishRoutes() {

    Resources r = getContext().getResources();
    // Create a route descriptor using previously created IntentFilters
    MediaRouteDescriptor routeDescriptor = new MediaRouteDescriptor.Builder(
            VARIABLE_VOLUME_BASIC_ROUTE_ID,"WTF")
            .setDescription("descripcion")
            .addControlFilters(CONTROL_FILTERS_BASIC)
            .setPlaybackStream(AudioManager.STREAM_MUSIC)
            .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
            .setDeviceType(MediaRouter.RouteInfo.DEVICE_TYPE_UNKNOWN)
            .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
            .setVolumeMax(VOLUME_MAX)
            .setVolume(mVolume)
            .build();
    // Add the route descriptor to the provider descriptor
    MediaRouteProviderDescriptor providerDescriptor =
            new MediaRouteProviderDescriptor.Builder()
                    .addRoute(routeDescriptor)
                    .build();

    // Publish the descriptor to the framework
    setDescriptor(providerDescriptor);
}

当然,我知道在两个设备之间没有直接连接的情况下发现路由并没有什么魔力。两者都连接到同一个 Wifi 网络。另外,我有一个连接到电视的 chromecast,我可以发现它,我还可以在电视上播放视频。

总而言之,我想知道我的第一个应用程序在做什么 chromecast 以便对我的第二个应用程序做类似的事情。我尝试在我的两台设备之间建立直接套接字连接,但找不到路由。也许我正在寻找一种错误的方法,因此将不胜感激。

4

1 回答 1

0

您展示的MediaRouteProvider实现创建并发布到本地设备的路由。这就是为什么当你在同一台设备上运行消费者和提供者时,提供者是可用的。要为非本地接收者提供路线,您必须在您的路线提供者中发现并为他们提供路线。

ChromeCast 在本地网络上宣传自己。您的手机上有一个代码,它注册了一个MediaRouteProvider处理 ChromeCast 的发现和播放的代码。您必须为您的MediaRouteProvider.

于 2017-05-14T17:12:37.533 回答