2012-07-03 4 views
0

У меня есть класс BroadcastReceiver, который получает входящие звонки. Как только мои телефоны получат входящий звонок, я хотел бы запустить Voice Recognizer. Не будет интерфейса для вызова RecognizerIntent. Just RecognizerIntent следует вызывать автоматически, когда телефон звонит. Это возможно?Диалог распознавания голоса во время вызова телефона

Буду признателен, если кто-нибудь поделится кодом для этого.

Sravan

Вот что я пытаюсь сделать. Но его не выталкивает распознаватель голоса.

package srv.phone.calls; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.speech.RecognizerIntent; 
import android.telephony.TelephonyManager; 
import android.util.Log; 
import android.widget.Toast; 


public class ServiceReceiver extends BroadcastReceiver { 
MediaPlayer mediaPlay; 
Toast toast; 
private int REQUEST_CODE = 1234; 

@Override 
public void onReceive(Context context, Intent intent) { 

    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     Log.w("DEBUG", state); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Log.w("DEBUG", phoneNumber); 
       // mediaPlay = MediaPlayer.create(context, R.raw.sweet); 
       // mediaPlay.start(); 
       toast = Toast.makeText(context, "Call from " + phoneNumber, Toast.LENGTH_LONG); 
       toast.show(); 

       Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
       i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
         RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
       i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo..."); 
       context.startActivity(i); //Not working 

     } 
    } 
} 

}

+0

Что вы пробовали? Что работает, а что нет? У вас есть код, который вы хотели бы поделиться? – gobernador

+0

Привет, я добавил код. – Sravan

+0

Определите «Не работает» в контексте этой конкретной строки. Вы получаете сообщения об ошибках? Кроме того, я бы использовал 'Log.d()' вместо 'Log.w()' в этом случае. Сохраните WARN за то, что плохо. – gobernador

ответ

0

Вам может понадобиться добавить FLAG_ACTIVITY_NEW_TASK флаг вашего намерения, используя i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); перед вызовом startActivity(). Это минимум, вам могут понадобиться другие флаги. См. this page для списка.

+0

Спасибо за помощь. Теперь он показывает распознаватель голоса с неизвестной ошибкой. Как поймать эту ошибку из результатов деятельности. – Sravan

+0

Прочитать логарифм. Что он говорит? – gobernador

+0

Теперь я могу вызвать активность распознавания речи из BroadcastReceiver, как показано в моем коде, и он отлично работает. Но как я могу получить результаты (например: onActivityResult) этой активности распознавания голоса в классе BroadcastReceiver? – Sravan

Смежные вопросы