2012-09-18 7 views
8

मैं ACTION_VOICE_SEARCH_HANDS_FREEएंड्रॉइड 4.1 में उपयोग करने का प्रयास कर रहा हूं।मैं एंड्रॉइड 4.1 में ACTION_VOICE_SEARCH_HANDS_FREE का उपयोग कैसे कर सकता हूं?

Intent intent = new Intent(RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE); 
intent.putExtra(RecognizerIntent.EXTRA_SECURE, true); 
startActivityForResult(intent, RECORD_CODE); 

यह ACTION_RECOGNIZE_SPEECH साथ ठीक काम करता है लेकिन ACTION_VOICE_SEARCH_HANDS_FREE साथ मैं इस किया है::

मैं इस तरह का उपयोग

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.speech.action.VOICE_SEARCH_HANDS_FREE (has extras) } 

कैसे मैं ACTION_VOICE_SEARCH_HANDS_FREE उपयोग कर सकते हैं?

+0

@ राय 220: यहां RECORD_CODE क्या है? – Shiv

उत्तर

0

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

1

@Kaarel सही ढंग से उत्तर, लेकिन एक छोटे से अधिक जानकारी की आपूर्ति करने:

एक गतिविधि प्रकट में निम्नलिखित रजिस्टर करने की जरूरत है:

<intent-filter > 
     <action android:name="android.speech.action.VOICE_SEARCH_HANDS_FREE" /> 

     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

Google खोज को इस आशय के लिए पंजीकृत किया गया है, लेकिन यह होगा केवल यह करने के लिए प्रतिक्रिया जब स्क्रीन पर और नहीं बंद कर दिया है: नीचे से AudioService

private void startVoiceBasedInteractions(boolean needWakeLock) { 
     Intent voiceIntent = null; 
     // select which type of search to launch: 
     // - screen on and device unlocked: action is ACTION_WEB_SEARCH 
     // - device locked or screen off: action is ACTION_VOICE_SEARCH_HANDS_FREE 
     // with EXTRA_SECURE set to true if the device is securely locked 
     PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); 
     boolean isLocked = mKeyguardManager != null && mKeyguardManager.isKeyguardLocked(); 
     if (!isLocked && pm.isScreenOn()) { 
      voiceIntent = new Intent(android.speech.RecognizerIntent.ACTION_WEB_SEARCH); 
     } else { 
      voiceIntent = new Intent(RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE); 
      voiceIntent.putExtra(RecognizerIntent.EXTRA_SECURE, 
        isLocked && mKeyguardManager.isKeyguardSecure()); 
     } 
     // start the search activity 
     if (needWakeLock) { 
      mMediaEventWakeLock.acquire(); 
     } 
     try { 
      if (voiceIntent != null) { 
       voiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
         | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
       mContext.startActivity(voiceIntent); 
      } 
     } catch (ActivityNotFoundException e) { 
      Log.w(TAG, "No activity for search: " + e); 
     } finally { 
      if (needWakeLock) { 
       mMediaEventWakeLock.release(); 
      } 
     } 

यह सुविधा ले लिया देखें वर्तमान में बहुत बेमानी है due to this linked bug, जहां सिस्टम अनुप्रयोग प्राथमिकता को ओवरराइड कर रहे हैं, इस प्रकार उपयोगकर्ता को एक स्थापित विकल्प चुनने से रोकते हैं।

जब आपने ऐसा एप्लिकेशन बनाया है और उपयोगकर्ता इसका उपयोग नहीं कर सकते हैं, वास्तव में बहुत परेशान है ............. वास्तव में।

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