gpt4 book ai didi

android - 如何知道连接到 chromecast 的设备

转载 作者:行者123 更新时间:2023-11-29 17:19:10 25 4
gpt4 key购买 nike

我正在开发可以通过 remote display 将一些数据转换到 Chromecast 上的应用程序.在我的应用程序中,我可以有用户可以离开屏幕并在一段时间后再次返回那里的行为。但我必须知道该设备已连接到 Chromecast,因为应用必须以这种方式显示其他数据。下面两个类我用来连接到 Chromecast(只有这两个类,我不使用其他任何东西)。我想也许 MediaRouter 有一些关于连接的数据,但我没有找到任何东西。所以我的问题是,如何检测当前设备是否已连接到 chromecast&

ChromecastController.java

public class ChromecastController implements MediaRouterCallback.IChromecastCallback {

private MediaRouterCallback mMediaRouterCallback;
private MediaRouteSelector mMediaRouteSelector;
private MediaRouter mMediaRouter;

public void initMediaRouter(MediaRouteButton mediaRouteButton, FragmentActivity activity, MediaRouterCallback.IChromecastCallback callback) {
// Configure Cast device discovery
mMediaRouter = MediaRouter.getInstance(M2MAppImpl.getContext());
mMediaRouteSelector = new MediaRouteSelector.Builder()
.addControlCategory(
CastMediaControlIntent.categoryForCast(CAST_ID ) )
.build();
mediaRouteButton.setRouteSelector(mMediaRouteSelector);
mMediaRouterCallback = new MediaRouterCallback(activity, M2MApp.getContext());
}

public void onStart() {
mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);
}

public void onStop() {
mMediaRouter.removeCallback(mMediaRouterCallback);
}

}

MediaRouterCallback.java

public class MediaRouterCallback extends MediaRouter.Callback {

public static final String TAG = MediaRouterCallback.class.getName();

private CastDevice mSelectedDevice;
private FragmentActivity activity;
private Context mContext;

public MediaRouterCallback(FragmentActivity activity, Context context){
this.activity = activity;
mContext = context;
}

@Override
public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo info) {
Log.d(TAG, "onRouteSelected " + info.getName());

mSelectedDevice = CastDevice.getFromBundle( info.getExtras() );

Intent intent = new Intent(mContext,
activity.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent notificationPendingIntent = PendingIntent.getActivity(
mContext, 0, intent, 0);

CastRemoteDisplayLocalService.NotificationSettings settings =
new CastRemoteDisplayLocalService.NotificationSettings.Builder()
.setNotificationPendingIntent(notificationPendingIntent).build();

CastRemoteDisplayLocalService.startService(
M2MApp.getContext(),
PresentationService.class, ChromecastController.CAST_ID,
mSelectedDevice, settings,
new CastRemoteDisplayLocalService.Callbacks() {
@Override
public void onServiceCreated(CastRemoteDisplayLocalService castRemoteDisplayLocalService) {
Log.d(TAG, "CHROMECAST onServiceCreated");
}

@Override
public void onRemoteDisplaySessionStarted(
CastRemoteDisplayLocalService service) {
Log.d(TAG, "CHROMECAST onRemoteDisplaySessionStarted");
// initialize sender UI
}

@Override
public void onRemoteDisplaySessionError(
Status errorReason){
Log.d(TAG, "CHROMECAST onRemoteDisplaySessionError " + errorReason);
}
});
}

@Override
public void onRouteUnselected( MediaRouter router, MediaRouter.RouteInfo info ) {
Log.d(TAG, "onRouteUnselected " + info.getName());
}


}

最佳答案

检查 MediaRouter.RouteInfo你在 onRouteSelected 中得到的打回来。 getDeviceType() 应该是正确的方法。

关于android - 如何知道连接到 chromecast 的设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com