@@ -224,13 +224,15 @@ export function buildStreamTarget(
224224 udid : string ,
225225 options : {
226226 clientId ?: string ;
227+ platform ?: string ;
227228 remote ?: boolean ;
228229 streamConfig ?: StreamConfig ;
229230 transport ?: StreamTransport ;
230231 } = { } ,
231232) : StreamConnectTarget {
232233 return {
233234 clientId : options . clientId ,
235+ platform : options . platform ,
234236 remote : options . remote ,
235237 streamConfig : options . streamConfig ,
236238 transport : options . transport ,
@@ -2725,9 +2727,12 @@ export class StreamWorkerClient {
27252727 } ;
27262728}
27272729
2728- function preferredStreamBackend (
2730+ export function preferredStreamBackend (
27292731 target ?: StreamConnectTarget | null ,
27302732) : "auto" | StreamBackend {
2733+ if ( isAndroidStreamTarget ( target ) ) {
2734+ return "webrtc" ;
2735+ }
27312736 const value =
27322737 target ?. transport ??
27332738 new URLSearchParams ( window . location . search ) . get ( "stream" ) ;
@@ -2737,7 +2742,12 @@ function preferredStreamBackend(
27372742 return value === "webrtc" ? "webrtc" : "auto" ;
27382743}
27392744
2740- function initialStreamBackend ( target : StreamConnectTarget ) : StreamBackend {
2745+ export function initialStreamBackend (
2746+ target : StreamConnectTarget ,
2747+ ) : StreamBackend {
2748+ if ( isAndroidStreamTarget ( target ) ) {
2749+ return "webrtc" ;
2750+ }
27412751 const preferredBackend = preferredStreamBackend ( target ) ;
27422752 if ( preferredBackend === "h264-ws" ) {
27432753 return canUseH264WebSocket ( ) ? "h264-ws" : "webrtc" ;
@@ -2756,3 +2766,10 @@ function nextAutoFallbackBackend(
27562766 }
27572767 return null ;
27582768}
2769+
2770+ function isAndroidStreamTarget ( target ?: StreamConnectTarget | null ) : boolean {
2771+ return (
2772+ target ?. platform === "android-emulator" ||
2773+ Boolean ( target ?. udid . startsWith ( "android:" ) )
2774+ ) ;
2775+ }
0 commit comments