アプリでV3バージョンを統合しています。キャストを開始したデバイスの通知コントロールとアプリロックコントロールが表示されません。私は他のデバイスから接続する場合、私はあなたを助けるためにおそらく少し遅れキャストコントロールがステータスバーに表示されず、V3のアプリロックが表示されない
public class CastOptionsProvider implements OptionsProvider {
public static final String CUSTOM_NAMESPACE = "urn:x-cast:com.test.cast.player";
// @Override
// public CastOptions getCastOptions(Context context) {
// List<String> supportedNamespaces = new ArrayList<>();
// supportedNamespaces.add(CUSTOM_NAMESPACE);
// CastOptions castOptions = new CastOptions.Builder()
// .setReceiverApplicationId(context.getString(R.string.app_id))
// .setSupportedNamespaces(supportedNamespaces)
// .build();
// return castOptions;
// }
@Override
public CastOptions getCastOptions(Context context) {
List<String> supportedNamespaces = new ArrayList<>();
supportedNamespaces.add(CUSTOM_NAMESPACE);
NotificationOptions notificationOptions = new NotificationOptions.Builder()
.setActions(Arrays.asList(MediaIntentReceiver.ACTION_SKIP_NEXT,
MediaIntentReceiver.ACTION_TOGGLE_PLAYBACK,
MediaIntentReceiver.ACTION_STOP_CASTING), new int[]{1, 2})
.setTargetActivityClassName(CustomExpandedControlsActivity.class.getName())
.build();
CastMediaOptions mediaOptions = new CastMediaOptions.Builder()
.setImagePicker(new ImagePickerImpl())
.setNotificationOptions(notificationOptions)
.setExpandedControllerActivityClassName(CustomExpandedControlsActivity.class.getName())
.build();
return new CastOptions.Builder()
.setReceiverApplicationId(context.getString(R.string.app_id))
//.setSupportedNamespaces(supportedNamespaces)
.setCastMediaOptions(mediaOptions)
.build();
}
@Override
public List<SessionProvider> getAdditionalSessionProviders(Context appContext) {
return null;
}
private static class ImagePickerImpl extends ImagePicker {
@Override
public WebImage onPickImage(MediaMetadata mediaMetadata, int type) {
if ((mediaMetadata == null) || !mediaMetadata.hasImages()) {
return null;
}
List<WebImage> images = mediaMetadata.getImages();
if (images.size() == 1) {
return images.get(0);
} else {
if (type == ImagePicker.IMAGE_TYPE_MEDIA_ROUTE_CONTROLLER_DIALOG_BACKGROUND) {
return images.get(0);
} else {
return images.get(1);
}
}
}
}
}
私は、メディア名前空間の監視に副作用があることも発見しました。再生コントロールを使用したダイアログでは、メディアがロードされていないことがわかり、コントロールが表示されず、通知とロック画面に再生コントロールが動作していました。メディア名前空間のコールバックを登録していないと、この問題が修正されたようです。メディアネームスペース自体を監視していたのか、それとも1つ以上のネームスペースを監視していたのかはわかりませんが、再生コントロールに問題があるかどうかは分かりません。 –