2014-10-12 3 views
0

Я пытаюсь проверить некоторые вещи с помощью Chromecast, но сталкиваются с проблемами, когда кнопка MediaRouter появляется на панели действий. Я уже зарегистрировал свое устройство с консолью cast dev, у манифеста есть игровые сервисы/интернет-разрешение, и я слежу вместе с документацией.Android: Получение значка Google Cast MediaRouter для отображения

MainActivity:

public class MainActivity extends ActionBarActivity { 

private MediaRouteSelector mSelector; 
private MediaRouter mMediaRouter; 


private final MediaRouter.Callback mMediaRouterCallback = 
     new MediaRouter.Callback() { 

      @Override 
      public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo route) { 

      } 

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

      } 

      @Override 
      public void onRoutePresentationDisplayChanged(
        MediaRouter router, MediaRouter.RouteInfo route) { 

      } 
     }; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mMediaRouter = MediaRouter.getInstance(this); 

    mSelector = new MediaRouteSelector.Builder() 
      .addControlCategory(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID) 
      .build(); 
} 

@Override 
public void onStart() { 
    mMediaRouter.addCallback(mSelector, mMediaRouterCallback, 
      MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); 
    super.onStart(); 
} 

@Override 
public void onStop() { 
    mMediaRouter.removeCallback(mMediaRouterCallback); 
    super.onStop(); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item); 

    MediaRouteActionProvider mediaRouteActionProvider = 
      (MediaRouteActionProvider) MenuItemCompat.getActionProvider(
        mediaRouteMenuItem); 

    mediaRouteActionProvider.setRouteSelector(mSelector); 

    return true; 
} 

} 

Меню:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
> 

<item android:id="@+id/media_route_menu_item" 
    android:title="Chromecast" 
    app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider" 
    app:showAsAction="always" 
    /> 
</menu> 

Gradle зависимостей:

compile 'com.android.support:appcompat-v7:20.0.0' 
compile 'com.android.support:mediarouter-v7:19.0.+' 
compile 'com.google.android.gms:play-services:6.1.11' 

ответ

1

Вы почти находитесь. Попытайтесь внести следующие изменения в свой селектор; изменить его на:

mSelector = new MediaRouteSelector.Builder().addControlCategory(CastMediaControlIntent.categoryForCast(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID)).build();

и посмотреть, если это помогает.

+0

Это сделало, спасибо! –

0

Я знаю, что вы сказали, что вы зарегистрированы в консоли разработчика, но вы включили бросание устройство для отправки своего серийного номера при проверке обновлений?

+0

Поскольку он использует приемник по умолчанию, нет необходимости регистрировать какие-либо устройства. –

Смежные вопросы