Loading Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,10 @@ LOCAL_PROGUARD_ENABLED := optimization # Workaround for "local variable type mismatch" error. LOCAL_DX_FLAGS += --no-locals TELECOMM_SPAM_FILTER ?= $(LOCAL_PATH)/spam_filter include $(TELECOMM_SPAM_FILTER)/Android.mk include $(BUILD_PACKAGE) # Build the test package. Loading spam_filter/Android.mk 0 → 100644 +1 −0 Original line number Diff line number Diff line LOCAL_SRC_FILES += $(call all-java-files-under, spam_filter/src) spam_filter/src/com/android/server/telecom/SpamBlocker.java 0 → 100644 +19 −0 Original line number Diff line number Diff line package com.android.server.telecom; import android.content.Context; /** * Listens for call updates and records whether calls should be blocked based on * caller info results. Can also hang up calls while they are ringing, in case * they could not be blocked in time. */ public class SpamBlocker extends CallsManagerListenerBase { public SpamBlocker(Context context) { } public synchronized boolean shouldBlock(String number) { return false; } } src/com/android/server/telecom/CallsManager.java +13 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ public final class CallsManager extends Call.ListenerBase { void onVideoStateChanged(Call call); void onCallSubstateChanged(Call call); void onCanAddCallChanged(boolean canAddCall); void onProcessIncomingCall(Call call); } /** Loading Loading @@ -138,6 +139,7 @@ public final class CallsManager extends Call.ListenerBase { private final PhoneAccountRegistrar mPhoneAccountRegistrar; private final MissedCallNotifier mMissedCallNotifier; private final BlacklistCallNotifier mBlacklistCallNotifier; private final SpamBlocker mCallerInfoBlocker; private final Set<Call> mLocallyDisconnectingCalls = new HashSet<>(); private boolean mCanAddCall = true; Loading Loading @@ -202,6 +204,7 @@ public final class CallsManager extends Call.ListenerBase { mDtmfLocalTonePlayer = new DtmfLocalTonePlayer(context); mConnectionServiceRepository = new ConnectionServiceRepository(mPhoneAccountRegistrar, context); mCallerInfoBlocker = new SpamBlocker(context); mListeners.add(statusBarNotifier); mListeners.add(mCallLogManager); Loading @@ -216,6 +219,7 @@ public final class CallsManager extends Call.ListenerBase { mListeners.add(mHeadsetMediaButton); mListeners.add(RespondViaSmsManager.getInstance()); mListeners.add(mProximitySensorManager); mListeners.add(mCallerInfoBlocker); } @Override Loading Loading @@ -252,6 +256,12 @@ public final class CallsManager extends Call.ListenerBase { mCallLogManager.logCall(incomingCall, Calls.BLACKLIST_TYPE); incomingCall.setDisconnectCause( new DisconnectCause(android.telephony.DisconnectCause.CALL_BLACKLISTED)); } else if (mCallerInfoBlocker.shouldBlock(incomingCall.getNumber())) { // TODO: show notification for blocked spam calls // TODO: add unique call type for spam mCallLogManager.logCall(incomingCall, Calls.BLACKLIST_TYPE); incomingCall.setDisconnectCause( new DisconnectCause(android.telephony.DisconnectCause.CALL_BLACKLISTED)); } else { setCallState(incomingCall, CallState.RINGING); if (hasMaximumRingingCalls(incomingCall.getTargetPhoneAccount().getId())) { Loading Loading @@ -407,6 +417,9 @@ public final class CallsManager extends Call.ListenerBase { call.setExtras(extras); // TODO: Move this to be a part of addCall() call.addListener(this); for (CallsManagerListener listener : mListeners) { listener.onProcessIncomingCall(call); } call.startCreateConnection(mPhoneAccountRegistrar); } Loading src/com/android/server/telecom/CallsManagerListenerBase.java +4 −0 Original line number Diff line number Diff line Loading @@ -84,4 +84,8 @@ class CallsManagerListenerBase implements CallsManager.CallsManagerListener { @Override public void onCanAddCallChanged(boolean canAddCall) { } @Override public void onProcessIncomingCall(Call call) { } } Loading
Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,10 @@ LOCAL_PROGUARD_ENABLED := optimization # Workaround for "local variable type mismatch" error. LOCAL_DX_FLAGS += --no-locals TELECOMM_SPAM_FILTER ?= $(LOCAL_PATH)/spam_filter include $(TELECOMM_SPAM_FILTER)/Android.mk include $(BUILD_PACKAGE) # Build the test package. Loading
spam_filter/Android.mk 0 → 100644 +1 −0 Original line number Diff line number Diff line LOCAL_SRC_FILES += $(call all-java-files-under, spam_filter/src)
spam_filter/src/com/android/server/telecom/SpamBlocker.java 0 → 100644 +19 −0 Original line number Diff line number Diff line package com.android.server.telecom; import android.content.Context; /** * Listens for call updates and records whether calls should be blocked based on * caller info results. Can also hang up calls while they are ringing, in case * they could not be blocked in time. */ public class SpamBlocker extends CallsManagerListenerBase { public SpamBlocker(Context context) { } public synchronized boolean shouldBlock(String number) { return false; } }
src/com/android/server/telecom/CallsManager.java +13 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ public final class CallsManager extends Call.ListenerBase { void onVideoStateChanged(Call call); void onCallSubstateChanged(Call call); void onCanAddCallChanged(boolean canAddCall); void onProcessIncomingCall(Call call); } /** Loading Loading @@ -138,6 +139,7 @@ public final class CallsManager extends Call.ListenerBase { private final PhoneAccountRegistrar mPhoneAccountRegistrar; private final MissedCallNotifier mMissedCallNotifier; private final BlacklistCallNotifier mBlacklistCallNotifier; private final SpamBlocker mCallerInfoBlocker; private final Set<Call> mLocallyDisconnectingCalls = new HashSet<>(); private boolean mCanAddCall = true; Loading Loading @@ -202,6 +204,7 @@ public final class CallsManager extends Call.ListenerBase { mDtmfLocalTonePlayer = new DtmfLocalTonePlayer(context); mConnectionServiceRepository = new ConnectionServiceRepository(mPhoneAccountRegistrar, context); mCallerInfoBlocker = new SpamBlocker(context); mListeners.add(statusBarNotifier); mListeners.add(mCallLogManager); Loading @@ -216,6 +219,7 @@ public final class CallsManager extends Call.ListenerBase { mListeners.add(mHeadsetMediaButton); mListeners.add(RespondViaSmsManager.getInstance()); mListeners.add(mProximitySensorManager); mListeners.add(mCallerInfoBlocker); } @Override Loading Loading @@ -252,6 +256,12 @@ public final class CallsManager extends Call.ListenerBase { mCallLogManager.logCall(incomingCall, Calls.BLACKLIST_TYPE); incomingCall.setDisconnectCause( new DisconnectCause(android.telephony.DisconnectCause.CALL_BLACKLISTED)); } else if (mCallerInfoBlocker.shouldBlock(incomingCall.getNumber())) { // TODO: show notification for blocked spam calls // TODO: add unique call type for spam mCallLogManager.logCall(incomingCall, Calls.BLACKLIST_TYPE); incomingCall.setDisconnectCause( new DisconnectCause(android.telephony.DisconnectCause.CALL_BLACKLISTED)); } else { setCallState(incomingCall, CallState.RINGING); if (hasMaximumRingingCalls(incomingCall.getTargetPhoneAccount().getId())) { Loading Loading @@ -407,6 +417,9 @@ public final class CallsManager extends Call.ListenerBase { call.setExtras(extras); // TODO: Move this to be a part of addCall() call.addListener(this); for (CallsManagerListener listener : mListeners) { listener.onProcessIncomingCall(call); } call.startCreateConnection(mPhoneAccountRegistrar); } Loading
src/com/android/server/telecom/CallsManagerListenerBase.java +4 −0 Original line number Diff line number Diff line Loading @@ -84,4 +84,8 @@ class CallsManagerListenerBase implements CallsManager.CallsManagerListener { @Override public void onCanAddCallChanged(boolean canAddCall) { } @Override public void onProcessIncomingCall(Call call) { } }