summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/main/impl
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-01-26 22:26:29 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-01-26 22:26:29 +0000
commite5f1e62682bec9f7bfa019b1820328fe98fa45bf (patch)
tree5e53c4dd5bbfcde694c8a177473d2e0c0f5edb65 /java/com/android/dialer/main/impl
parentf0d56cafa4c8284cd83f23e08877f6a5cf0c5fac (diff)
parent351cbcf3aed969db9b03fbcfc941cf3e086b0720 (diff)
Merge changes If1ecc3b4,Ied1b369d,I4e492279,I30a4b7fe
* changes: Disable phone icon for unknown numbers in NUI Voicemail Pressing dial with an empty dialpad now queries the last number in NUI. Disable seekbar user seeking Add voice search to NUI.
Diffstat (limited to 'java/com/android/dialer/main/impl')
-rw-r--r--java/com/android/dialer/main/impl/MainActivity.java21
-rw-r--r--java/com/android/dialer/main/impl/MainSearchController.java36
-rw-r--r--java/com/android/dialer/main/impl/res/values/strings.xml3
3 files changed, 57 insertions, 3 deletions
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index 168589f13..3edf6c6af 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
+import android.provider.CallLog.Calls;
import android.provider.ContactsContract.QuickContact;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.FragmentTransaction;
@@ -27,7 +28,9 @@ import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import com.android.dialer.calllog.ui.NewCallLogFragment;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.constants.ActivityRequestCodes;
import com.android.dialer.contactsfragment.ContactsFragment;
import com.android.dialer.contactsfragment.ContactsFragment.Header;
import com.android.dialer.contactsfragment.ContactsFragment.OnContactSelectedListener;
@@ -117,6 +120,16 @@ public final class MainActivity extends AppCompatActivity
}
@Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (requestCode == ActivityRequestCodes.DIALTACTS_VOICE_SEARCH) {
+ searchController.onVoiceResults(resultCode, data);
+ } else {
+ LogUtil.e("MainActivity.onActivityResult", "Unknown request code: " + requestCode);
+ }
+ }
+
+ @Override
public void onContactSelected(ImageView photo, Uri contactUri, long contactId) {
// TODO(calderwoodra): Add impression logging
QuickContact.showQuickContact(
@@ -130,7 +143,13 @@ public final class MainActivity extends AppCompatActivity
@Override // DialpadListener
public void getLastOutgoingCall(LastOutgoingCallCallback callback) {
- // TODO(calderwoodra): migrate CallLogAsync class outside of dialer/app and call it here.
+ DialerExecutorComponent.get(this)
+ .dialerExecutorFactory()
+ .createUiTaskBuilder(
+ getFragmentManager(), "Query last phone number", Calls::getLastOutgoingCall)
+ .onSuccess(output -> callback.lastOutgoingCall(output))
+ .build()
+ .executeParallel(this);
}
@Override // DialpadListener
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 041e32ed7..b01f80de6 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -17,16 +17,22 @@
package com.android.dialer.main.impl;
import android.app.FragmentTransaction;
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
import android.os.Bundle;
+import android.speech.RecognizerIntent;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
+import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
+import android.widget.Toast;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.constants.ActivityRequestCodes;
import com.android.dialer.dialpadview.DialpadFragment;
import com.android.dialer.dialpadview.DialpadFragment.DialpadListener;
import com.android.dialer.dialpadview.DialpadFragment.OnDialpadQueryChangedListener;
@@ -36,6 +42,7 @@ import com.android.dialer.searchfragment.list.NewSearchFragment;
import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentListener;
import com.android.dialer.util.ViewUtil;
import com.google.common.base.Optional;
+import java.util.ArrayList;
/**
* Search controller for handling all the logic related to entering and exiting the search UI.
@@ -255,8 +262,12 @@ final class MainSearchController implements SearchBarListener {
*/
@Override
public void onSearchBarClicked() {
+ openSearch(Optional.absent());
+ }
+
+ private void openSearch(Optional<String> query) {
fab.hide();
- toolbar.expand(/* animate=*/ true, Optional.absent());
+ toolbar.expand(/* animate=*/ true, query);
toolbar.showKeyboard();
hideBottomNav();
@@ -294,7 +305,28 @@ final class MainSearchController implements SearchBarListener {
}
@Override
- public void onVoiceButtonClicked(VoiceSearchResultCallback voiceSearchResultCallback) {}
+ public void onVoiceButtonClicked(VoiceSearchResultCallback voiceSearchResultCallback) {
+ try {
+ Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
+ mainActivity.startActivityForResult(voiceIntent, ActivityRequestCodes.DIALTACTS_VOICE_SEARCH);
+ } catch (ActivityNotFoundException e) {
+ Toast.makeText(mainActivity, R.string.voice_search_not_available, Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ public void onVoiceResults(int resultCode, Intent data) {
+ if (resultCode == AppCompatActivity.RESULT_OK) {
+ ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
+ if (matches.size() > 0) {
+ LogUtil.i("MainSearchController.onVoiceResults", "voice search - match found");
+ openSearch(Optional.of(matches.get(0)));
+ } else {
+ LogUtil.i("MainSearchController.onVoiceResults", "voice search - nothing heard");
+ }
+ } else {
+ LogUtil.e("MainSearchController.onVoiceResults", "voice search failed");
+ }
+ }
@Override
public void openSettings() {}
diff --git a/java/com/android/dialer/main/impl/res/values/strings.xml b/java/com/android/dialer/main/impl/res/values/strings.xml
index f530fa2bf..0fc1246d6 100644
--- a/java/com/android/dialer/main/impl/res/values/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values/strings.xml
@@ -46,4 +46,7 @@
<string name="tab_title_voicemail">Voicemail</string>
<!-- Tab text to show users their contacts [CHAR LIMIT=10] -->
<string name="tab_title_contacts">Contacts</string>
+
+ <!-- Message displayed when there is no application available to handle voice search. [CHAR LIMIT=NONE] -->
+ <string name="voice_search_not_available">Voice search not available</string>
</resources>