2

我想知道如何拦截来电并自动激活扬声器。我读到这个类是使用 com.android.internal.telephony 但我找不到合适的文档。谢谢你的帮助。

4

3 回答 3

2
private TelephonyManager telManager;

//on create method
telManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

        if (telManager != null) {
            telManager.listen(phoneStateListener,
                    PhoneStateListener.LISTEN_CALL_STATE);
        }


PhoneStateListener phoneStateListener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            if (state == TelephonyManager.CALL_STATE_RINGING) {

                onCall = true;


            } else if (state == TelephonyManager.CALL_STATE_IDLE) {

                onCall = false;

            } else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {

                onCall = true;
                //activate your loud speaker


            }
            super.onCallStateChanged(state, incomingNumber);
        }
    };
于 2011-10-25T10:33:55.090 回答
2

这是拦截来电的代码

PhoneStateListener mListner = new PhoneStateListener() {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {

                switch (state) {
                    case TelephonyManager.CALL_STATE_OFFHOOK:

                        // TODO
                        break;
                    case TelephonyManager.CALL_STATE_RINGING:

                        // TODO
                        break;
                    default:
                        break;
                }
            };
        };

激活扬声器

AudioManager POAudioService = (AudioManager) POContext.getContext().getSystemService(Context.AUDIO_SERVICE);
POAudioService.setSpeakerphoneOn(true);
于 2011-10-25T10:23:33.507 回答
1

所需权限:使用权限 android:name="android.permission.MODIFY_AUDIO_SETTINGS"

于 2012-02-12T19:45:15.807 回答