2011-09-01 12 views
9

Ho bisogno di aiuto per capire come verificare se un dispositivo è dotato del pulsante hardware di ricerca o meno. È possibile?Verifica se il dispositivo Android ha il pulsante hardware di ricerca

EDIT: Sto parlando di scoprire se il dispositivo ha il pulsante hardware di ricerca o meno. Domanda semplice. Ogni dispositivo Android ha un set di pulsanti hardware; menu, pulsante home, pulsante indietro e pulsante di ricerca. Ma alcuni dispositivi sono dotati solo di alcuni di essi, non di tutti.

MODIFICA 2: Il motivo per cui lo chiedo è perché voglio avere un pulsante software visualizzato nella mia UI se il dispositivo non è dotato di un pulsante hardware. Sto usando l'interfaccia searchable nella mia attività. Non sto seguendo l'approccio EditText/TextField.

+0

se non sbaglio, hai parlato del pulsante hardware di ricerca del dispositivo o di un pulsante di visualizzazione grafica? – user370305

+0

Ho pensato che fosse un requisito per i dispositivi Android. – rds

+0

Non tutti i dispositivi sono dotati di pulsanti hardware. Il nuovo Galaxy Tab 10.1 non ha nessuno di quei pulsanti che ho menzionato prima. – ScratchMyTail

risposta

-2

Meglio modo si può fare usign due modi

  1. mettere il pulsante di ricerca e chiamare a onSearchRequested();

  2. Secondo modo sul fare clic sul EditText messo android:imeOptions="actionSearch" quindi è necessario
    assegno per la chiave

    searchBox.setOnEditorActionListener(new OnEditorActionListener() 
    { 
        public boolean onEditorAction(TextView textView, int id,KeyEvent event) 
        { 
        if (id == EditorInfo.IME_ACTION_SEARCH) 
         { 
          //do what ever you want 
         } 
        return true; 
        } 
    }); 
    

Spero che questo ti possa aiutare.

+1

Non sto chiedendo come attivare il campo di ricerca. Sto chiedendo come possiamo scoprire se un dispositivo è dotato di una ricerca hardware o meno. L'idea è semplice. Se il dispositivo NON ha un pulsante di ricerca hardware, devo mostrare un pulsante software. Se ha un pulsante hardware, non mostrerò il pulsante software. Questo è il mio piano – ScratchMyTail

+1

Ho votato per la risposta perché non giustifica la domanda e la soluzione richiesta –

1

Non penso che sia necessario rilevare se ha effettivamente un pulsante hardware di ricerca. Il framework ti aiuterà qui (anche se sono sicuro che questo processo sarà semplificato una volta rilasciato Ice Cream Sandwich)

Attualmente, gli unici dispositivi che non avranno la ricerca dell'hardware sono le tavolette Honeycomb. Quindi, utilizzando android:targetSdkVersion="11" (o superiore), l'aggiunta di implements OnQueryTextListener al vostro Fragment o Activity, e quindi aggiungendo qualcosa di simile:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.notebooks_menu, menu); 
    final SearchView sv = new SearchView(getActivity()); 
    sv.setOnQueryTextListener(this); 
    menu.findItem(R.id.search_notebooks).setActionView(sv); 
} 

Sarà essenzialmente risolvere il problema. Ora, per farlo funzionare su dispositivi pre-Honeycomb, potresti aver bisogno di usare lo compatibility library, o usare il riflesso o altre protezioni nel tuo codice.

EDIT

Il Samsung Galaxy S II non ha un pulsante di ricerca hardware dedicato, ma se si tiene premuto il pulsante del menu in giù per un paio di secondi, inizierà in qualità di un pulsante di ricerca hardware.

+0

Hai ragione, i tablet Honeycomb non hanno il pulsante dell'hardware di ricerca. Neanche il nuovo Samsung Galaxy SII. Penso che sia triste vedere le aziende fare la propria svolta sui propri dispositivi. Rende ancora più impegnativo il supporto di tutti i dispositivi Android. Il Galaxy 10.1 ha anche un pulsante dedicato per lo screenshot che trovo strano. La soluzione migliore è probabilmente l'implementazione di un menu contenente il pulsante di ricerca come hai detto, questo ovviamente funzionerà su tutti i dispositivi, almeno quelli dotati del pulsante menu (che credo abbiano tutti i dispositivi Android). Grazie per l'input. – ScratchMyTail

+1

Si prega di consultare la mia modifica sul pulsante del menu SGS2 che diventa ricerca. Sono d'accordo che non è fantastico * (ma non si può davvero biasimarli per aver tentato di innovare) quando i produttori di hardware tirano cose del genere, in quanto infrangono le aspettative degli utenti e degli sviluppatori. –

+0

Grazie Jon. A mio avviso, la libreria di supporto non viene fornita con SearchView. Quindi dobbiamo utilizzare la finestra di dialogo di ricerca predefinita negli SDK meno recenti. Ecco [documentazione] (http://developer.android.com/training/search/backward-compat.html). –

Problemi correlati