diff options
author | Brint E. Kriebel <bekit@cyngn.com> | 2014-11-18 13:51:06 -0800 |
---|---|---|
committer | Brint E. Kriebel <bekit@cyngn.com> | 2014-11-18 13:51:06 -0800 |
commit | 013580b3dba8f09fa6ed655223c82f4ef58058d9 (patch) | |
tree | 8b147133f08188283cef9f65a6c66de22bc6bed6 | |
parent | 24e2e37649d7e1dccac97e659cf9853b3a45c61e (diff) | |
parent | ff8ad3a3d0ba5f49eea78564be1a50aabc689d66 (diff) | |
download | android_packages_apps_Dialer-013580b3dba8f09fa6ed655223c82f4ef58058d9.tar.gz android_packages_apps_Dialer-013580b3dba8f09fa6ed655223c82f4ef58058d9.tar.bz2 android_packages_apps_Dialer-013580b3dba8f09fa6ed655223c82f4ef58058d9.zip |
Merge branch 'cm-11.0' into stable/cm-11.0
-rw-r--r-- | res/menu/call_details_options.xml | 2 | ||||
-rw-r--r-- | res/menu/call_stats_details_options.xml | 2 | ||||
-rw-r--r-- | res/values/cm_strings.xml | 2 | ||||
-rw-r--r-- | res/values/config.xml | 1 | ||||
-rwxr-xr-x | src/com/android/dialer/CallDetailActivity.java | 29 | ||||
-rw-r--r-- | src/com/android/dialer/DialerApplication.java | 5 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogFragment.java | 13 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/ContactInfoHelper.java | 17 | ||||
-rw-r--r-- | src/com/android/dialer/callstats/CallStatsDetailActivity.java | 28 | ||||
-rw-r--r-- | src/com/android/dialer/dialpad/DialpadFragment.java | 14 | ||||
-rw-r--r-- | src/com/android/services/callrecorder/CallRecorderService.java | 41 |
11 files changed, 133 insertions, 21 deletions
diff --git a/res/menu/call_details_options.xml b/res/menu/call_details_options.xml index b34fc5c09..c3fee5a92 100644 --- a/res/menu/call_details_options.xml +++ b/res/menu/call_details_options.xml @@ -39,6 +39,6 @@ <item android:id="@+id/menu_add_to_blacklist" android:title="@string/menu_add_to_blacklist" - android:onClick="onMenuAddToBlacklist" + android:onClick="onMenuBlacklist" /> </menu> diff --git a/res/menu/call_stats_details_options.xml b/res/menu/call_stats_details_options.xml index c16db3315..c89611b7b 100644 --- a/res/menu/call_stats_details_options.xml +++ b/res/menu/call_stats_details_options.xml @@ -22,6 +22,6 @@ <item android:id="@+id/menu_add_to_blacklist" android:title="@string/menu_add_to_blacklist" - android:onClick="onMenuAddToBlacklist" + android:onClick="onMenuBlacklist" /> </menu> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 4df61589b..19a55b94a 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -48,6 +48,8 @@ <string name="menu_add_to_blacklist">Add to blacklist</string> <string name="toast_added_to_blacklist"><xliff:g id="number">%s</xliff:g> added to blacklist</string> + <string name="menu_delete_from_blacklist">Delete from blacklist</string> + <string name="toast_deleted_from_blacklist"><xliff:g id="number">%s</xliff:g> deleted from blacklist</string> <!-- Forward lookup --> <string name="nearby_places">Nearby places</string> diff --git a/res/values/config.xml b/res/values/config.xml index 318916dfa..87a074bd4 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -17,5 +17,6 @@ <resources> <bool name="call_recording_enabled">false</bool> <integer name="call_recording_audio_source">1</integer> + <integer name="call_recording_audio_encoder">0</integer> <bool name="call_durationtype_enabled">false</bool> </resources> diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java index 97fafc1f5..711b616bd 100755 --- a/src/com/android/dialer/CallDetailActivity.java +++ b/src/com/android/dialer/CallDetailActivity.java @@ -70,6 +70,7 @@ import com.android.dialer.voicemail.VoicemailStatusHelper.StatusMessage; import com.android.dialer.voicemail.VoicemailStatusHelperImpl; import com.android.services.callrecorder.CallRecordingDataStore; import com.android.internal.telephony.MSimConstants; +import com.android.internal.telephony.util.BlacklistUtils; import java.util.List; @@ -142,6 +143,9 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware private CallRecordingDataStore mCallRecordingDataStore = new CallRecordingDataStore(); private CallRecordingPlayer mCallRecordingPlayer = new CallRecordingPlayer(); + private MenuItem mBlackListItem; + private boolean mBlackListed; + /** Listener to changes in the proximity sensor state. */ private class ProximitySensorListener implements ProximitySensorManager.Listener { /** Used to show a blank view and hide the action bar. */ @@ -589,10 +593,25 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware menu.findItem(R.id.menu_calllog_detail_video_call).setVisible(mCallDetailHeader.hasVideoCallOption()); menu.findItem(R.id.menu_remove_from_call_log).setVisible(mHasRemoveFromCallLogOption); menu.findItem(R.id.menu_edit_number_before_call).setVisible(mHasEditNumberBeforeCallOption); - menu.findItem(R.id.menu_add_to_blacklist).setVisible(mHasAddToBlacklistOption); + mBlackListItem = menu.findItem(R.id.menu_add_to_blacklist); + updateBlacklistItem(); menu.findItem(R.id.menu_trash).setVisible(mHasTrashOption); return super.onPrepareOptionsMenu(menu); } + + private void updateBlacklistItem() { + int isBlacklisted = BlacklistUtils.isListed(this, mNumber, BlacklistUtils.BLOCK_CALLS); + mBlackListed = isBlacklisted != BlacklistUtils.MATCH_NONE; + System.out.println("Blacklisted " + mBlackListed); + mBlackListItem.setVisible(mHasAddToBlacklistOption); + + int blacklistTitleId = R.string.menu_add_to_blacklist; + if (mBlackListed) { + blacklistTitleId = R.string.menu_delete_from_blacklist; + } + mBlackListItem.setTitle(blacklistTitleId); + } + public void onMenuVTCall(MenuItem menuItem) { startActivity(CallDetailHeader.getVTCallIntent(mNumber)); } @@ -625,8 +644,12 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware startActivity(new Intent(Intent.ACTION_DIAL, CallUtil.getCallUri(mNumber))); } - public void onMenuAddToBlacklist(MenuItem menuItem) { - mContactInfoHelper.addNumberToBlacklist(mNumber); + public void onMenuBlacklist(MenuItem menuItem) { + if (mBlackListed) { + mContactInfoHelper.removeNumberFromBlacklist(mNumber); + } else { + mContactInfoHelper.addNumberToBlacklist(mNumber); + } } public void onMenuTrashVoicemail(MenuItem menuItem) { diff --git a/src/com/android/dialer/DialerApplication.java b/src/com/android/dialer/DialerApplication.java index 41e6717f2..39e72c569 100644 --- a/src/com/android/dialer/DialerApplication.java +++ b/src/com/android/dialer/DialerApplication.java @@ -3,6 +3,7 @@ package com.android.dialer; import android.app.Application; +import android.os.SystemProperties; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.extensions.ExtensionsFactory; @@ -29,4 +30,8 @@ public class DialerApplication extends Application { return super.getSystemService(name); } + + public static boolean isIPCallEnabled() { + return SystemProperties.getBoolean("persist.radio.ipcall.enabled", false); + } } diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java index dc3dfd434..00a25d6e7 100644 --- a/src/com/android/dialer/calllog/CallLogFragment.java +++ b/src/com/android/dialer/calllog/CallLogFragment.java @@ -32,6 +32,7 @@ import android.provider.CallLog.Calls; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Intents.Insert; +import android.provider.Settings; import android.telephony.PhoneNumberUtils; import android.telephony.TelephonyManager; import android.view.ContextMenu; @@ -50,6 +51,7 @@ import com.android.common.io.MoreCloseables; import com.android.contacts.common.CallUtil; import com.android.contacts.common.GeoUtil; import com.android.contacts.common.MoreContactUtils; +import com.android.dialer.DialerApplication; import com.android.dialer.R; import com.android.dialer.util.EmptyLoader; import com.android.dialer.voicemail.VoicemailStatusHelper; @@ -287,22 +289,27 @@ public class CallLogFragment extends ListFragment final MenuItem editBeforeCallMenuItem = menu.findItem(R.id.menu_edit_before_call); final MenuItem sendTextMessageMenuItem = menu.findItem(R.id.menu_send_text_message); final MenuItem addToContactMenuItem = menu.findItem(R.id.menu_add_to_contacts); - + final boolean isIPPrefixEnabled = + DialerApplication.isIPCallEnabled(); AdapterView.AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; mNumber = getValidCallLogNumber(info.position); menu.setHeaderTitle(mNumber); - if (MoreContactUtils.isMultiSimEnable(mContext, MSimConstants.SUB1)) { + if (isIPPrefixEnabled && MoreContactUtils.isMultiSimEnable(mContext, MSimConstants.SUB1)) { String sub1Name = MoreContactUtils.getSimSpnName(MSimConstants.SUB1); + sub1Name = Settings.Global.getSimNameForSubscription(getActivity(), + MSimConstants.SUB1, sub1Name); ipCallBySlot1MenuItem.setTitle(getActivity().getString( com.android.contacts.common.R.string.ip_call_by_slot, sub1Name)); ipCallBySlot1MenuItem.setVisible(true); } else { ipCallBySlot1MenuItem.setVisible(false); } - if (MoreContactUtils.isMultiSimEnable(mContext, MSimConstants.SUB2)) { + if (isIPPrefixEnabled && MoreContactUtils.isMultiSimEnable(mContext, MSimConstants.SUB2)) { String sub2Name = MoreContactUtils.getSimSpnName(MSimConstants.SUB2); + sub2Name = Settings.Global.getSimNameForSubscription(getActivity(), + MSimConstants.SUB2, sub2Name); ipCallBySlot2MenuItem.setTitle(getActivity().getString( com.android.contacts.common.R.string.ip_call_by_slot, sub2Name)); ipCallBySlot2MenuItem.setVisible(true); diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java index b5f76c15b..2a38f7dfc 100644 --- a/src/com/android/dialer/calllog/ContactInfoHelper.java +++ b/src/com/android/dialer/calllog/ContactInfoHelper.java @@ -36,6 +36,7 @@ import com.android.dialer.lookup.LookupCache; import com.android.dialer.service.CachedNumberLookupService; import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo; import com.android.dialerbind.ObjectFactory; +import com.android.i18n.phonenumbers.PhoneNumberUtil; import com.android.internal.telephony.util.BlacklistUtils; import org.json.JSONException; @@ -281,6 +282,7 @@ public class ContactInfoHelper { * @param number the number to be blacklisted */ public void addNumberToBlacklist(String number) { + number = PhoneNumberUtil.getInstance().stripExtension(number); if (BlacklistUtils.addOrUpdate(mContext, number, BlacklistUtils.BLOCK_CALLS, BlacklistUtils.BLOCK_CALLS)) { // Give the user some feedback @@ -290,6 +292,21 @@ public class ContactInfoHelper { } /** + * Requests the given number to be added to the phone blacklist + * + * @param number the number to be blacklisted + */ + public void removeNumberFromBlacklist(String number) { + number = PhoneNumberUtil.getInstance().stripExtension(number); + if (BlacklistUtils.addOrUpdate(mContext, number, + BlacklistUtils.MATCH_NONE, BlacklistUtils.BLOCK_CALLS)) { + // Give the user some feedback + String message = mContext.getString(R.string.toast_deleted_from_blacklist, number); + Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); + } + } + + /** * Parses the given URI to determine the original lookup key of the contact. */ public static String getLookupKeyFromUri(Uri lookupUri) { diff --git a/src/com/android/dialer/callstats/CallStatsDetailActivity.java b/src/com/android/dialer/callstats/CallStatsDetailActivity.java index d35610c0e..43073aa48 100644 --- a/src/com/android/dialer/callstats/CallStatsDetailActivity.java +++ b/src/com/android/dialer/callstats/CallStatsDetailActivity.java @@ -42,6 +42,7 @@ import com.android.dialer.calllog.ContactInfoHelper; import com.android.dialer.calllog.PhoneNumberDisplayHelper; import com.android.dialer.calllog.PhoneNumberUtilsWrapper; import com.android.dialer.widget.PieChartView; +import com.android.internal.telephony.util.BlacklistUtils; /** * Activity to display detailed information about a callstat item @@ -75,6 +76,8 @@ public class CallStatsDetailActivity extends Activity { private CallStatsDetails mData; private String mNumber = null; + private MenuItem mBlackListItem; + private boolean mBlackListed; private class UpdateContactTask extends AsyncTask<String, Void, ContactInfo> { protected ContactInfo doInBackground(String... strings) { @@ -259,11 +262,24 @@ public class CallStatsDetailActivity extends Activity { public boolean onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.menu_edit_number_before_call).setVisible( mCallDetailHeader.canEditNumberBeforeCall()); - menu.findItem(R.id.menu_add_to_blacklist).setVisible( - mCallDetailHeader.canPlaceCallsTo()); + mBlackListItem = menu.findItem(R.id.menu_add_to_blacklist); + updateBlacklistItem(); + return super.onPrepareOptionsMenu(menu); } + private void updateBlacklistItem() { + int isBlacklisted = BlacklistUtils.isListed(this, mNumber, BlacklistUtils.BLOCK_CALLS); + mBlackListed = isBlacklisted != BlacklistUtils.MATCH_NONE; + System.out.println("Blacklisted " + mBlackListed); + mBlackListItem.setVisible(mCallDetailHeader.canPlaceCallsTo()); + int blacklistTitleId = R.string.menu_add_to_blacklist; + if (mBlackListed) { + blacklistTitleId = R.string.menu_delete_from_blacklist; + } + mBlackListItem.setTitle(blacklistTitleId); + } + @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) { @@ -281,8 +297,12 @@ public class CallStatsDetailActivity extends Activity { startActivity(new Intent(Intent.ACTION_DIAL, CallUtil.getCallUri(mNumber))); } - public void onMenuAddToBlacklist(MenuItem menuItem) { - mContactInfoHelper.addNumberToBlacklist(mNumber); + public void onMenuBlacklist(MenuItem menuItem) { + if (mBlackListed) { + mContactInfoHelper.removeNumberFromBlacklist(mNumber); + } else { + mContactInfoHelper.addNumberToBlacklist(mNumber); + } } private void onHomeSelected() { diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java index 30113f737..da6e7cf4b 100644 --- a/src/com/android/dialer/dialpad/DialpadFragment.java +++ b/src/com/android/dialer/dialpad/DialpadFragment.java @@ -79,6 +79,7 @@ import com.android.contacts.common.GeoUtil; import com.android.contacts.common.MoreContactUtils; import com.android.contacts.common.util.PhoneNumberFormatter; import com.android.contacts.common.util.StopWatch; +import com.android.dialer.DialerApplication; import com.android.dialer.NeededForReflection; import com.android.dialer.DialtactsActivity; import com.android.dialer.R; @@ -846,7 +847,8 @@ public class DialpadFragment extends Fragment final MenuItem videocallsettingsMenuItem = menu.findItem(R.id.menu_video_call_settings); final MenuItem ipCallBySlot1MenuItem = menu.findItem(R.id.menu_ip_call_by_slot1); final MenuItem ipCallBySlot2MenuItem = menu.findItem(R.id.menu_ip_call_by_slot2); - + final boolean isIPPrefixEnabled = + DialerApplication.isIPCallEnabled(); // We show "video call setting" menu only when the csvt is supported //which means the prop "persist.radio.csvt.enabled" = true videocallsettingsMenuItem.setVisible(isVTSupported()); @@ -860,16 +862,22 @@ public class DialpadFragment extends Fragment ipCallBySlot1MenuItem.setVisible(false); ipCallBySlot2MenuItem.setVisible(false); } else { - if (MoreContactUtils.isMultiSimEnable(mContext, MSimConstants.SUB1)) { + if (isIPPrefixEnabled && MoreContactUtils.isMultiSimEnable(mContext, + MSimConstants.SUB1)) { String sub1Name = MoreContactUtils.getSimSpnName(MSimConstants.SUB1); + sub1Name = Settings.Global.getSimNameForSubscription(getActivity(), + MSimConstants.SUB1, sub1Name); ipCallBySlot1MenuItem.setTitle(getActivity().getString( com.android.contacts.common.R.string.ip_call_by_slot, sub1Name)); ipCallBySlot1MenuItem.setVisible(true); } else { ipCallBySlot1MenuItem.setVisible(false); } - if (MoreContactUtils.isMultiSimEnable(mContext, MSimConstants.SUB2)) { + if (isIPPrefixEnabled && MoreContactUtils.isMultiSimEnable(mContext, + MSimConstants.SUB2)) { String sub2Name = MoreContactUtils.getSimSpnName(MSimConstants.SUB2); + sub2Name = Settings.Global.getSimNameForSubscription(getActivity(), + MSimConstants.SUB2, sub2Name); ipCallBySlot2MenuItem.setTitle(getActivity().getString( com.android.contacts.common.R.string.ip_call_by_slot, sub2Name)); ipCallBySlot2MenuItem.setVisible(true); diff --git a/src/com/android/services/callrecorder/CallRecorderService.java b/src/com/android/services/callrecorder/CallRecorderService.java index eef17f998..4d53ec790 100644 --- a/src/com/android/services/callrecorder/CallRecorderService.java +++ b/src/com/android/services/callrecorder/CallRecorderService.java @@ -23,6 +23,7 @@ import android.media.MediaRecorder; import android.os.IBinder; import android.os.RemoteException; import android.os.SystemProperties; +import android.provider.Settings; import android.util.Log; import com.android.services.callrecorder.common.CallRecording; @@ -50,7 +51,9 @@ public class CallRecorderService extends Service { private static final String AUDIO_SOURCE_PROPERTY = "persist.call_recording.src"; - private SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + private SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyMMdd_HHmmssSSS"); + + private int mDefaultEncoder; private final ICallRecorderService.Stub mBinder = new ICallRecorderService.Stub() { @Override @@ -65,7 +68,7 @@ public class CallRecorderService extends Service { @Override public boolean startRecording(String phoneNumber, long creationTime) throws RemoteException { - String fileName = generateFilename(); + String fileName = generateFilename(phoneNumber); mCurrentRecording = new CallRecording(phoneNumber, creationTime, fileName, System.currentTimeMillis()); return startRecordingInternal(mCurrentRecording.getFile()); @@ -86,6 +89,7 @@ public class CallRecorderService extends Service { @Override public void onCreate() { if (DBG) Log.d(TAG, "Creating CallRecorderService"); + mDefaultEncoder = getResources().getInteger(R.integer.call_recording_audio_encoder); } @Override @@ -98,6 +102,26 @@ public class CallRecorderService extends Service { return SystemProperties.getInt(AUDIO_SOURCE_PROPERTY, defaultValue); } + private int getAudioFormat() { + int formatValue = Settings.System.getInt( + getContentResolver(), Settings.System.CALL_RECORDING_FORMAT, mDefaultEncoder); + if (formatValue == 0){ + return MediaRecorder.OutputFormat.AMR_WB; + } else { + return MediaRecorder.OutputFormat.MPEG_4; + } + } + + private int getAudioEncoder() { + int formatValue = Settings.System.getInt( + getContentResolver(), Settings.System.CALL_RECORDING_FORMAT, mDefaultEncoder); + if (formatValue == 0){ + return MediaRecorder.AudioEncoder.AMR_WB; + } else { + return MediaRecorder.AudioEncoder.HE_AAC; + } + } + private synchronized boolean startRecordingInternal(File file) { if (mMediaRecorder != null) { if (DBG) { @@ -113,8 +137,8 @@ public class CallRecorderService extends Service { int audioSource = getAudioSource(); if (DBG) Log.d(TAG, "Creating media recorder with audio source " + audioSource); mMediaRecorder.setAudioSource(audioSource); - mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); - mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); + mMediaRecorder.setOutputFormat(getAudioFormat()); + mMediaRecorder.setAudioEncoder(getAudioEncoder()); } catch (IllegalStateException e) { Log.w(TAG, "Error initializing media recorder", e); return false; @@ -177,9 +201,14 @@ public class CallRecorderService extends Service { return mState; } - private String generateFilename() { + private String generateFilename(String number) { String timestamp = DATE_FORMAT.format(new Date()); - return "callrecorder_" + timestamp + ".amr"; + int audioFormat = getAudioFormat(); + if (audioFormat == MediaRecorder.OutputFormat.AMR_WB){ + return number + "_" + timestamp + ".amr"; + } else { + return number + "_" + timestamp + ".m4a "; + } } public static boolean isEnabled(Context context) { |