mirror of
https://github.com/zoriya/react-native-omni.git
synced 2026-08-04 21:26:48 +00:00
fix(cast): use modern cast menus
This commit is contained in:
@@ -151,7 +151,7 @@ dependencies {
|
||||
implementation("androidx.media3:media3-exoplayer-hls:1.10.0")
|
||||
|
||||
implementation("androidx.media3:media3-cast:1.10.0")
|
||||
implementation("com.google.android.gms:play-services-cast-framework:21.5.0")
|
||||
implementation("com.google.android.gms:play-services-cast-framework:22.3.1")
|
||||
implementation("androidx.mediarouter:mediarouter:1.7.0")
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ class OmniCastOptionsProvider : OptionsProvider {
|
||||
|
||||
return CastOptions.Builder()
|
||||
.setReceiverApplicationId(appId)
|
||||
.setShowSystemOutputSwitcherOnCastIconClick(true)
|
||||
.build()
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ import androidx.media3.session.DefaultMediaNotificationProvider
|
||||
import androidx.media3.session.MediaSession
|
||||
import androidx.media3.session.MediaSessionService
|
||||
import androidx.mediarouter.app.MediaRouteChooserDialog
|
||||
import androidx.mediarouter.app.SystemOutputSwitcherDialogController
|
||||
import com.google.android.gms.cast.framework.CastContext
|
||||
import com.google.android.gms.cast.framework.CastState
|
||||
import com.google.android.gms.cast.framework.CastStateListener
|
||||
@@ -147,6 +148,9 @@ class OmniPlayer(
|
||||
return@runOnMainThread
|
||||
}
|
||||
val activity = ctx.currentActivity ?: return@runOnMainThread
|
||||
if (SystemOutputSwitcherDialogController.showDialog(activity)) {
|
||||
return@runOnMainThread
|
||||
}
|
||||
val selector = cc.mergedSelector ?: return@runOnMainThread
|
||||
MediaRouteChooserDialog(activity).apply { routeSelector = selector }.show()
|
||||
}
|
||||
|
||||
@@ -28,5 +28,8 @@
|
||||
<meta-data
|
||||
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
|
||||
android:value="dev.zoriya.omni.OmniCastOptionsProvider" />
|
||||
<receiver
|
||||
android:name="androidx.mediarouter.media.MediaTransferReceiver"
|
||||
android:exported="true" />
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
@@ -7,6 +7,8 @@ import {
|
||||
const OPTIONS_PROVIDER_NAME =
|
||||
"com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME";
|
||||
const OPTIONS_PROVIDER_VALUE = "dev.zoriya.omni.OmniCastOptionsProvider";
|
||||
const MEDIA_TRANSFER_RECEIVER_NAME =
|
||||
"androidx.mediarouter.media.MediaTransferReceiver";
|
||||
|
||||
function patchManifestForCast(
|
||||
androidManifest: AndroidConfig.Manifest.AndroidManifest,
|
||||
@@ -36,6 +38,21 @@ function patchManifestForCast(
|
||||
}
|
||||
mainApplication["meta-data"] = metaData;
|
||||
|
||||
const receivers = mainApplication.receiver ?? [];
|
||||
if (
|
||||
!receivers.some(
|
||||
(item) => item.$["android:name"] === MEDIA_TRANSFER_RECEIVER_NAME,
|
||||
)
|
||||
) {
|
||||
receivers.push({
|
||||
$: {
|
||||
"android:name": MEDIA_TRANSFER_RECEIVER_NAME,
|
||||
"android:exported": "true",
|
||||
},
|
||||
});
|
||||
}
|
||||
mainApplication.receiver = receivers;
|
||||
|
||||
return androidManifest;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user