从服务中设置扬声器不会产生预期的结果

时间:2014-03-12 05:58:29

标签: android android-intent android-audiomanager

我正试图在我的应用中通过我的服务拨打特定号码。我可以使用下面的代码成功地做到这一点。

AudioManager audioManager = (AudioManager)  
                                  getSystemService(Context.AUDIO_SERVICE);                 

audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);

然后我使用以下代码调出我的号码

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + "1234"));
callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(callIntent);

但有时它不会设置扬声器。

我对我的清单有适当的许可

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

我从某个地方学到了我需要添加的东西 setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); 这是活动的,但因为我在服务,我不想打开我的活动,我怎么能有效地完成我的任务。

1 个答案:

答案 0 :(得分:0)

我一直缺少的是我认为的上下文,就像我从我的服务中调用AudioManager服务一样,而不是我试图从侦听action.PHONE_STATE的广播接收器调用这些服务。因此,当我尝试拨号时,Telephony Manager的状态更改为EXTRA_STATE_OFFHOOK,然后我更改为audioManager.setSpeakerphoneOn(true),这似乎适用于每个呼叫。

全部谢谢!!!