目前我正在进入 MediaRoute Android 课程。我已经遵循并理解了这些示例,并且我正在尝试在两个设备之间共享视频,例如,两个具有相同硬件的平板电脑。我有两个自定义应用程序。
- MediaRouter 应用程序,它将发送视频
- 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 以便对我的第二个应用程序做类似的事情。我尝试在我的两台设备之间建立直接套接字连接,但找不到路由。也许我正在寻找一种错误的方法,因此将不胜感激。