0

我有一部连接到 Linux 服务器的 Andorid 手机。我需要一个 bash 脚本来使用电话拨打号码并在接听电话时读出一个字符串。

我在 Linux 服务器上安装了 ADB,以下代码可以正常拨打号码:

adb shell am start -a android.intent.action.CALL -d tel:$phone_number
Starting: Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxx }

但是我不知道如何让它读取一个字符串然后断开呼叫。是否有针对 ADB/Android 的文本转语音可以帮助我?

4

3 回答 3

0

我的一个 adb 工具中有一个这样的功能,也许这会给你一个提示:

#!/bin/bash
LANDSCODE="+<landscode here>"

   trap ctrl_c INT

   function ctrl_c() {
           echo "Aborted call.."
           adb shell input keyevent KEYCODE_ENDCALL
           exit
   }

   read -p "Enter Number: $LANDSCODE" number
   if [[ -z $number ]]; then
      echo "You must enter a phone number, aborted.."
      exit      
   elif [[ $(echo $number | wc -c) -lt 7 ]]; then
      echo "This is not a real number, enter a real number.."
      exit
   else
   read -p "Do you want speaker on (y/n): " speaker
   case $speaker in
              "y") 
                   adb shell am start -a android.intent.action.CALL -d tel:$LANDSCODE$number &> /dev/null; 
                   sleep 2.0;
                   adb shell service call audio 20 i32 1 # does this really works on android oreo 8.0?
                     echo "Dialing +$LANDSCODE$number"
                     read -p "Press any key to end call"
                   adb shell input keyevent KEYCODE_ENDCALL
                     echo -e "Call ended"
                   adb shell input keyevent 6
                   exit 1 ;;
              "n") 
                   adb shell am start -a android.intent.action.CALL -d tel:$LANDSCODE$number &> /dev/null
                     echo -e "Dialing $LANDSCODE$number"
                   read -p "Press any key to end call"
                   adb shell input keyevent KEYCODE_ENDCALL
                     echo "Call ended"
                   adb shell input keyevent 6
                   exit 1 ;;
   esac
   fi
于 2019-07-12T11:40:57.213 回答
0

我发现由于 Android 的安全限制,在通话过程中几乎不可能播放语音。

于 2017-10-03T21:47:28.250 回答
0
adb shell input keyevent 6

此 adb 命令将挂断电话。试试这个命令。

于 2017-09-27T11:17:15.277 回答