2011-06-16 17 views
15

क्या एक गतिविधि के रूप में गतिविधि को कार्यान्वित करना संभव है? मेरी गतिविधि एक आवाज पहचान गतिविधि है। मैं ऐप की पृष्ठभूमि में चल रही गतिविधि को लगातार आवाज की जांच करना चाहता हूं और जब उपयोगकर्ता कमांड कहता है तो वह इसे पहचान लेगा और फिर कार्रवाई करेगा। मेरा सवाल है ... क्या ऐसा करना संभव है और यदि ऐसा है तो पृष्ठभूमि सेवा वर्तमान गतिविधि या एप्लिकेशन को कैसे सूचित कर सकती है? इस पर एक पिछली पोस्ट थी जिसका कोई स्पष्ट जवाब नहीं था ... किसी इनपुट या सहायता के लिए धन्यवाद।पृष्ठभूमि सेवा के रूप में ध्वनि पहचान

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.speech.RecognitionListener; 
import android.speech.RecognizerIntent; 
import android.speech.SpeechRecognizer; 
import android.widget.Button; 
import android.widget.TextView; 
import java.util.ArrayList; 
import android.util.Log; 



public class voiceRecognitionTest extends Activity implements OnClickListener 
{ 

    private TextView mText; 
    private SpeechRecognizer sr; 
    private static final String TAG = "MyStt3Activity"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      Button speakButton = (Button) findViewById(R.id.btn_speak);  
      mText = (TextView) findViewById(R.id.textView1);  
      speakButton.setOnClickListener(this); 
      sr = SpeechRecognizer.createSpeechRecognizer(this);  
      sr.setRecognitionListener(new listener());   
    } 

    class listener implements RecognitionListener   
    { 
      public void onReadyForSpeech(Bundle params) 
      { 
        Log.d(TAG, "onReadyForSpeech"); 
      } 
      public void onBeginningOfSpeech() 
      { 
        Log.d(TAG, "onBeginningOfSpeech"); 
      } 
      public void onRmsChanged(float rmsdB) 
      { 
        Log.d(TAG, "onRmsChanged"); 
      } 
      public void onBufferReceived(byte[] buffer) 
      { 
        Log.d(TAG, "onBufferReceived"); 
      } 
      public void onEndOfSpeech() 
      { 
        Log.d(TAG, "onEndofSpeech"); 
      } 
      public void onError(int error) 
      { 
        Log.d(TAG, "error " + error); 
        mText.setText("error " + error); 
      } 
      public void onResults(Bundle results)     
      { 
        String str = new String(); 
        Log.d(TAG, "onResults " + results); 
        ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); 
        for (int i = 0; i < data.size(); i++) 
        { 
           Log.d(TAG, "result " + data.get(i)); 
           str += data.get(i); 
        } 
        mText.setText("results: "+String.valueOf(data.size()));   
      } 
      public void onPartialResults(Bundle partialResults) 
      { 
        Log.d(TAG, "onPartialResults"); 
      } 
      public void onEvent(int eventType, Bundle params) 
      { 
        Log.d(TAG, "onEvent " + eventType); 
      } 
    } 
    public void onClick(View v) { 
      if (v.getId() == R.id.btn_speak) 
      { 
       Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);   
       intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
       intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test"); 

       intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5); 
        sr.startListening(intent); 
        Log.i("111111","11111111"); 
      } 
    } 
} 
+1

हाय, मैं करने के लिए देख रहा हूँ है इस तरह के कुछ, मुझे पता है कि यह थोड़ी देर के बाद से आप इस सवाल से पूछ चुके हैं, मैं सोच रहा था कि क्या आपने ऐसा करने का कोई तरीका निकाला है? – Peter

+0

इसे जांचें: http://stackoverflow.com/questions/11406925/speech-recognition-as-a-service-android – SepehrM

उत्तर

0

आप क्या कर सकते पहचानकर्ता गतिविधि है जो आदेशों पर ध्यान देगा लांच है और जब यह एक उचित आदेश पाता है यह जो कुछ भी आप यह करना चाहते हैं जाएगा: यहाँ आवाज गतिविधि ... एक और StackOverflow पद से लिया है उस विशेष आदेश पर करो। इस सरल दृष्टिकोण के साथ समस्या यह है कि गतिविधि लगातार वाक् इनपुट के लिए सुन हो जाएगा और अधिक महत्वपूर्ण आईटी फोकस में है और पृष्ठभूमि में नहीं चल करने की आवश्यकता है ...

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.html

+1

तो वास्तव में वैसे भी आवाज कमांड सिस्टम को लागू करने के लिए वास्तव में नहीं है? –

+24

यह उत्तर वास्तव में प्रश्न का उत्तर कैसे दे सकता है क्योंकि व्यक्ति को सेवा में वॉयस पहचानकर्ता की आवश्यकता होती है, न कि गतिविधि? – ozmank

संबंधित मुद्दे