【问题标题】:Android Loud speaker and call interceptionAndroid 扬声器和来电拦截
【发布时间】:2010-08-09 14:39:02
【问题描述】:

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

【问题讨论】:

    标签: android sdk telephony


    【解决方案1】:

    这是拦截来电的代码

    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);
    

    【讨论】:

    • 以上代码中,什么是POContext?这是您创建的课程吗?我尝试过类似的代码来使用 BroadCastReceiver 打开扬声器,但它不起作用。你能回答这个问题吗:stackoverflow.com/questions/8617381/…我已经在 Manifest 文件中授予了所有必要的权限。
    • POContext 是正常的上下文..我已将其定义为我自己的变量
    【解决方案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);
            }
        };
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        • 2015-01-02
        • 1970-01-01
        • 2012-08-27
        相关资源
        最近更新 更多