2015-09-25 2 views
0

Если я использую распознавание речи, как этотПолучит отключиться от речи службы распознавания

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 

сделать некоторые настройки .... и сделать

startActivityForResult(intent, SystemData.VOICE_RECOGNITION_REQUEST_CODE); 

Есть ли способ, чтобы остановить службу (как уничтожить), используя какое-то намерение или любым другим способом?

Thanks Бар.

+0

Из того, что я вижу, вы начинаете деятельность, а не услугу. Я не совсем уверен, чего вы пытаетесь достичь. – JTY

ответ

-1

Сначала добавьте две кнопки [buttonStart и buttonStop] к вашей деятельности XML, а затем
В деятельности, которая содержит код в Уре вопрос добавить: @Override общественности недействительным OnCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.main);

buttonStart = (Button) findViewById(R.id.buttonStart); 
    buttonStop = (Button) findViewById(R.id.buttonStop); 

    buttonStart.setOnClickListener(this); 
    buttonStop.setOnClickListener(this); 
    } 

    public void onClick(View src) { 
    switch (src.getId()) { 
    case R.id.buttonStart: 
     Log.d(TAG, "onClick: starting srvice"); 
     startService(new Intent(this, MyService.class)); 
     break; 
    case R.id.buttonStop: 
     Log.d(TAG, "onClick: stopping srvice"); 
     stopService(new Intent(this, MyService.class)); 
     break; 
    } 
    } 

MyService.java

mport android.app.Service; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.IBinder; 
import android.util.Log; 
import android.widget.Toast; 

public class MyService extends Service { 
    private static final String TAG = "MyService"; 
    MediaPlayer player; 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onCreate"); 

     player = MediaPlayer.create(this, R.raw.braincandy); 
     player.setLooping(false); // Set looping 
    } 

    @Override 
    public void onDestroy() { 
     Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onDestroy"); 
     player.stop(); 
    } 

    @Override 
    public void onStart(Intent intent, int startid) { 
     Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onStart"); 
     player.start(); 
    } 
} 
+0

Возможно, я не прояснился. Служба, которую я хочу остановить, не является частью моей программы. Это служба распознавания речи для Android, поэтому я не могу ее прерывать. Я хочу знать, есть ли какая-либо команда, которую я могу отправить, чтобы остановить ее для обработки (в состоянии, когда она ждет какой-либо речи, но долгожданный разговор в течение длительного времени). Поэтому я хочу остановить его после того, как не получил повтор для предопределенного времени. Поэтому он хочет создать ситуацию, когда я решит продолжить, а затем получаю ответ, который не имеет отношения к делу и больше не связан ни с чем. –

0

Я нашел, как остановить службу распознавания речи. Я делаю общую переменную типа SpeechRecognizer.

Положите его в начале класса, как, что:

частный SpeechRecognizer речи = NULL;

Затем в инициализации речи я подключить его к слушателю и использовать его в намерениях, как это:

speech = SpeechRecognizer.createSpeechRecognizer(getActivity()); 

    speech.setRecognitionListener(this); 

    Intent recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 

Тогда в любой части этого класса, если я хочу, чтобы активное выступление я использую это:

speech.startListening (распознающее средство);

и остановить его я делаю это:

speech.stopListening();

так что слушатель является ключом к активности речи.