Android Media Router没有发现设备

时间:2015-06-29 09:40:27

标签: android android-mediaplayer

我目前正在使用Androids Media Playback API。在遵循Android Developers | Media Router的开发人员指南后,我发现了可用的媒体路线,因此在操作栏中显示了投射按钮。

我旁边有一台电视机,可用于播放媒体播放,也可以通过YouTube或BubbleUPnP等其他应用程序发现。

可悲的是,Logcat只记录了我自己的设备路由的添加和选择。

我错过了什么或做错了吗?我试图避免使用chrome cast sdk - 让它尽可能简单。我还确保我只使用来自媒体路由器支持库的导入。

目前我正在使用一个扩展ActionBarActivity的活动。

...
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.MediaRouteActionProvider;
import android.support.v7.media.MediaControlIntent;
import android.support.v7.media.MediaRouteSelector;
import android.support.v7.media.MediaRouter;
...

public class MainActivity extends ActionBarActivity
{
    private MediaRouter mediaRouter;
    private MediaRouteSelector selector;
    private MediaRouter.Callback mediaRouterCallback =
        new MediaRouter.Callback()
        {
            @Override
            public void onRouteAdded(
                MediaRouter router,
                MediaRouter.RouteInfo route)
            {
                Log.d("MediaRouterCallback", "added route: " + route);
            }

            @Override
            public void onRouteSelected(
                MediaRouter router,
                MediaRouter.RouteInfo route)
            {
                Log.d("MediaRouterCallback", "selected route: " + route);
            }
        };

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

        mediaRouter = MediaRouter.getInstance(this);
        selector = new MediaRouteSelector.Builder().
            addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO).
            addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO).
            addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK).
            build();
    }

    @Override
    public void onStart()
    {
        mediaRouter.addCallback(
            selector,
            mediaRouterCallback,
            MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);

        super.onStart();
    }

    @Override
    public void onStop()
    {
        mediaRouter.removeCallback(mediaRouterCallback);

        super.onStop();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu_main, menu);

        MenuItem mediaRouteItem = menu.findItem(R.id.action_cast_media);

        MediaRouteActionProvider mediaRouteActionProvider =
            (MediaRouteActionProvider)MenuItemCompat.getActionProvider(
                mediaRouteItem);
        mediaRouteActionProvider.setRouteSelector(selector);

        return true;
    }
}

投射按钮来自我的资源文件menu_main。

<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

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

</menu>

0 个答案:

没有答案