在Android中,在来电时,我想接听它。然后,从我的应用程序中,在通话期间自动播放音频文件,对方应该会听到。这可能吗?
问问题
31078 次
4 回答
14
你所说的对于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;
希望能帮助到你。一定要试试这个,告诉我经验。
于 2012-10-17T08:05:40.070 回答
4
您不能直接向呼叫者播放任何内容。如果你想通过扬声器播放,但这并不是你真正想要的。所以“不”,你不能那样做。
于 2012-10-17T08:08:37.373 回答
3
尝试使用电话管理器,它包含您正在寻找的事件:
于 2012-10-17T08:06:00.923 回答
1
在 android 中,没有选项可以播放实时通话或将音频源切换到默认麦克风以外的其他东西!以下是在实时通话期间无法播放录音的详细信息
不过也有一些技巧,
- 您可以在通话期间从移动扬声器播放所需的录音!麦克风会从那里接它吗?
- 或者您可以将免提扬声器线连接到其麦克风线
- 或使用其他设备的蓝牙播放所需的录音
于 2016-12-25T10:21:14.567 回答