通过意图与扬声器开始通话

时间:2015-06-01 10:21:20

标签: android android-intent call

我有一项服务,当发生了什么事情时开始通话,但是我的问题是我怎么能用扬声器启动呢?(并在2分钟后移除扬声器?)

根据你所有的所有者,

此代码应该有效 -

                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:" + num));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_FROM_BACKGROUND);// (i'm starting the call from service..)
                startActivity(intent); //the call start here, work perfect
                AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
                audioManager.setMode(AudioManager.MODE_IN_CALL);
                audioManager.setSpeakerphoneOn(true);
好吧,它不起作用..为什么?

2 个答案:

答案 0 :(得分:2)

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);

一旦拨打电话,请使用此功能打开扬声器。

Premission

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

注册PhoneStateListener以了解何时接听电话。 当通话状态为TelephonyManager.CALL_STATE_OFFHOOK

时,发言人开启
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(false);
audioManager.setMode(AudioManager.MODE_NORMAL);

答案 1 :(得分:0)

使用AudioManager打开扬声器,使用CallStateListener检查通话是否结束。如果不是,请检查它是否持续两分钟。