Creates the scripts.
This commit is contained in:
91
android-watch-scrcpy
Executable file
91
android-watch-scrcpy
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
|
||||
list_devices() {
|
||||
adb devices | awk '/(^[[:alnum:]]+[[:blank:]]+device$)/ {print $1}'
|
||||
}
|
||||
|
||||
first_device() {
|
||||
devices="$(adb devices | awk '/(^[[:alnum:]]+[[:blank:]]+device$)/ {print $1}')"
|
||||
if [ -z "$devices" ]
|
||||
then
|
||||
echo ""
|
||||
return
|
||||
else
|
||||
set -- "$devices"
|
||||
echo $1
|
||||
fi
|
||||
}
|
||||
|
||||
has_devices() {
|
||||
[ ! -z "$(list_devices)" ] && return
|
||||
false
|
||||
}
|
||||
|
||||
which adb >/dev/null 2>/dev/null
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo "ADB not installed or not located in $PATH" >&2
|
||||
exit 4
|
||||
fi
|
||||
|
||||
which scrcpy >/dev/null 2>/dev/null
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo "scrcpy not installed or not located in $PATH" >&2
|
||||
exit 4
|
||||
fi
|
||||
|
||||
declare -A serial_map
|
||||
declare -A bluetooth_map
|
||||
|
||||
while true
|
||||
do
|
||||
devices="$(list_devices)"
|
||||
while read serial;
|
||||
do
|
||||
if [ -z "$serial" ]
|
||||
then
|
||||
continue
|
||||
fi
|
||||
if [ -z "${serial_map[$serial]}" ]
|
||||
then
|
||||
echo "New device $serial connected" >&2
|
||||
scrcpy -s "$serial" &
|
||||
serial_map[$serial]=$!
|
||||
android-lock -u -s "$serial"
|
||||
# Link the phone to bluetooth as well.
|
||||
bluetooth_mac="$(adb -s "$serial" shell settings get secure bluetooth_address)"
|
||||
bluetoothctl devices | grep "$bluetooth_mac" >/dev/null 2>/dev/null
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
# Pair the devices
|
||||
bluetoothctl scan on
|
||||
adb -s "$serial" shell am start -a android.bluetooth.adapter.action.REQUEST_DISCOVERABLE
|
||||
sleep 1
|
||||
bluetoothctl pair "$bluetooth_mac"
|
||||
bluetoothctl scan off
|
||||
else
|
||||
adb -s "$serial" shell am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
|
||||
fi
|
||||
bluetoothctl connect "$bluetooth_mac"
|
||||
bluetooth_map[$serial]="$bluetooth_mac"
|
||||
fi
|
||||
done <<< "$devices"
|
||||
|
||||
# Check for devices that have disconnected.
|
||||
for serial in "${!serial_map[@]}"
|
||||
do
|
||||
adb -s "$serial" get-state >/dev/null 2>/dev/null
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
# The device has since been disconnected, and we should remove it.
|
||||
echo "Device $serial disconnected"
|
||||
kill "${serial_map[$serial]}"
|
||||
unset serial_map[$serial]
|
||||
echo "Disconnecting bluetooth ${bluetooth_map[$serial]}"
|
||||
bluetoothctl disconnect "${bluetooth_map[$serial]}"
|
||||
echo "Bluetooth disconnected"
|
||||
unset bluetooth_map[$serial]
|
||||
fi
|
||||
done
|
||||
done
|
||||
Reference in New Issue
Block a user