当Android设备位于同一wifi网络且在chrome cast范围之内/之外时,Android chrome cast无法获得回拨
我正试图在chrome cast的范围内管理cast按钮的可见性(根据范围和wifi n/w使可见性可见/消失) Callback并非始终获得调用。无论何时从后台终止我的应用程序并重新启动它的get invoke,否则就不会被调用 我截取的代码如下当Android设备位于同一wifi网络且在chrome cast范围之内/之外时,Android chrome cast无法获得回拨,android,google-chrome,Android,Google Chrome,我正试图在chrome cast的范围内管理cast按钮的可见性(根据范围和wifi n/w使可见性可见/消失) Callback并非始终获得调用。无论何时从后台终止我的应用程序并重新启动它的get invoke,否则就不会被调用 我截取的代码如下 public class MainActivity extends AppCompatActivity{ private MediaRouter.Callback mMediaRouterCallback; private MediaRouter
public class MainActivity extends AppCompatActivity{
private MediaRouter.Callback mMediaRouterCallback;
private MediaRouter mMediaRouter;
private MediaRouteSelector mMediaRouteSelector;
private MediaRouteButton mMediaRouteButton;
private int mRouteCount = 0;
private CastDevice mSelectedDevice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initChromeCast();
}
@Override
protected void onStart() {
super.onStart();
mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}
/**
* init chrome cast
*
* @param view
*/
protected void initChromeCast() {
CastButtonFactory.setUpMediaRouteButton(mContext.getApplicationContext(), (MediaRouteButton) view.findViewById(R.id.media_route_button));
int playServicesAvailable =
GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(mContext);
if (playServicesAvailable == ConnectionResult.SUCCESS) {
}
mMediaRouterCallback = new MediaRouterCallback();
mMediaRouter = MediaRouter.getInstance(mContext.getApplicationContext());
mMediaRouteSelector = new MediaRouteSelector.Builder()
.addControlCategory( CastMediaControlIntent.categoryForCast(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID)).build();
mMediaRouteButton = (MediaRouteButton)findViewById(R.id.media_route_button);
mMediaRouteButton.setRouteSelector(mMediaRouteSelector);
}
}
private class MediaRouterCallback extends MediaRouter.Callback {
@Override
public void onRouteAdded(MediaRouter router, MediaRouter.RouteInfo route) {
Log.d(TAG, "----onRouteAdded");
if (++mRouteCount == 1) {
mMediaRouteButton.setVisibility(View.VISIBLE);
}
}
@Override
public void onRouteRemoved(MediaRouter router, MediaRouter.RouteInfo route) {
Log.d(TAG, "----onRouteRemoved");
if (--mRouteCount == 0) {
// Hide the button if there are no devices discovered.
mMediaRouteButton.setVisibility(View.GONE);
mMediaRouteButton.setDrawingCacheBackgroundColor(ContextCompat.getColor(mContext,R.color.fb_button_color));
}
}
@Override
public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo info) {
Log.d(TAG, "----onRouteSelected");
mSelectedDevice = CastDevice.getFromBundle(info.getExtras());
// Just display a message for now; In a real app this would be the
// hook to connect to the selected device and launch the receiver
// app
}
@Override
public void onRouteUnselected(MediaRouter router, MediaRouter.RouteInfo info) {
Log.d(TAG, "----onRouteUnselected: info=" + info);
mSelectedDevice = null;
}
}
}
我也陷入了这个问题。感谢您的帮助。提前谢谢。