summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrint E. Kriebel <bekit@cyngn.com>2014-11-18 13:51:06 -0800
committerBrint E. Kriebel <bekit@cyngn.com>2014-11-18 13:51:06 -0800
commit013580b3dba8f09fa6ed655223c82f4ef58058d9 (patch)
tree8b147133f08188283cef9f65a6c66de22bc6bed6
parent24e2e37649d7e1dccac97e659cf9853b3a45c61e (diff)
parentff8ad3a3d0ba5f49eea78564be1a50aabc689d66 (diff)
downloadandroid_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.xml2
-rw-r--r--res/menu/call_stats_details_options.xml2
-rw-r--r--res/values/cm_strings.xml2
-rw-r--r--res/values/config.xml1
-rwxr-xr-xsrc/com/android/dialer/CallDetailActivity.java29
-rw-r--r--src/com/android/dialer/DialerApplication.java5
-rw-r--r--src/com/android/dialer/calllog/CallLogFragment.java13
-rw-r--r--src/com/android/dialer/calllog/ContactInfoHelper.java17
-rw-r--r--src/com/android/dialer/callstats/CallStatsDetailActivity.java28
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java14
-rw-r--r--src/com/android/services/callrecorder/CallRecorderService.java41
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) {