@@ -3,7 +3,7 @@ use tokio::process::Command;
33
44use crate :: {
55 config:: ConnectionMode ,
6- streamer:: { DEFAULT_PC_PORT , StreamerMsg , tcp_streamer} ,
6+ streamer:: { StreamerMsg , tcp_streamer} ,
77} ;
88
99use super :: {
@@ -15,8 +15,6 @@ pub struct AdbStreamer {
1515 tcp_streamer : TcpStreamer ,
1616}
1717
18- const ANDROID_REMOTE_PORT : u16 = 55555 ;
19-
2018async fn get_connected_devices ( ) -> Result < Vec < String > , ConnectError > {
2119 let mut cmd = Command :: new ( "adb" ) ;
2220 cmd. arg ( "devices" ) ;
@@ -35,13 +33,13 @@ async fn get_connected_devices() -> Result<Vec<String>, ConnectError> {
3533 Ok ( devices)
3634}
3735
38- async fn remove_adb_reverse_proxy ( device_id : & str ) -> Result < ( ) , ConnectError > {
36+ async fn remove_adb_reverse_proxy ( device_id : & str , port : u16 ) -> Result < ( ) , ConnectError > {
3937 let mut cmd = Command :: new ( "adb" ) ;
4038 cmd. arg ( "-s" )
4139 . arg ( device_id)
4240 . arg ( "reverse" )
4341 . arg ( "--remove" )
44- . arg ( format ! ( "tcp:{ANDROID_REMOTE_PORT}" ) ) ;
42+ . arg ( format ! ( "tcp:{}" , port ) ) ;
4543
4644 exec_cmd ( cmd) . await ?;
4745
@@ -67,25 +65,26 @@ async fn exec_cmd(mut cmd: Command) -> Result<String, ConnectError> {
6765 Ok ( stdout)
6866}
6967
70- pub async fn new ( stream_config : AudioStream ) -> Result < AdbStreamer , ConnectError > {
71- let tcp_streamer =
72- tcp_streamer:: new ( "127.0.0.1" . parse ( ) . unwrap ( ) , DEFAULT_PC_PORT , stream_config) . await ?;
68+ pub async fn new ( port : u16 , stream_config : AudioStream ) -> Result < AdbStreamer , ConnectError > {
69+ let tcp_streamer = tcp_streamer:: new ( "127.0.0.1" . parse ( ) . unwrap ( ) , port, stream_config) . await ?;
7370
7471 let devices = get_connected_devices ( ) . await ?;
7572 if devices. is_empty ( ) {
7673 return Err ( ConnectError :: NoAdbDevice ) ;
7774 }
7875
7976 for device_id in & devices {
80- if let Err ( e) = remove_adb_reverse_proxy ( device_id) . await {
81- warn ! ( "cannot remove adb proxy for device {device_id}: {e}" ) ;
77+ if let Err ( e) = remove_adb_reverse_proxy ( device_id, tcp_streamer. port ) . await {
78+ if !e. to_string ( ) . contains ( "not found" ) {
79+ warn ! ( "cannot remove adb proxy for device {device_id}: {e}" ) ;
80+ }
8281 }
8382
8483 let mut cmd = Command :: new ( "adb" ) ;
8584 cmd. arg ( "-s" )
8685 . arg ( device_id)
8786 . arg ( "reverse" )
88- . arg ( format ! ( "tcp:{ANDROID_REMOTE_PORT}" ) )
87+ . arg ( format ! ( "tcp:{}" , tcp_streamer . port ) )
8988 . arg ( format ! ( "tcp:{}" , tcp_streamer. port) ) ;
9089 exec_cmd ( cmd) . await ?;
9190 }
@@ -120,11 +119,12 @@ impl StreamerTrait for AdbStreamer {
120119
121120impl Drop for AdbStreamer {
122121 fn drop ( & mut self ) {
123- tokio:: task:: spawn_blocking ( || async {
124- let devices = get_connected_devices ( ) . await . unwrap_or_default ( ) ;
122+ let port = self . tcp_streamer . port ;
123+ tokio:: spawn ( async move {
124+ let devices: Vec < String > = get_connected_devices ( ) . await . unwrap_or_default ( ) ;
125125
126126 for device_id in devices {
127- if let Err ( e) = remove_adb_reverse_proxy ( & device_id) . await {
127+ if let Err ( e) = remove_adb_reverse_proxy ( & device_id, port ) . await {
128128 warn ! ( "cannot remove adb proxy for device {device_id}: {e}" ) ;
129129 }
130130 }
0 commit comments