java - Cas d'utilisation appropriés pour Android UserManager.isUserAGoat ()?




6 Answers

Depuis leur source , la méthode utilisée pour renvoyer false jusqu'à ce qu'elle soit modifiée dans l'API 21.

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 * @return whether the user making this call is a goat 
 */
public boolean isUserAGoat() {
    return false;
}

Il semble que la méthode ne soit pas vraiment utile pour nous en tant que développeurs. Quelqu'un a déjà déclaré qu'il pourrait s'agir d'un oeuf de Pâques .

Dans l'API 21, l'implémentation a été modifiée pour vérifier s'il existe une application installée avec le package com.coffeestainstudios.goatsimulator

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 *
 * <p>As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
 * now automatically identify goats using advanced goat recognition technology.</p>
 *
 * @return Returns true if the user making this call is a goat.
 */
public boolean isUserAGoat() {
    return mContext.getPackageManager()
            .isPackageAvailable("com.coffeestainstudios.goatsimulator");
}

Voici le lien source

Je regardais les nouvelles API introduites dans Android 4.2 . En regardant la classe UserManager , je suis tombé sur la méthode suivante:

public boolean isUserAGoat()

Utilisé pour déterminer si l'utilisateur effectuant cet appel est sujet à des téléportations.

Indique si l'utilisateur effectuant cet appel est une chèvre.

Comment et quand cela devrait-il être utilisé?




Cela semble être une blague à l'intérieur de Google. Il figure également dans le gestionnaire de tâches de Google Chrome. Cela n'a aucun but, sauf que certains ingénieurs trouvent cela amusant. Ce qui est un but en soi, si vous voulez.

  1. Dans Chrome, ouvrez le gestionnaire de tâches avec Maj + Échap .
  2. Cliquez avec le bouton droit pour ajouter la colonne Goats Teleported .
  3. Merveille.

Il existe même un énorme rapport de bogue sur Chromium concernant trop de chèvres téléportées .

L' extrait de code source Chromium suivant est volé dans les commentaires HN .

int TaskManagerModel::GetGoatsTeleported(int index) const {
  int seed = goat_salt_ * (index + 1);
  return (seed >> 16) & 255;
}



Il existe une méthode nommée amusante / constante / quelconque dans chaque version d'Android.

La seule utilisation pratique que j'ai jamais vue était dans le dernier appel pour le concours d' entrées / sorties de Google, où ils ont demandé ce qu'il en était pour une version particulière, afin de voir si les candidats lisaient le rapport de différenciation de l'API pour chaque version. Le concours avait aussi des problèmes de programmation, mais en général, certaines anecdotes pouvaient être classées automatiquement en premier pour réduire le nombre de soumissions à des quantités raisonnables qu'il serait plus facile de vérifier.




Google aime beaucoup les chèvres et les œufs de Pâques à base de chèvre. Il y a même eu de précédents articles sur à ce sujet .

Comme il a été mentionné dans des messages précédents, il existe également dans le gestionnaire de tâches de Chrome ( apparu pour la première fois dans la nature en 2009 ):

<message name="IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN" desc="The goats teleported column">
    Goats Teleported
</message>

Et puis dans les versions Windows, Linux et Mac de Chrome début 2010 ). Le nombre de "Chèvres téléportées" est en fait aléatoire :

 int TaskManagerModel::GetGoatsTeleported(int index) const {
     int seed = goat_salt_ * (index + 1);
     return (seed >> 16) & 255;
 }

Les autres références de Google aux chèvres incluent:

La première corrélation entre Google et les chèvres appartient à l'article de blogue original "Tondre avec des chèvres", pour autant que je sache.

Nous pouvons sans risque supposer qu'il s'agit simplement d'un œuf de Pâques et que son utilisation n'est pas réelle, à l'exception du false .




Il existe un appel similaire, isUserAMonkey() , qui renvoie la valeur true si l’ outil MonkeyRunner est utilisé. L'explication du SDK est aussi curieuse que celle-ci.

public static boolean isUserAMonkey(){}     

Renvoie true si l'interface utilisateur est en train d'être gâchée par un singe.

Here la source.

Je suppose que cela a été ajouté en prévision d'un nouvel outil SDK nommé quelque chose avec une chèvre et qu'il sera en fait fonctionnel pour tester la présence de cet outil.

Voir également une question similaire, Fonction étrange dans ActivityManager: isUserAMonkey. Qu'est-ce que cela signifie, à quoi sert-il? .




Oeuf de Pâques drôle.
Dans la version Ubuntu de Chrome, dans le Gestionnaire des tâches ( shift + échap ), vous pouvez ajouter avec un clic droit une colonne de science-fiction qui, dans la version italienne, est "Capre Teletrasportate".

Une théorie amusante à ce sujet est here .




Related