我目前正在使用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>