web-dev-qa-db-ja.com

Android:着信コールの自動応答、オーディオファイルの再生

Androidで着信時に受信したいのですが。次に、私のアプリから、通話中に音声ファイルを自動的に再生し、相手はそれを聞く必要があります。これは可能ですか?

22
Md Maidul Islam

あなたが話していることは、Androidでは正確には不可能です。 Androidは通話中のオーディオストリームにアクセスできません。

私はあなたにそれを行う方法について少し考えを与えることができますが。

最初に着信コールを傍受するには、ブロードキャストレシーバーを登録する必要があります。ブロードキャストレシーバーは、コールが受信されるたびに呼び出されます

public void onReceive(final Context context, Intent intent) 
{
    TelephonyManager telephonyManager = null;
    PhoneStateListener listener = new PhoneStateListener() 
    {
        public void onCallStateChanged(int state, String incomingNumber) 
        {
            switch (state) 
            {
            case TelephonyManager.CALL_STATE_IDLE:
                Toast.makeText(context, "Call Ended..", Toast.LENGTH_LONG).show();
                Log.i("stop", "Call Ended....");
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                Toast.makeText(context, "Call Picked..", Toast.LENGTH_LONG) .show();
                Log.i("received", "Call Picked....");
                break;
            case TelephonyManager.CALL_STATE_RINGING:
                Toast.makeText(context, "Call Ringing.." + incomingNumber,5000).show();
                break;
            }
        }
    };
    // Register the listener with the telephony manager
    telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);

マニフェストも変更します

<uses-permission Android:name="Android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission Android:name="Android.permission.READ_PHONE_STATE"></uses-permission>
    <application
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name" >
        <receiver Android:name="MyReceiver">

            <intent-filter>

                <action Android:name="Android.intent.action.NEW_OUTGOING_CALL" />



            </intent-filter>
        </receiver>
    </application>

これにより、着信コールをインターセプトしてコールを選択できます。これで、mp3ファイルを

case TelephonyManager.CALL_STATE_OFFHOOK:
                // Play mp3 file here
                break;

それが役に立てば幸い。これを試して、経験を教えてください。

12

発信者に対して直接何かを再生することはできません。スピーカーを介して演奏したい場合でも、それは実際に望んでいることではありません。だから「いいえ」、それはできません。

3
Marcin Orlowski

Telephonymanagerを使用してみてください。探しているイベントが含まれています。

  1. http://developer.Android.com/reference/Android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED
2
Tobrun

Androidでは、ライブコールに対して再生したり、オーディオソースをデフォルトのマイク以外のものに切り替えたりするオプションはありません!以下に詳細を示します ライブ中に録音を再生できない理由呼び出し

しかし、いくつかのトリックがあります、

  1. 通話中、モバイルスピーカーからお好みの録音を再生できます!マイクはそこからそれを選びますか?
  2. または、ハンズフリースピーカーワイヤーをマイクワイヤーに相互接続できます
  3. または、他のデバイスからbluetoohを使用して、目的の録音を再生します
0
Nasir Iqbal