我目前正在使用 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>
我也有同样的情况,你找到解决办法了吗?请帮忙:)