610 votes

Comment formuler la demande?

J'ai écrit une application Android. Maintenant, je veux faire de l'appareil vibrer quand une action se produit. Comment puis-je faire cela?

1130voto

Paresh Mayani Points 48123

Essayez:

 import android.os.Vibrator;
 ...
 Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE);
 // Vibrate for 500 milliseconds
 v.vibrate(500);

Note:

N'oubliez pas d'inclure l'autorisation AndroidManifest.xml fichier:

<uses-permission android:name="android.permission.VIBRATE"/>

705voto

Accorder L'Autorisation De Vibration

Avant de commencer la mise en œuvre de toutes les vibrations de code, vous avez à donner à votre demande l'autorisation à vibrer:

<uses-permission android:name="android.permission.VIBRATE"/>

Assurez-vous d'inclure cette ligne dans votre AndroidManifest.xml fichier.

Importer les Vibrations de la Bibliothèque

La plupart des IDEs va le faire pour vous, mais ici, c'est l'instruction d'importation si le vôtre n'en a pas:

 import android.os.Vibrator;

Assurez-vous de ceci dans l'activité où vous voulez la vibration de se produire.

Comment Vibrer pour un Temps Donné

Dans la plupart des cas, vous aurez envie de faire vibrer l'appareil pour une courte quantité de temps prédéterminée. Vous pouvez atteindre cet objectif en utilisant l' vibrate(long milliseconds) méthode. Voici un exemple rapide:

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Vibrate for 400 milliseconds
v.vibrate(400);

Ça y est, simple!

Comment Vibrer Indéfiniment

Il peut être le cas que vous voulez que l'appareil de continuer à vibrants indéterminée. Pour cela, nous utilisons l' vibrate(long[] pattern, int repeat) méthode:

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Start without a delay
// Vibrate for 100 milliseconds
// Sleep for 1000 milliseconds
long[] pattern = {0, 100, 1000};

// The '0' here means to repeat indefinitely
// '0' is actually the index at which the pattern keeps repeating from (the start)
// To repeat the pattern from any other point, you could increase the index, e.g. '1'
v.vibrate(pattern, 0);

Lorsque vous êtes prêt à arrêter la vibration, il suffit d'appeler l' cancel() méthode:

v.cancel();

Comment utiliser les Modèles de Vibration

Si vous voulez un plus de sur-mesure des vibrations, vous pouvez essayer de créer vos propres modèles de vibration:

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Start without a delay
// Each element then alternates between vibrate, sleep, vibrate, sleep...
long[] pattern = {0, 100, 1000, 300, 200, 100, 500, 200, 100};

// The '-1' here means to vibrate once, as '-1' is out of bounds in the pattern array
v.vibrate(pattern, -1);

Plus Complexe Vibrations

Il existe plusieurs Kits de développement qui offrent une gamme plus étendue de la rétroaction haptique. Celui que j'utilise pour les effets spéciaux sont d'Immersion de l'Haptique Plate-forme de Développement pour Android.

Dépannage

Si votre dispositif n'est pas vibrer, assurez-vous d'abord qu'il peut vibrer:

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Output yes if can vibrate, no otherwise
if (v.hasVibrator()) {
    Log.v("Can Vibrate", "YES");
} else {
    Log.v("Can Vibrate", "NO");
}

Deuxièmement, veuillez vous assurer que vous avez donné à votre demande l'autorisation à vibrer! Revenir au premier point.

33voto

Atul O Holic Points 2239

Réponses ci-dessus sont parfaits. Cependant je voulais faire vibrer mon app exactement deux fois sur le bouton et cliquez sur cette petite information qui manque ici, d'où l'affichage pour les futurs lecteurs comme moi. :)

Nous avons à suivre comme mentionné ci-dessus et que le seul changement sera dans le vibrer modèle comme ci-dessous,

long[] pattern = {0, 100, 1000, 300};
v.vibrate(pattern, -1); //-1 is important

Ce sera exactement vibre deux fois. Comme nous le savons déjà de 0 pour le retard, 100 dit vibrer pour 100MS pour la première fois, ensuite vient le retard de 1000MS et de post qui vibrent à nouveau 300MS.

On peut aller sur et sur de mentionner le retard et les vibrations sinon (par ex. 0, 100, 1000, 300, 1000, 300 pour 3 les vibrations et ainsi de suite..) mais n'oubliez pas @Dave la parole de l'utiliser de façon responsable. :)

Également à noter ici que le paramètre de répétition est définie sur -1 ce qui signifie que la vibration va se passer exactement comme indiqué dans le schéma. :)

14voto

mklopfer Points 91

J'ai eu du mal à comprendre comment ce faire sur ma première mise en œuvre - assurez-vous d'avoir les éléments suivants:

1) Votre appareil prend en charge les vibrations (ma tablette Samsung n'a pas fonctionné alors j'ai continué à re-vérifier le code - le code original a parfaitement fonctionné sur mon Touchpad CM

2) Vous avez déclaré au-dessus de niveau de l'application dans votre AndroidManifest.xml fichier pour lui donner l'autorisation de code à exécuter.

3) Avez importé les deux suivantes à votre MainActivity.java avec les autres importations: import android.contenu.Contexte; import android.os.Vibrateur;

4) Appelez votre vibration (examinée de manière approfondie dans ce fil déjà) - je l'ai fait dans une fonction distincte et appeler cela dans le code à d'autres points - selon ce que vous souhaitez utiliser pour appeler les vibrations que vous pourriez avoir besoin d'une image (Android: clic long sur un bouton -> effectuer des actions) ou le bouton de l'écouteur ou un objet cliquable tel que défini en XML (image Cliquable - android):

 public void vibrate(int duration)
 {
    Vibrator vibs = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    vibs.vibrate(duration);    
 }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X