2017-03-02 64 views
0

目前,我正在進入MediaRoute Android類。我已經關注並理解了這些示例,並且我試圖在兩個設備之間共享視頻,例如,使用相同硬件的兩個平板電腦。我有兩個自定義應用程序。如何使用MediaRouting在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,以便爲我的第二個應用程序做類似的事情。我嘗試在兩臺設備之間建立直接套接字連接,但無法發現路由。也許我正在尋找一個錯誤的方法,所以任何幫助將不勝感激。

+0

可能重複:http://stackoverflow.com/questions/39131973/mediarouterprovider-not-visible-in-the-network – 0xcaff

回答

0

您顯示的MediaRouteProvider實現創建併發布到本地設備的路由。這就是爲什麼當您在同一設備上運行使用者和提供者時,提供者可用。要爲非本地接收者提供路由,您必須在您的路由提供商中發現並提供路由。

ChromeCast在本地網絡上宣傳自己。您手機上的代碼註冊了MediaRouteProvider,該代碼處理ChromeCast的發現和播放。您必須爲您的MediaRouteProvider實施此發現和回放管理代碼。

相關問題