2014-11-17 10 views
10

Sto cercando di implementare lo Ok Google Voice Search integration. Tuttavia, non posso eseguire il deeplink nella mia app quando dico "Cerca per Android su nome_app". Invece, cerca semplicemente il termine sul web.Come integrare l'attività di ricerca con Ok ricerca vocale Google?

Ecco quello che ho fatto:

  1. Creare /res/xml/searchable.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <searchable xmlns:android="http://schemas.android.com/apk/res/android" 
        android:label="@string/app_name" 
        android:hint="@string/search_hint"> 
    </searchable> 
    
  2. creare una nuova attività

    public class ExposedSearchActivity extends Activity { 
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
    
         String search = getIntent().getStringExtra(SearchManager.QUERY); 
         Log.wtf("", "q=" + search); 
        } 
    } 
    
  3. Applicare filtri intento alla attività ricercabile

    <activity 
        android:name=".search.ExposedSearchActivity" 
        android:configChanges="orientation|keyboardHidden|screenSize" 
        android:screenOrientation="fullSensor"> 
        <!--Deeplink from google now--> 
        <intent-filter> 
         <action android:name="com.google.android.gms.actions.SEARCH_ACTION"/> 
         <category android:name="android.intent.category.DEFAULT"/> 
        </intent-filter> 
        <!--Making it searchable--> 
        <intent-filter> 
         <action android:name="android.intent.action.SEARCH"/> 
        </intent-filter> 
        <meta-data 
         android:name="android.app.searchable" 
         android:resource="@xml/searchable"/> 
    </activity> 
    
  4. Il dispositivo di prova è un Nexus 5 in esecuzione Lollipop LPX13D con Google Search 4.0.26.1499465.arm

Quali altre misure potrebbe Ho dimenticato? Grazie in anticipo.

+0

@ 1, grazie per l'input. Sfortunatamente, ho provato entrambi i metodi senza alcun risultato. T___T –

+1

@SomeNoobStudent La tua app è stata pubblicata nel Play Store? Deve essere prima che la funzionalità funzioni. – adneal

+0

@ 4, infatti! Quello era il collegamento mancante. Sembra che per ora possiamo testare solo tramite i comandi adb. –

risposta

14

Dopo molte ricerche, ho trovato la risposta in un comment on Google+ by the author of the blog post, Jarek Wilkiewicz.

Sì, l'applicazione deve essere pubblicata per il Play Store in modo che la funzione al lavoro. Un modo per aiutare il debug tua fine è quello di innescare l'intento via ADB, per esempio: adb shell pm iniziare -a com.google.android.gms.actions.SEARCH_ACTION -e foo interrogazione

Così ho provato questa funzione su un'app già presente nel Play Store e funziona in modo impeccabile.

+0

Grazie. Questo mi sta facendo impazzire per la parte migliore di un giorno – Dale

+0

Qualsiasi hack per farlo funzionare? Qualcuno ha trovato qualcosa su questo? –

+0

@ 2 è necessario implementare il codice in un'app già pubblicata nel Play Store. È sufficiente ripristinare i passaggi che ho elencato nella mia domanda in un'app pubblicata e la ricerca vocale dovrebbe funzionare. –