title: SearchView Voice Recognizer Does Not Transcribe Text
body: <p>I setup a simple Android project with one activity that contains a SearchView with Voice Search enabled.  When I utilize the Voice Search feature, the built-in Voice Recognizer displays as expected, but it does not transcribe the spoken text in either the recognizer dialog or the SearchView widget itself.  However, it does correctly send the spoken text through the SEARCH intent so the search can be performed.  Here's the source code and XML for my project:</p>
  
  <h3>AndroidManifest.xml</h3>
  
  <pre><code>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="searchtest.screens"
  android:versionCode="1"
  android:versionName="1.0" &gt;
  
  &lt;uses-sdk
      android:minSdkVersion="14"
      android:targetSdkVersion="19" /&gt;
  
  &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;
  &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
  &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt;
  
  &lt;application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" &gt;
      &lt;meta-data
          android:name="com.google.android.gms.version"
          android:value="@integer/google_play_services_version" /&gt;
      &lt;meta-data
          android:name="com.facebook.sdk.ApplicationId"
          android:value="@string/app_id" /&gt;
  
      &lt;activity
          android:name="searchtest.screens.MainScreen"
          android:label="@string/app_name"
          android:launchMode="singleTop" &gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.SEARCH" /&gt;
              &lt;action android:name="android.intent.action.MAIN" /&gt;
  
              &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
          &lt;/intent-filter&gt;
  
          &lt;meta-data
              android:name="android.app.searchable"
              android:resource="@xml/searchable_deal" /&gt;
      &lt;/activity&gt;
  &lt;/application&gt;
  
  &lt;/manifest&gt;
  </code></pre>
  
  <h3>searchable_deal.xml</h3>
  
  <pre><code>&lt;searchable xmlns:android="http://schemas.android.com/apk/res/android"
  android:hint="@string/search_deals_hint"
  android:label="@string/app_name"
  android:voiceLanguageModel="web_search"
  android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" &gt;
  &lt;/searchable&gt;
  </code></pre>
  
  <h3>main_screen.xml</h3>
  
  <pre><code>&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/dealScreenLayout"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" &gt;
  
  &lt;LinearLayout
      android:id="@+id/searchLayout"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal" &gt;
  
      &lt;SearchView
          android:id="@+id/dealSearch"
          android:layout_width="0dip"
          android:layout_height="wrap_content"
          android:layout_weight="3"
          android:hint="@string/search_deals_hint" &gt;
      &lt;/SearchView&gt;
  &lt;/LinearLayout&gt;
  
  &lt;ListView
      android:id="@+id/dealList"
      android:layout_width="fill_parent"
      android:layout_height="0dip"
      android:layout_weight=".8" &gt;
  &lt;/ListView&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <h3>MainScreen.java</h3>
  
  <pre><code>public class MainScreen extends Activity implements OnItemClickListener {
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main_screen);
  
      setupSearchView();
  }
  
  @Override
  public void onResume() {
      super.onResume();
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // use an inflater to populate the ActionBar with items
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.view_deals, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  
      return true;
  }
  
  @Override
  protected void onNewIntent(Intent intent) {
  
      if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
  
          String query = intent.getStringExtra(SearchManager.QUERY);
          doSearch(query);
      }
  }
  
  private void setupSearchView() {
      SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
      final SearchView searchView = (SearchView) findViewById(R.id.dealSearch);
      SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName());
      searchView.setSearchableInfo(searchableInfo);
      searchView.setIconifiedByDefault(false);
  }
  
  private void doSearch(String query) {
  
      Toast.makeText(this, "Searching for: " + query, Toast.LENGTH_LONG).show();
  }
  
  @Override
  public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
  
      Toast.makeText(this, "Selected item: " + position, Toast.LENGTH_LONG).show();
  }
  }
  </code></pre>