2012-01-14 10 views
5

Voglio usare il metodo vibratore nella mia app, e ho funzionato sul mio telefono che ha un vibratore che è grande. tuttavia i telefoni che non hanno un vibratore cosa succede. non funziona affatto? non funziona l'app? o non compare sul mercato? o devo chiedere al telefono se ha un vibratore?Android: metodo vibratore (se il telefono non ha vibratore?)

Vorrei anche sapere se questo codice è buono o necessita di regolazioni? qui è il mio codice ..

Vibrator vi; 

vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

vi.vibrate(100); 

<uses-permission android:name="android.permission.VIBRATE" /> (In manifest) 

Grazie, tutto l'aiuto sarebbe grande.

risposta

14

Controllare la documentazione, http://developer.android.com/reference/android/os/Vibrator.html

tutto quello che dovete fare è controllare se un vibratore è presente sul telefono in questo modo:

Vibrator vi; 

vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

if(vi.hasVibrator()){ 
    vi.vibrate(100); 
} 

A causa del permesso vibrare mercato Android può filtrare tua app per solo telefoni con una vibrazione. Per evitare questo è possibile utilizzare il tag con l'attributo di required = "false"

<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-feature android:name="there.isnt.a.vibrate.feature" android:required="false" /> 

E 'tutto qui documentato:

http://developer.android.com/guide/topics/manifest/uses-permission-element.html

http://developer.android.com/guide/topics/manifest/uses-feature-element.html

TUTTAVIA

Non esiste una stringa di funzioni Vibrazione, quindi Android Market Non sarà filtrare l'app perché si sta utilizzando il permesso vibrare. Quindi il tuo ok per usare solo usi-permesso e fare il controllo nel codice Java.

I dispositivi necessitano di un vibratore per essere compatibili con il mercato Android, ma naturalmente questo non vale per i mercati di Amazon e di altre app (Barnes & Noble Nook non ha un vib).

Questo è sostenuta da Dianne Hackthorn (piombo Android dev di Google di) rispondere a questa discussione: http://groups.google.com/group/android-developers/browse_thread/thread/7713e796ea2d0f5f

+2

Si noti che 'hasVibrator()' è stato aggiunto nell'API Livello 11. I dispositivi più vecchi di quelli per lo più avranno motori di vibrazione, in particolare se (legittimamente) hanno Android Market su di essi. – CommonsWare

+0

Ho letto il documento e non dice nulla al riguardo. Sono in esecuzione su API 7 quindi non posso usare "hasVibrator", quindi cosa succede se il vibratore non è presente. –

+1

Sarà semplicemente ignorato e non vibrerà! È possibile utilizzare la riflessione per richiamare la chiamata api lvl 11 per tali dispositivi, dipende da come si desidera implementare le proprie idee. – Blundell

2

lo fa non funziona affatto? non funziona l'app?

La richiesta di vibrazione deve essere semplicemente ignorata.

oppure non si presenta sul mercato?

Non è possibile filtrare i dispositivi dal Market sprovvisti di un motore di vibrazione. Quindi, l'autorizzazione VIBRATE non è tra quelle in cui if you ask for it imply a hardware feature.

o devo chiedere al telefono se ha un vibratore?

È possibile, al livello API 11 e versioni successive, consultare la risposta di Blundell.

+0

Quindi, se sto lavorando su API 7, posso semplicemente mantenere tutto come ora, perché non verrà filtrato nel mercato e il telefono dovrebbe semplicemente perderlo se non ha un vibratore? –

+0

@JackTrowbridge: AFAIK, sì. – CommonsWare

Problemi correlati