java - userid - usermanagerservice
适用于Android UserManager.isUserAGoat()的用例? (8)
我正在研究Android 4.2中引入的新API。 在查看UserManager
类时,我遇到了以下方法:
public boolean isUserAGoat()
用于确定进行此呼叫的用户是否受传送的影响。
返回进行此调用的用户是否为山羊。
应该如何以及何时使用?
从API 21(第一个Android 5.0 / Lollipop SDK)开始 ,它会检测是否安装了Goat Simulator应用程序:
/**
* 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");
}
这应该清楚地表明, djechlin建议将其用作无警告if (false)
是一种潜在的灾难性策略。 之前为每个设备返回false
的内容现在返回一个看似随机的值:如果在代码中埋藏得足够深,则可能需要很长时间才能确定新bug的来源。
结论:如果您不控制方法的实现并决定将其用于API文档中未说明的目的,那么您将遇到麻烦。
在这个星球上最偏远的山脉中,有一种先进的山羊种类,它们似乎能够像我们人类一样使用手机!
泄露的镜头: youtu.be/YJwZMUn7GdQ
谷歌必须已经发现了这一点,并决定为他们提供支持,试图保持技术进步的前沿。
在每个版本的Android中都有一个有趣的命名方法/常量/任何东西。
我见过的唯一实际用途是在Google I / O竞赛的最后召唤中,他们询问特定版本的内容,看看参赛者是否阅读了每个版本的API差异报告。 比赛也存在编程问题,但通常会有一些可以自动评分的琐事,以便将提交的数量降低到合理的数量,这样更容易检查。
在语音识别学科中,用户分为山羊和绵羊 。
例如,请参见第89页 :
绵羊是语音识别非常好的人,山羊是非常糟糕的人。 只有语音识别器知道它们之间的区别。 人们无法预测谁的声音将被轻易识别,谁的声音不会被识别。 最好的策略是设计界面,以便它可以处理各种环境中的各种声音
也许,计划在未来将Android用户标记为山羊,以便能够配置语音识别引擎以满足山羊的需求。 ;-)
有一个类似的调用isUserAMonkey()
,如果使用MonkeyRunner工具则返回true。 SDK解释和这个一样好奇。
public static boolean isUserAMonkey(){}
如果用户界面当前正被猴子搞乱,则返回
true
。
Here是来源。
我希望这是为了预期一个名为山羊的新SDK工具,并且实际上可用于测试该工具的存在。
另请参阅类似的问题, ActivityManager中的Strange函数:isUserAMonkey。 这意味着什么,它的用途是什么? 。
有趣的复活节彩蛋
在Ubuntu版本的Chrome中,在任务管理器( shift + esc )中,右键单击可以添加一个科幻列,其意大利语版本为“Capre Teletrasportate”(传送山羊)。
关于它的一个有趣的理论就在here 。
请参阅以下源代码:
/**
* 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");
}
谷歌非常喜欢山羊和山羊的复活节彩蛋 。 甚至还有关于它的帖子 。
正如之前的帖子中所提到的,它也存在于Chrome任务管理器中( 它在2009年首次出现 ):
<message name="IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN" desc="The goats teleported column">
Goats Teleported
</message>
然后在2010年初的Windows,Linux和Mac版Chrome中 )。 “山羊传送”的数量实际上是随机的 :
int TaskManagerModel::GetGoatsTeleported(int index) const {
int seed = goat_salt_ * (index + 1);
return (seed >> 16) & 255;
}
其他谷歌参考山羊包括:
据我所知,山羊和谷歌的最早相关性属于最初的“割山羊”博客文章。
我们可以安全地假设它只是一个复活节彩蛋,除了返回false
之外没有现实世界的使用。