使用
MediaRouter
用于查找设备连接和设备类型的库
MediaRouter mediaRouter = MediaRouter.getInstance(WEYVCoreUtils.getApplicationContext());
MediaRouteSelector mediaRouteSelector = new MediaRouteSelector.Builder().addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO).build()
mediaRouter.addCallback(mediaRouteSelector, new MediaRouterCallback(), MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
public static class MediaRouterCallback extends MediaRouter.Callback {
/**
* Called when the supplied media route becomes selected as the active route.
*
* @param router The media router reporting the event.
* @param route The route that has been selected.
*/
public void onRouteSelected(MediaRouter router, RouteInfo route) {
}
/**
* Called when the supplied media route becomes unselected as the active route.
* For detailed reason, override {@link #onRouteUnselected(MediaRouter, RouteInfo, int)}
* instead.
*
* @param router The media router reporting the event.
* @param route The route that has been unselected.
*/
public void onRouteUnselected(MediaRouter router, RouteInfo route) {
}
/**
* Called when the supplied media route becomes unselected as the active route.
* The default implementation calls {@link #onRouteUnselected}.
* <p>
* The reason provided will be one of the following:
* <ul>
* <li>{@link MediaRouter#UNSELECT_REASON_UNKNOWN}</li>
* <li>{@link MediaRouter#UNSELECT_REASON_DISCONNECTED}</li>
* <li>{@link MediaRouter#UNSELECT_REASON_STOPPED}</li>
* <li>{@link MediaRouter#UNSELECT_REASON_ROUTE_CHANGED}</li>
* </ul>
*
* @param router The media router reporting the event.
* @param route The route that has been unselected.
* @param reason The reason for unselecting the route.
*/
public void onRouteUnselected(MediaRouter router, RouteInfo route, int reason) {
onRouteUnselected(router, route);
}
/**
* Called when a media route has been added.
*
* @param router The media router reporting the event.
* @param route The route that has become available for use.
*/
public void onRouteAdded(MediaRouter router, RouteInfo route) {
}
/**
* Called when a media route has been removed.
*
* @param router The media router reporting the event.
* @param route The route that has been removed from availability.
*/
public void onRouteRemoved(MediaRouter router, RouteInfo route) {
}
/**
* Called when a property of the indicated media route has changed.
*
* @param router The media router reporting the event.
* @param route The route that was changed.
*/
public void onRouteChanged(MediaRouter router, RouteInfo route) {
}
/**
* Called when a media route's volume changes.
*
* @param router The media router reporting the event.
* @param route The route whose volume changed.
*/
public void onRouteVolumeChanged(MediaRouter router, RouteInfo route) {
}
/**
* Called when a media route's presentation display changes.
* <p>
* This method is called whenever the route's presentation display becomes
* available, is removed or has changes to some of its properties (such as its size).
* </p>
*
* @param router The media router reporting the event.
* @param route The route whose presentation display changed.
*
* @see RouteInfo#getPresentationDisplay()
*/
public void onRoutePresentationDisplayChanged(MediaRouter router, RouteInfo route) {
}
/**
* Called when a media route provider has been added.
*
* @param router The media router reporting the event.
* @param provider The provider that has become available for use.
*/
public void onProviderAdded(MediaRouter router, ProviderInfo provider) {
}
/**
* Called when a media route provider has been removed.
*
* @param router The media router reporting the event.
* @param provider The provider that has been removed from availability.
*/
public void onProviderRemoved(MediaRouter router, ProviderInfo provider) {
}
/**
* Called when a property of the indicated media route provider has changed.
*
* @param router The media router reporting the event.
* @param provider The provider that was changed.
*/
public void onProviderChanged(MediaRouter router, ProviderInfo provider) {
}
}
当附近有新设备可用时,将调用上述回调
MediaRouter.RouteInfo
有足够的信息来找到它是什么类型的设备。