我正在查看Android 4.2中引入的新API。在查看UserManager类时,我遇到了以下方法:
公共布尔值isUserAGoat()用于确定拨打此呼叫的用户是否需要进行远程传送。返回进行此调用的用户是否为山羊。
该如何使用以及何时使用?
我正在查看Android 4.2中引入的新API。在查看UserManager类时,我遇到了以下方法:
公共布尔值isUserAGoat()用于确定拨打此呼叫的用户是否需要进行远程传送。返回进行此调用的用户是否为山羊。
该如何使用以及何时使用?
当前回答
在语音识别领域,用户分为山羊和绵羊。
例如,第89页:
绵羊是语音识别效果特别好的人,山羊是语音识别性能特别差的人。只有语音识别器知道它们之间的区别。人们无法预测谁的声音容易被识别,谁的声音不会被识别。最好的策略是设计界面,使其能够处理各种环境中的各种声音
也许,未来计划将Android用户标记为山羊,以便能够根据山羊的需要配置语音识别引擎
其他回答
这似乎是谷歌内部的一个笑话。谷歌Chrome任务管理器中也有此功能。除了一些工程师觉得它很有趣之外,它没有任何用途。这本身就是一个目的,如果你愿意的话。
在Chrome中,用Shift+Esc键打开任务管理器。右键单击以添加Goats Teleported列。想知道
甚至有一个巨大的铬虫报告说,有太多的被传送的山羊。
以下Chromium源代码片段是从HN注释中窃取的。
int TaskManagerModel::GetGoatsTeleported(int index) const {
int seed = goat_salt_ * (index + 1);
return (seed >> 16) & 255;
}
从API 21(第一个Android 5.0/棒棒糖SDK)开始,这将检测山羊模拟器应用程序是否已安装:
/**
* 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将其用作无警告的建议是一种潜在的灾难性策略。以前为每个设备返回的错误现在返回了一个看似随机的值:如果这个值在代码中埋得足够深,那么可能需要很长时间才能弄清楚新的bug来自何处。
一句话:如果你不控制一个方法的实现,并决定将其用于API文档中所述以外的目的,那么你就会遇到麻烦。
Android R更新:
在Android R中,此方法始终返回false。谷歌表示,这样做是为了“保护山羊隐私”:
/**
* 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>
*
* <p>As of {@link android.os.Build.VERSION_CODES#R}, this method always returns
* {@code false} in order to protect goat privacy.</p>
*
* @return Returns whether the user making this call is a goat.
*/
public boolean isUserAGoat() {
if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R) {
return false;
}
return mContext.getPackageManager()
.isPackageAvailable("com.coffeestainstudios.goatsimulator");
}
上一个答案:
从他们的源代码来看,该方法在API 21中更改之前一直返回false。
/**
* 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;
}
作为开发人员,该方法似乎对我们没有实际用处。之前有人说过这可能是一个复活节彩蛋。
在API 21中,实现被更改为检查是否安装了带有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");
}
这是来源和变化。
在语音识别领域,用户分为山羊和绵羊。
例如,第89页:
绵羊是语音识别效果特别好的人,山羊是语音识别性能特别差的人。只有语音识别器知道它们之间的区别。人们无法预测谁的声音容易被识别,谁的声音不会被识别。最好的策略是设计界面,使其能够处理各种环境中的各种声音
也许,未来计划将Android用户标记为山羊,以便能够根据山羊的需要配置语音识别引擎
有趣的复活节彩蛋。在Ubuntu版本的Chrome中,在任务管理器(shift+esc)中,右键单击可以添加一个科幻专栏,在意大利语版本中为“Capre Teletransportate”(Teleported Goats)。
这里有一个有趣的理论。