【问题标题】:Making voice calls from Android phone connected to Linux从连接到 Linux 的 Android 手机拨打语音电话
【发布时间】:2023-03-31 14:00:02
【问题描述】:

我有一部连接到 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 的文本转语音可以帮助我?

【问题讨论】:

    标签: android linux adb android-phone-call


    【解决方案1】:
    adb shell input keyevent 6
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我的一个 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多