Android 媒体路由器未发现设备

问题描述 投票:0回答:1

我目前正在使用 Android 媒体播放 API。遵循 Android 开发者 | 的开发者指南后媒体路由器 我在发现可用媒体路由时陷入困境,因此使操作栏中的投射按钮可见。

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

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

我是否遗漏了什么或做错了什么?我试图避免使用 chromecast 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>
android android-mediaplayer
1个回答
0
投票

我也有同样的情况,你找到解决办法了吗?请帮忙:)

© www.soinside.com 2019 - 2024. All rights reserved.