1

着信コールを受信する BroadcastReceiver クラスがあります。私の電話に電話がかかってきたらすぐに、音声認識エンジンを起動したいと思います。RecognizerIntent を呼び出すためのインターフェイスはありません。電話が鳴っている間、Re​​cognizerIntent だけが自動的に呼び出されます。これは可能ですか?

このためのコードを共有していただければ幸いです。

スラヴァン

これが私がやろうとしていることです。しかし、音声認識エンジンはポップアップしません。

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

        }
    }
}

}

4

1 に答える 1

0

を呼び出す前FLAG_ACTIVITY_NEW_TASKに、を使用してインテントにフラグを追加する必要がある場合があります。これは最小値です。他のフラグが必要になる場合があります。一覧はこちらのページをご覧ください。i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity()

于 2012-07-03T23:21:09.860 に答える