接听电话时以编程方式激活扬声器

时间:2010-12-01 01:02:23

标签: android

嘿..我打算在我的应用程序中添加一个功能,当用户接到电话时会自动打开扬声器..

这是我的代码的一部分:

  case TelephonyManager.CALL_STATE_OFFHOOK:
              //CALL_STATE_OFFHOOK; 

              setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); 
               am.setMode(AudioManager.MODE_IN_CALL); 
               am.setSpeakerphoneOn(true);
          boolean check = am.isSpeakerphoneOn();
          Toast.makeText(Speaker.this, "LoudSpeaker On: "+ check,Toast.LENGTH_LONG).show();

并且我已经在清单中添加了MODIFY_AUDIO_SETTINGS的权限。但是扬声器电话没有设置为打开..可以任何人友好地帮助解决这个问题..提前谢谢......顺便说一下..这个应用程序是在Android 2.1中实现的

1 个答案:

答案 0 :(得分:2)

尝试在打开前保持500毫秒..

所以它会是这样的:

  case TelephonyManager.CALL_STATE_OFFHOOK:
        // CALL_STATE_OFFHOOK;
        try {
            Thread.sleep(500); // Delay 0,5 seconds to handle better turning on
                                // loudspeaker
        } catch (InterruptedException e) {
        }
        setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
        am.setMode(AudioManager.MODE_IN_CALL);
        am.setSpeakerphoneOn(true);
        boolean check = am.isSpeakerphoneOn();
        Toast.makeText(Speaker.this, "LoudSpeaker On: " + check,
                Toast.LENGTH_LONG).show();

btw我有Xperia 4.1.2,你的初始代码没有任何问题..