Android ऐप्स में ध्वनि नियंत्रण



यह सब इस तथ्य के साथ शुरू हुआ कि मैंने सिरी और Google नाओ की अच्छी समीक्षा (तुलना) देखी। मैं बहस नहीं करूंगा जो बेहतर है, लेकिन मेरे पास एंड्रॉइड पर व्यक्तिगत रूप से एक टैबलेट है। मैंने सोचा, क्या होगा अगर मैं वॉयस कंट्रोल पर पूरी तरह से कैलकुलेटर लिखूं (क्या यह सुविधाजनक होगा?)। लेकिन शुरुआत के लिए, मुझे वॉयस कंट्रोल के साथ थोड़ा सा पता लगाना था, वॉयस इनपुट के साथ और अधिक सटीक (नियंत्रण अभी भी प्राप्त करने की आवश्यकता है)। इसके अलावा, मैंने अभी-अभी एंड्रॉइड स्टूडियो डाउनलोड किया है, और मैं इसे जल्द ही (एक मिनी-प्रोजेक्ट में) आज़माने के लिए इंतजार नहीं कर सकता। अच्छा, चलिए शुरू करते हैं।



हम सूची दृश्य और बटन की गतिविधि पर फेंकते हैं। ListView में हम अपने आप को कमांड्स को बचाएंगे, अधिक सटीक रूप से एक कमांड के विकल्प, और बटन विनम्रता से पूछेगा कि हम क्या चाहते हैं। हां, कार्यक्रम में तर्क नहीं होगा, इसकी मदद से हम सिर्फ कार्यान्वयन को देखते हैं।



मेनिफेस्ट में भी एक संकल्प जोड़ें
<uses-permission android:name="android.permission.INTERNET" /> 


और यह अब, आप सीधे प्रोग्रामिंग पर जा सकते हैं। "आवश्यक घटक खोजें":

 private ListView mList; private Button speakButton; public static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); speakButton = (Button) findViewById(R.id.button); speakButton.setOnClickListener(this); mList = (ListView) findViewById(R.id.listView); } 


हम बटन के लिए क्लिक हैंडलर लिखते हैं, जो startSpeak () विधि को कॉल करेगा, जिसके बारे में हम बाद में बात करेंगे:

 public void onClick(View v) { startSpeak(); } 


खैर, आखिरकार "पानी" खत्म हो गया है। हम "बोलना" शुरू करते हैं:
 public void startSpeak() { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); //       () intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //      intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "What can you tell me?"); startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); //    } 


यह आपकी कल्पना को उजागर करने और यह तय करने का समय है कि कौन सी कमांड का उपयोग करना है। सबसे पहले मैं खुद एक टेट्रिस टैंक के उदाहरण से दिखाना चाहता था: वे उसे "ऊपर", "नीचे", "बाएं", "आग" इत्यादि के लिए निर्देशित करेंगे, लेकिन मैं इसे आपके लिए मुश्किल छोड़ देता हूं। मैंने बटन का रंग बदलने, एप्लिकेशन से बाहर निकलने, ब्राउज़र में पृष्ठ खोलने, नक्शे शुरू करने और डिवाइस को रिबूट करने के आदेश दिए। बाद के लिए, रिबूट के रूप में, यह कमांड काम करेगा, जैसा कि मैं इसे समझता हूं, केवल रूट किए गए उपकरणों पर। फोन पर, मेरे पास संयुक्त उद्यम का अधिकार है और सब कुछ अच्छी तरह से काम करता है, लेकिन टैबलेट पर, यह बस इस आदेश की उपेक्षा करता है। रिकॉर्डिंग आदेशों में कुछ भी जटिल नहीं है, मुझे लगता है कि पर्याप्त टिप्पणियां होंगी:

 public void onActivityResult(int requestCode, int resultCode, Intent data){ if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK){ ArrayList commandList = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); mList.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, commandList)); //     ,    .     //            if (commandList.contains("red")){ speakButton.setText("red"); speakButton.setBackgroundColor(Color.RED); } if (commandList.contains("blue")){ speakButton.setText("blue"); speakButton.setBackgroundColor(Color.BLUE); } if (commandList.contains("green")){ speakButton.setText("green"); speakButton.setBackgroundColor(Color.GREEN); } if (commandList.contains("yellow")){ speakButton.setText("yellow"); speakButton.setBackgroundColor(Color.YELLOW); } if (commandList.contains("white")){ speakButton.setText("white"); speakButton.setBackgroundColor(Color.WHITE); } if (commandList.contains("black")){ speakButton.setText("black"); speakButton.setBackgroundColor(Color.BLACK); } //  if (commandList.contains("finish")){ finish(); } //     if (commandList.contains("maps")){ Intent i = new Intent(); PackageManager manager = getPackageManager(); i = manager.getLaunchIntentForPackage("com.google.android.apps.maps"); i.addCategory(Intent.CATEGORY_LAUNCHER); startActivity(i); } //    if (commandList.contains("google")){ finish(); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(browserIntent); } if (commandList.contains("facebook")){ finish(); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com")); startActivity(browserIntent); } //       //  -   "android.permission.REBOOT",        () if (commandList.contains("reboot")){ try { Process proc = Runtime.getRuntime() .exec(new String[]{ "su", "-c", "reboot -p" }); proc.waitFor(); } catch (Exception ex) { ex.printStackTrace(); } } } super.onActivityResult(requestCode, resultCode, data); } 


इस तरह से कमांड रिकॉर्डिंग विंडो दिखती है:



एक सुंदर अंग्रेजी उच्चारण "नक्शे" के साथ कहें। Google मानचित्र कहा जाता है:



«ब्लू»:



जैसा कि आप देख सकते हैं, सूची सभी संभावित (समान) शब्दों को प्रदर्शित करती है और उनमें से हम पहले से ही चयन करते हैं कि हमें क्या चाहिए।

खैर, "खत्म" पर, मैंने एक सौलेंस (या नहीं?) मशीन के साथ बात खत्म कर दी।

मुझे उम्मीद है कि मेरा छोटा लेख किसी को कुछ ऐसा आशाजनक प्रोजेक्ट बनाने के लिए प्रोत्साहित करेगा (नहीं, एक टर्मिनेटर नहीं) जो लोगों के दैनिक जीवन को सरल बनाएगा और आपको लाखों लाएगा, या कम से कम उपयोगी साबित होगा। इसके लिए जाओ!

पुनश्च: प्रलेखन और स्रोत के लिए उपयोगी लिंक के एक जोड़े

Source: https://habr.com/ru/post/In180515/


All Articles