यह उदाहरण दर्शाता है कि मैं Google API के बिना Android में वाक् पहचानकर्ता कैसे विकसित करूं।
चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें।
<इमेज व्यू एंड्रॉइड:आईडी ="@ + आईडी / इमेज व्यू 1" एंड्रॉइड:लेआउट_विड्थ ="200 डीपी" एंड्रॉइड:लेआउट_हाइट ="200 डीपी" एंड्रॉइड:लेआउट_सेंटरइनपेरेंट ="ट्रू" एंड्रॉइड :src="@drawable/ic_mic" />
चरण 3 - निम्न कोड को src/MainActivity.java
में जोड़ें <पूर्व>पैकेज app.com.sample;import android.Manifest;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Bundle;import android.speech.RecognitionListener;import android.speech. RecognizerIntent;import android.speech.SpeechRecognizer;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android. view.View;आयात android.widget.CompoundButton;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;import android.widget.ToggleButton;import java.util.ArrayList;public class MainActivity का विस्तार AppCompatActivity लागू करता हैRecognitionListener { निजी स्थिर अंतिम int REQUEST_RECORD_PERMISSION =100; निजी टेक्स्ट व्यू टेक्स्ट लौटा; निजी टॉगलबटन टॉगलबटन; निजी प्रोग्रेसबार प्रोग्रेसबार; निजी भाषण पहचानकर्ता भाषण =शून्य; निजी इरादा पहचानकर्ता इरादा; निजी स्ट्रिंग LOG_TAG ="VoiceRecognitionActivity"; @Override संरक्षित शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); रिटर्नटेक्स्ट =findViewById (R.id.textView1); प्रोग्रेसबार =findViewById (R.id.progressBar1); टॉगलबटन =findViewById (R.id.toggleButton1); प्रगतिबार.सेट दृश्यता (देखें। अदृश्य); भाषण =स्पीच रिकॉग्नाइज़र। क्रिएट स्पीच रिकॉग्नाइज़र (यह); Log.i(LOG_TAG, "isRecognitionAvailable:" + SpeechRecognizer.isRecognitionAvailable(this)); स्पीच.सेट रिकॉग्निशन लिस्टनर (यह); पहचानकर्ता इंटेंट =नया इरादा (RecognizerIntent.ACTION_RECOGNIZE_SPEECH); पहचानकर्ताइन्टेंट.पुटएक्स्ट्रा (RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE,"US-en"); पहचानकर्ताइन्टेंट.पुटएक्स्ट्रा(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); पहचानकर्ताइन्टेंट.पुटएक्स्ट्रा(RecognizerIntent.EXTRA_MAX_RESULTS, 3); टॉगलबटन.सेटऑनचेक्डचेंज लिस्टनर (नया कंपाउंडबटन। ऑनचेक चेंज लिस्टनर () {@ ओवरराइड पब्लिक वॉयड ऑन चेकेड चेंजेड (कंपाउंडबटन बटन व्यू, बूलियन चेक किया गया) {अगर (चेक किया गया) {प्रगतिबार.सेट विजिबिलिटी (व्यू। विज़िबल); प्रोग्रेसबार. .यह, नया स्ट्रिंग [] {Manifest.permission.RECORD_AUDIO}, REQUEST_RECORD_PERMISSION); } और {प्रगतिबार। } @Override सार्वजनिक शून्य onRequestPermissionsResult(int requestCode, @NonNull String[] अनुमतियां, @NonNull int[] GrantResults) { super.onRequestPermissionsResult(requestCode, अनुमतियां, GrantResults); स्विच (अनुरोध कोड) {केस REQUEST_RECORD_PERMISSION:अगर (grantResults.length> 0 &&GrantResults[0]==PackageManager.PERMISSION_GRANTED) {स्पीच.स्टार्टलिस्टिंग (पहचानकर्ता इंटेंट); } और { Toast.makeText(MainActivity.this, "अनुमति अस्वीकृत!", टोस्ट। LENGTH_SHORT)। शो (); } } } @Resume पर सार्वजनिक शून्य को ओवरराइड करें () {super.onResume (); } @Override संरक्षित शून्य पर रोकें () {super.onPause (); } @Override संरक्षित शून्य onStop() {super.onStop(); अगर (भाषण! =शून्य) {भाषण। नष्ट (); लॉग.आई (LOG_TAG, "नष्ट करें"); } } @Override public void onBeginningOfSpeech() { Log.i(LOG_TAG, "onBeginningOfSpeech"); प्रगतिबार.सेट अनिश्चित (झूठा); प्रोग्रेसबार.सेटमैक्स (10); } @Override सार्वजनिक शून्य पर BufferReceived(बाइट[] बफ़र) { Log.i(LOG_TAG, "onBufferReceived:" + बफ़र); } @Override सार्वजनिक शून्य onEndOfSpeech() { Log.i(LOG_TAG, "onEndOfSpeech"); प्रगतिबार.सेट अनिश्चित (सच); टॉगलबटन.सेट चेक किया गया (झूठा); } @ ओवरराइड सार्वजनिक शून्य पर त्रुटि (इंट त्रुटि कोड) {स्ट्रिंग त्रुटि संदेश =getErrorText (त्रुटि कोड); Log.d(LOG_TAG, "FAILED" + errorMessage); रिटर्नटेक्स्ट.सेटटेक्स्ट (त्रुटि संदेश); टॉगलबटन.सेट चेक किया गया (झूठा); } @Override सार्वजनिक शून्य onEvent(int arg0, बंडल arg1) { Log.i(LOG_TAG, "onEvent"); } @PartialResults(Bundle arg0) पर सार्वजनिक शून्य को ओवरराइड करें { Log.i(LOG_TAG, "onPartialResults"); } @Override public void onReadyForSpeech(Bundle arg0) { Log.i(LOG_TAG, "onReadyForSpeech"); } @Results पर सार्वजनिक शून्य को ओवरराइड करें (बंडल परिणाम) { Log.i(LOG_TAG, "onResults"); ऐरेलिस्ट <स्ट्रिंग> मैच =परिणाम। getStringArrayList (SpeechRecognizer.RESULTS_RECOGNITION); स्ट्रिंग टेक्स्ट =""; के लिए (स्ट्रिंग परिणाम:मिलान) पाठ =परिणाम + "\ n"; रिटर्नटेक्स्ट.सेटटेक्स्ट (पाठ); } @RmsChanged (फ्लोट rmsdB) पर सार्वजनिक शून्य को ओवरराइड करें { Log.i(LOG_TAG, "onRmsChanged:" + rmsdB); प्रोग्रेसबार.सेट प्रोग्रेस ((इंट) आरएमएसडीबी); } सार्वजनिक स्थैतिक स्ट्रिंग getErrorText (int errorCode) {स्ट्रिंग संदेश; स्विच (त्रुटि कोड) {केस स्पीच रिकॉग्नाइज़र.ERROR_AUDIO:संदेश ="ऑडियो रिकॉर्डिंग त्रुटि"; तोड़ना; केस स्पीच रिकॉग्नाइज़र.ERROR_CLIENT:संदेश ="क्लाइंट साइड एरर"; तोड़ना; केस स्पीच रिकॉग्नाइज़र.ERROR_INSUFFICIENT_PERMISSIONS:संदेश ="अपर्याप्त अनुमतियाँ"; तोड़ना; केस स्पीच रिकॉग्नाइज़र.ERROR_NETWORK:संदेश ="नेटवर्क त्रुटि"; तोड़ना; केस स्पीच रिकॉग्नाइज़र.ERROR_NETWORK_TIMEOUT:संदेश ="नेटवर्क टाइमआउट"; तोड़ना; केस स्पीच रिकॉग्नाइज़र.ERROR_NO_MATCH:संदेश ="कोई मेल नहीं"; तोड़ना; केस स्पीच रिकॉग्नाइज़र.ERROR_RECOGNIZER_BUSY:संदेश ="RecognitionService व्यस्त"; तोड़ना; केस स्पीच रिकॉग्नाइज़र.ERROR_SERVER:संदेश ="सर्वर से त्रुटि"; तोड़ना; केस स्पीच रिकॉग्नाइज़र.ERROR_SPEECH_TIMEOUT:संदेश ="कोई भाषण इनपुट नहीं"; तोड़ना; डिफ़ॉल्ट:संदेश ="समझ में नहीं आया, कृपया पुनः प्रयास करें।"; तोड़ना; } वापसी संदेश; }}पूर्व>चरण 4 - निम्न कोड को androidManifest.xml में जोड़ें
<उपयोग-अनुमति android:name="android.permission.RECORD_AUDIO"/> <गतिविधि android:name=".MainActivity"> <इरादे-फ़िल्टर> <कार्रवाई android:name="android.intent.action.MAIN" /> <श्रेणी android:name="android.intent.category.LAUNCHER" /> गतिविधि> एप्लिकेशन>प्रकट>
आइए अपना एप्लिकेशन चलाने का प्रयास करें। मुझे लगता है कि आपने अपने वास्तविक Android मोबाइल डिवाइस को अपने कंप्यूटर से कनेक्ट कर लिया है। एंड्रॉइड स्टूडियो से ऐप चलाने के लिए, अपने प्रोजेक्ट की गतिविधि फ़ाइलों में से एक खोलें और टूलबार से रन आइकन पर क्लिक करें। एक विकल्प के रूप में अपने मोबाइल डिवाइस का चयन करें और फिर अपने मोबाइल डिवाइस की जांच करें जो आपकी डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा -