2014-02-23 42 views
1

以下是我的代碼在主要活動爲什麼我的MediaRouteButton無法找到任何投射設備?

public class MainActivity extends ActionBarActivity{ 
private MediaRouteButton mMediaRouteButton; 
private MediaRouteSelector mMediaRouteSelector; 
private MediaRouter mMediaRouter; 
private CastDevice mSelectedDevice; 
private MyMediaRouterCallback mMediaRouterCallback; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if(this.checkGooglePlaySevices(this)) 
     Log.v("cc5zhenhua","googleplayservice okay"); 
    else 
    { 
     Log.v("cc5zhenhua","googleplayservice not ok"); 
     //GooglePlayServicesUtil.getErrorDialog(0, this, 0).show(); 
    } 
    //initialize media cast objects 
    mMediaRouter=MediaRouter.getInstance(getApplicationContext());  
    mMediaRouteSelector=new MediaRouteSelector.Builder() 
    .addControlCategory(CastMediaControlIntent.CATEGORY_CAST).build();  
    mMediaRouterCallback= new MyMediaRouterCallback(); 
    mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback);  
} 

public void onStart() { 
    super.onStart(); 
    mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback 
      ); 
    MediaRouter.RouteInfo route = mMediaRouter.updateSelectedRoute(mMediaRouteSelector); 
    // do something with the route... 
} 
@Override 
protected void onResume() 
{ 
    super.onResume(); 
    mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    super.onCreateOptionsMenu(menu); 

    //mMediaRouteButton.setRouteSelector(mMediaRouteSelector); 
    return true; 
} 
@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    getMenuInflater().inflate(R.menu.main, menu); 
    MenuItem mediaRouteItem = menu.findItem(R.id.action_mediaroute01); 
    MediaRouteActionProvider mediaRouteActionProvider = 
      (MediaRouteActionProvider)MenuItemCompat.getActionProvider(
        mediaRouteItem); 
    mediaRouteActionProvider.setRouteSelector(mMediaRouteSelector); 
    mMediaRouteButton = (MediaRouteButton) mediaRouteItem.getActionView(); 
    return true;} 

public boolean checkGooglePlaySevices(final Activity activity) { 
     final int googlePlayServicesCheck = GooglePlayServicesUtil.isGooglePlayServicesAvailable(
       activity); 
     switch (googlePlayServicesCheck) { 
      case ConnectionResult.SUCCESS: 
       return true; 
      default: 
       Log.v("cc5zhenhua","test");   } 
     return false; 
} 
private class MyMediaRouterCallback extends MediaRouter.Callback 
{ 
    @Override 
    public void onRouteSelected(MediaRouter router, RouteInfo info) { 
    mSelectedDevice = CastDevice.getFromBundle(info.getExtras()); 
    String routeId = info.getId(); 
    Log.v("cc5zhenhua", "MainActivity.onRouteSelected");   
    } 
    @Override 
    public void onRouteUnselected(MediaRouter router, RouteInfo info) { 
    //teardown(); 
    mSelectedDevice = null; 
    } 
} 

}

有沒有生成錯誤。但是,當我運行主要活動時,媒體路線按鈕根本無法點擊。請告知我錯過了哪些地方?謝謝!

在發佈新SDK之前,我的chromecast被白名單註冊了APPID。 我無法將該appID用於控件類別,它會引發無效的appID異常。

我的投射設備也可用於我的電腦中的chromecast擴展。

回答

0

最後得到問題點。只是因爲我的最後一個使用舊版googlecast sdk的應用程序適用於AVD,所以我專注於我的代碼和新的SDK設置。但是,當我在真實手機上部署應用程序時,可以找到媒體路徑。感謝阿里的善意和幫助。

1

您需要通過添加回調開始掃描:

mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback, MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);

如果你已經這樣做了,忘了提,在您的文章,那麼你需要註冊您的應用程序和設備上的開發者安慰。那麼你的問題很可能是由於你的設備的白名單;嘗試從Chrome瀏覽器http://<chromecast-ip>:9222連接到您的設備,如果您不能,那麼您的設備未被列入白名單;按照post中的步驟進行故障排除

+0

謝謝。我有一個問題: mMediaRouter和mMediaRouteButton似乎不相關,即使我添加回調到mMediaRouter,如何使mMediaRouteButton可用? 我錯過了相關的mMediaRouter到mMediaRouteButton的配置嗎? – cc5zhenhua

+0

我可以訪問chromecast調試頁面http:// [chromecastip]:9222。 – cc5zhenhua

+1

MediaRouter和MediaRouterButton在內部是相關的,因爲按鈕的行爲由MediaRouter框架管理。一般而言,最簡單的方法是使用MediaRouteActionProvider。如果你可以使用它,建議這樣做;我們的github回購中有許多樣本使用該樣本。正如我前面提到的那樣添加回調會啓動投射設備的(mDNS)掃描並使用您的選擇器標準,它會嘗試查找可用候選項,如果您單擊投射按鈕將顯示可用候選項,無論您採取兩種方法中的哪一種。 –

相關問題