在DcTracker的构造方法中注册了一些事件监听:

1.APN 数据库变化监听:

mApnObserver = new ApnChangeObserver();

phone.getContext().getContentResolver().registerContentObserver(
Telephony.Carriers.CONTENT_URI, true, mApnObserver);

当APN变化后通过mApnObserver来处理,并在其中发出消息 sendMessage(obtainMessage(DctConstants.EVENT_APN_CHANGED));

2.

IntentFilter filter = new IntentFilter();

filter.addAction(Intent.ACTION_SCREEN_ON);

filter.addAction(Intent.ACTION_SCREEN_OFF);

filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);

filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);

filter.addAction(INTENT_DATA_STALL_ALARM);

filter.addAction(INTENT_PROVISIONING_APN_ALARM);

mPhone.getContext().registerReceiver(mIntentReceiver, filter, null, mPhone);

3.

private void registerForAllEvents() {

    mPhone.mCi.registerForAvailable(this, DctConstants.EVENT_RADIO_AVAILABLE, null);

    mPhone.mCi.registerForOffOrNotAvailable(this,

            DctConstants.EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null\);

    mPhone.mCi.registerForDataNetworkStateChanged(this,

            DctConstants.EVENT_DATA_STATE_CHANGED, null);

    // Note, this is fragile - the Phone is now presenting a merged picture

    // of PS (volte) & CS and by diving into its internals you're just seeing

    // the CS data.  This works well for the purposes this is currently used for

    // but that may not always be the case.  Should probably be redesigned to

    // accurately reflect what we're really interested in (registerForCSVoiceCallEnded\).

    mPhone.getCallTracker().registerForVoiceCallEnded(this,

            DctConstants.EVENT_VOICE_CALL_ENDED, null);

    mPhone.getCallTracker().registerForVoiceCallStarted(this,

            DctConstants.EVENT_VOICE_CALL_STARTED, null);

    registerServiceStateTrackerEvents();

 //   SubscriptionManager.registerForDdsSwitch(this,

 //          DctConstants.EVENT_CLEAN_UP_ALL_CONNECTIONS, null);

    mPhone.mCi.registerForPcoData(this, DctConstants.EVENT_PCO_DATA_RECEIVED, null);

}

4.

private void registerSettingsObserver() {

    mSettingsObserver.unobserve();

    String simSuffix = "";

    if (TelephonyManager.getDefault().getSimCount() > 1) {

        simSuffix = Integer.toString(mPhone.getSubId());

    }

    mSettingsObserver.observe(

            Settings.Global.getUriFor(Settings.Global.DATA_ROAMING + simSuffix),

            DctConstants.EVENT_ROAMING_ON);

    mSettingsObserver.observe(

            Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED),

            DctConstants.EVENT_DEVICE_PROVISIONED_CHANGE);

    mSettingsObserver.observe(

            Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED),

            DctConstants.EVENT_DEVICE_PROVISIONED_CHANGE);

}

results matching ""

    No results matching ""