2012-10-17 2 views

risposta

10

Quello di cui stai parlando non è esattamente possibile con Android. Android non ha accesso al flusso audio in chiamata.

Anche se posso darti una piccola idea su come farlo.

prima di intercettare chiamate in arrivo, è necessario registrare un ricevitore di broadcast, che viene richiamato ogni volta chiamata viene ricevuta

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); 

cambiare anche la vostra manifesta,

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> 
    <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> 

Con questo, si può intercettare la chiamata in arrivo e scegliere la chiamata, ora è possibile provare a riprodurre alcuni file mp3 nel

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

Spero che aiuti. Deve provare questo e dimmi l'esperienza.

+0

OK sicuro cercherò di farvi sapere. –

+1

hai avuto fortuna con questo? – CasualT

+0

@CasualT Cosa vuoi? –

3

Non si può suonare qualsiasi cosa al chiamante direttamente. Se vuoi giocare con l'altoparlante, ma non è quello che vuoi. Quindi "no", non puoi farlo.

0

In Android non è possibile giocare contro una chiamata dal vivo o cambiare la sorgente audio in qualcosa di diverso dal microfono predefinito! qui ci sono dettagli che why you can't play recordings during a live call

Tuttavia ci sono alcuni trucchi,

  1. È possibile riprodurre la registrazione desiderata altoparlante mobile, durante una chiamata! un microfono lo prenderà da lì?
  2. Oppure si può collegare a fili handfree altoparlante al filo Mic
  3. Oppure utilizzare Bluetooh da un altro dispositivo per riprodurre la registrazione desiderata