Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当Android设备位于同一wifi网络且在chrome cast范围之内/之外时,Android chrome cast无法获得回拨_Android_Google Chrome - Fatal编程技术网

当Android设备位于同一wifi网络且在chrome cast范围之内/之外时,Android chrome cast无法获得回拨

当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

我正试图在chrome cast的范围内管理cast按钮的可见性(根据范围和wifi n/w使可见性可见/消失)

Callback并非始终获得调用。无论何时从后台终止我的应用程序并重新启动它的get invoke,否则就不会被调用

我截取的代码如下

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;
            }
        }


}

我也陷入了这个问题。感谢您的帮助。提前谢谢。