सवाल एंड्रॉइड UserManager.isUserAGoat () के लिए उचित उपयोग के मामले?


मैं पेश किए गए नए एपीआई देख रहा था एंड्रॉइड 4.2। जबकि देख रहे हैं UserManager कक्षा मैं निम्नलिखित विधि में आया था:

 public boolean isUserAGoat()

यह निर्धारित करने के लिए प्रयोग किया जाता है कि यह कॉल करने वाला उपयोगकर्ता टेलीपोर्टेशन के अधीन है या नहीं।

यह लौटाता है कि उपयोगकर्ता यह कॉल कर रहा है या नहीं।

इसका उपयोग कब और कब किया जाना चाहिए?


3144
2017-11-14 08:34


मूल


आईबींडर पर LIKE_TRANSACTION और TWEET_TRANSACTION भी देखें developer.android.com/reference/android/os/...  developer.android.com/reference/android/os/... - auselen
संयोग से, क्रोम में "बकरी टेलीपोर्ट" आंतरिक आंकड़े भी हैं। संभवतः, यह स्मृति प्रबंधन तकनीक के लिए किसी प्रकार का आंतरिक नाम है। - Eric Martindale
परिवर्तन का स्रोत: https://android.googlesource.com/platform/frameworks/base/+/e4ab16ad98b183afbf7a21ad7314372de41a8b57%5E! - kennytm
@djechlin शायद यह वैध है, लेकिन ओपी को उपयोगकर्ता 15 9 7833 के उत्तर को स्वीकार करना चाहिए जो स्रोत को उद्धृत करता है और घुड़सवारों को साथ चलना चाहिए। यह हास्यास्पद है कि इस तरह के एक सवाल इतना कर्षण प्राप्त करता है। यह सिर्फ इस सवाल पूछने के लिए अपमानजनक लगता है और इसे खुला रहने की अनुमति देता है। - swasheck
यह एक बग है। हर समय झूठी वापसी करता है :( healthyhomesteading.com/wp-content/uploads/2011/05/goat.jpg - Thomas


जवाब:


से उनकी स्रोत, वापस करने के लिए इस्तेमाल विधि false जब तक कि यह एपीआई 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;
}

ऐसा लगता है कि इस विधि के लिए डेवलपर्स के रूप में हमारे लिए कोई वास्तविक उपयोग नहीं है। किसी ने पहले कहा है कि यह एक हो सकता है ईस्टर अंडा

एपीआई 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");
}

यहाँ है स्रोत लिंक


1514
2017-11-14 08:40



हमारे पास बंदरों हैं, developer.android.com/reference/android/app/... - auselen
थ्योरी: बकर सभी प्रकार के अनिश्चित स्थानों में पाए जाते हैं, जैसे कि चट्टानों, संभवतः नियमित गैर-बकरी उपयोगकर्ताओं से प्राप्त होने वाले स्थान रुझानों को कम करना। "टेलीपोर्टेशन" की व्याख्या कर सकते हैं, जो बकरियों को जंगली रूप से स्थानांतरित करने के लिए दिखाई दे सकता है क्योंकि सॉफ़्टवेयर गैर-बकरियों के लिए डिज़ाइन किए गए एल्गोस के साथ अपना स्थान निर्धारित करने का प्रयास करता है। - tedders
#define false random() % 2 लेकिन यह जावा नहीं है ... - ppalasek
यह एक इतिहास सबक है, जवाब नहीं। यहां तक ​​कि यदि यह एक ईस्टर अंडे है, तो इसके लिए एक वैध उपयोग केस है? एक ईस्टर अंडे होने से इसे उपयोगी होने से रोकता नहीं है, और आपने यह नहीं दिखाया है कि यह उपयोगी है या नहीं। - casperOne
मैं किसी भी ऐसे व्यक्ति के लिए बुरा महसूस करता हूं जिसने इस काम का गलती से उपयोग किया, इसे वापस लौटने की उम्मीद है false सदैव। - Martin Konecny


मुझे नहीं पता कि यह "आधिकारिक उपयोग केस" था, लेकिन निम्नलिखित जावा में एक चेतावनी उत्पन्न करता है (जो मिश्रित होने पर संकलन त्रुटियों का उत्पादन कर सकता है return बयान, पहुंचने योग्य कोड की ओर अग्रसर):

while (1 == 2) { // Note that "if" is treated differently
    System.out.println("Unreachable code");
}

हालांकि यह कानूनी है:

while (isUserAGoat()) {
    System.out.println("Unreachable but determined at runtime, not at compile time");
}

इसलिए मैं अक्सर कोड कोड को डमी करने के सबसे तेज़ तरीके के लिए एक मूर्खतापूर्ण उपयोगिता विधि लिखता हूं, फिर डिबगिंग को पूरा करने में इसे सभी कॉल मिलते हैं, इसलिए कार्यान्वयन में बदलाव नहीं होता है, इसका उपयोग इसके लिए किया जा सकता है।

JLS बताता है if (false) विशिष्ट कारण के लिए "पहुंचने योग्य कोड" को ट्रिगर नहीं करता है कि यह डीबग झंडे के लिए समर्थन तोड़ देगा, यानी, मूल रूप से यह उपयोग केस (एच / टी @auselen)। (static final boolean DEBUG = false; उदाहरण के लिए)।

मैंने बदल दिया while के लिये if, एक अधिक अस्पष्ट उपयोग मामले का उत्पादन। मैं मानना आप ग्रहण की तरह अपने आईडीई की यात्रा कर सकते हैं, इस व्यवहार के साथ, लेकिन यह संपादन भविष्य में 4 साल है, और मेरे पास खेलने के लिए ग्रहण पर्यावरण नहीं है।


917
2017-11-14 14:47



क्या आपने कोशिश की है (झूठा) {कथन;}? - penguat
अगर (Boolean.FALSE) {...} आमतौर पर काम करता प्रतीत होता है। - Guerrero
@djechlin मुझे नहीं पता कि यह केवल एंड्रॉइड है, मानक जावा में अगर (झूठा) {...} 'बस ठीक है (खुले jdk javac 1.6 और 1.7) - josefx
@ पीटरऑल्सन - यदि आप विशेष रूप से कोड शाखा का परीक्षण करने का प्रयास कर रहे हैं, जहां कोई गलत या सत्य हो जाता है, तो यह अनुकरण करने का सबसे सटीक और स्पष्ट तरीका है - यदि आप उचित से मेल नहीं खाते तो ब्लॉक को टिप्पणी करना कम सटीक हो सकता है ब्लॉक के अंत (शायद आपने तुरंत एक बुद्धिमान नोटिस नहीं किया है / / तत्काल अवरुद्ध करें), यदि आप निम्न को मजबूर कर रहे हैं तो यह एक संकलित त्रुटि का कारण बन जाएगा else ब्लॉक, आदि - djechlin
"बशर्ते कार्यान्वयन नहीं बदले"- और समस्या है। यह चेतावनी मुक्त "अगर (झूठा)" को लागू करने का एक विनाशकारी तरीका है क्योंकि कार्यान्वयन बदल सकता है और बदलता है। इस प्रश्न का मेरा उत्तर देखें: API21 के अनुसार isUserAGoat() यदि उपयोगकर्ता के पास एक विशिष्ट ऐप इंस्टॉल होता है तो सत्य वापस आता है। शुभकामनाएं निदान करते हैं कि जब आपका कोड अचानक "यादृच्छिक" उपकरणों पर अजीब तरीके से व्यवहार करना शुरू कर देता है! - Mark Whitaker


यह Google पर एक अंदरूनी मजाक प्रतीत होता है। यह Google क्रोम टास्क मैनेजर में भी दिखाया गया है। इसका कोई उद्देश्य नहीं है, कुछ इंजीनियरों के अलावा यह मनोरंजक लगता है। यदि आप करेंगे, तो यह एक उद्देश्य है।

  1. क्रोम में, टास्क मैनेजर के साथ खोलें खिसक जाना+Esc
  2. जोड़ने के लिए राइट क्लिक करें Goats Teleported स्तंभ।
  3. आश्चर्य।

इसके बारे में एक विशाल क्रोमियम बग रिपोर्ट भी है बहुत से टेलीपोर्ट बकरियां

chrome 

निम्नलिखित क्रोमियम स्रोत कोड स्निपेट से चोरी हो गया है HN टिप्पणियाँ।

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

706
2017-11-14 09:03



मेरे पास यह नहीं है, आप कहां पर क्लिक करते हैं? या इसके लिए क्या उपयोग किया जाता है - auselen
@auselen आपको बकरी टेलीपोर्ट कॉलम जोड़ने के लिए ड्रॉप डाउन मेनू देखने के लिए कॉलम शीर्षक पर राइट क्लिक करना होगा (कम से कम यह ओएस एक्स पर क्रोम में कैसे काम करता है)। cl.ly/Ksbd - greenie
विंडोज एक्सपी + नवीनतम क्रोम = यह वहां नहीं है, उबंटू पर मैं इसे देखता हूं। - auselen
विंडोज 7 चल रहा क्रोम नवीनतम डोई इसे या तो नहीं दिखाता है। : / - Isuru
यह संभावना है कि अंदर के मजाक की उत्पत्ति यहां है: googleblog.blogspot.be/2010/04/goats-are-baaaahk.html - CupOfTea696


@ डीजेक्लिन का पूरक उत्तर (रास्ते से अच्छा जवाब!), यह समारोह कॉल हो सकता है भी जब आप किसी विशिष्ट पुनरावृत्ति या किसी विशेष रिकर्सिव कॉल में रुकना चाहते हैं, तो आईडीई में ब्रेकपॉइंट रखने के लिए डमी कोड के रूप में उपयोग किया जाता है, उदाहरण के लिए:

enter image description here

isUserAGoat() एक डमी परिवर्तनीय घोषणा के बजाय उपयोग किया जा सकता है जिसे आईडीई में एक चेतावनी के रूप में दिखाया जाएगा और, ग्रहण विशेष मामले में, ब्रेकपॉइंट चिह्न को बंद कर देगा, जिससे इसे सक्षम / अक्षम करना मुश्किल हो जाएगा। यदि विधि को एक सम्मेलन के रूप में उपयोग किया जाता है, तो सभी आमंत्रणों को बाद में कुछ स्क्रिप्ट द्वारा फ़िल्टर किया जा सकता है (प्रतिबद्ध चरण के दौरान शायद?)।

enter image description here

Google लोग भारी ग्रहण उपयोगकर्ता हैं (वे अपनी कई परियोजनाएं एक्लिप्स प्लगइन के रूप में प्रदान करते हैं: एंड्रॉइड एसडीके, जीएई, इत्यादि), इसलिए @ डीजेक्लिन जवाब और यह पूरक उत्तर बहुत कम समझ में आता है (कम से कम मेरे लिए)।


258
2017-11-21 16:55



यदि आप जल्दी से कुछ परीक्षण करने के लिए "डमी" कोड लिख रहे हैं, ग्रहण चेतावनी के साथ समस्या क्या है ?? मुझे लगता है कि यह वास्तव में बहुत अच्छा है क्योंकि आप भूल गए हैं तो आप इसे पा सकते हैं - Tomasz
@ टोमाज़ समस्या यह है कि, ग्रहण में, चेतावनी चिह्न ब्रेकपॉइंट को बंद कर देता है, और आपको ब्रेकपॉइंट दृश्य को खोलने या इसे हटाने के लिए खोलना होगा - higuaro
हाँ, मेरे पास इसका समाधान है। आप चेतावनी प्रतीक पर राइट क्लिक कर सकते हैं और "टॉगल ब्रेकपॉइंट" का चयन कर सकते हैं। यदि निम्न पंक्ति / विकल्प सक्षम है तो इसका मतलब है कि ब्रेकपॉइंट बनाया गया है। मेरा मुद्दा था, डमी कोड खराब है और यह एक चेतावनी होनी चाहिए ताकि आप न भूलें;) - Tomasz
@ टोमाज़ उस समाधान के साथ समस्या यह है कि आप पहले से जानते हैं कि ब्रेकपॉइंट कहां है, इसलिए एक साधारण दृश्य निरीक्षण आपको यह बताने नहीं देगा कि चेतावनी एक ब्रेकपॉइंट छुपाती है, हालांकि एक बेहतर समाधान, सशर्त ब्रेकपॉइंट्स का उपयोग करना है, उनके साथ आप पूरी तरह से डमी कोड (और सम्मेलन विधियों) के बारे में भूल सकते हैं, लेकिन वे आईडीई के बीच भिन्न हैं और वर्कस्टेशन के बीच स्वचालित रूप से साझा नहीं किए जा सकते हैं - higuaro
क्यों न सिर्फ एक संक्षिप्त कथन का उपयोग करें ;? मेरा मतलब है, बकरियां स्पष्ट रूप से बेहतर हैं, लेकिन इसके आसपास पहले से ही एक आसान तरीका है - Chris M.


एंड्रॉइड के प्रत्येक संस्करण में एक मजेदार नाम विधि / निरंतर / जो कुछ भी है।

मैंने कभी देखा एकमात्र व्यावहारिक उपयोग अंतिम कॉल में था Google I / O प्रतियोगिता जहां उन्होंने पूछा कि यह किसी विशेष संस्करण के लिए क्या था, यह देखने के लिए कि प्रतियोगियों प्रत्येक रिलीज के लिए एपीआई diff रिपोर्ट पढ़ते हैं या नहीं। प्रतियोगिता में प्रोग्रामिंग समस्याएं भी थीं, लेकिन आम तौर पर कुछ सामान्य ज्ञान जिन्हें स्वचालित रूप से सबमिशन की संख्या को उचित मात्रा में कम करने के लिए स्वचालित रूप से वर्गीकृत किया जा सकता है, जो जांचना आसान होगा।


122
2017-11-14 17:26



"एंड्रॉइड के प्रत्येक संस्करण में एक मजाकिया नाम विधि / निरंतर / जो कुछ भी है।" क्या आप कुछ नाम दे सकते हैं? - Angelo.Hannes
उदाहरण के लिए, log.wtf नामक लॉग का एक निवल है जिसे वे कहते हैं क्या एक भयानक विफलता: पी - Aracem
डेल्फी के EProgrammerNotFound की तरह थोड़ा? stackoverflow.com/questions/2084120/... - Gerry Coll
हनीकॉम्ब एडाप्टर व्यूएनिमीटर # fyiWillBeAdvancedByHostKThx () है - Lance Nanek
@ एंजेलो। हेन्स, गुरुत्वाकर्षण के लिए सेंसर कॉन्स्टेंट्स में डेथ स्टार (स्टार वार्स) के लिए एक है - st0le


भाषण मान्यता के अनुशासन में, उपयोगकर्ताओं को विभाजित किया जाता है बकरियों तथा भेड़

उदाहरण के लिए, यहां पृष्ठ 89 पर:

भेड़ें वे लोग हैं जिनके लिए भाषण मान्यता असाधारण रूप से अच्छी तरह से काम करती है, और बकरियां ऐसे लोग हैं जिनके लिए यह असाधारण रूप से खराब काम करता है। केवल आवाज पहचानकर्ता जानता है कि उन्हें अलग करता है। लोग भविष्यवाणी नहीं कर सकते कि किसकी आवाज आसानी से पहचानी जाएगी और जिसका नहीं होगा। सबसे अच्छी नीति इंटरफ़ेस को डिज़ाइन करना है ताकि यह सभी प्रकार के वातावरण में सभी प्रकार की आवाज़ें संभाल सके

शायद, भविष्य में बकरियों के रूप में एंड्रॉइड उपयोगकर्ताओं को बकरियों की जरूरतों के लिए भाषण मान्यता इंजन को कॉन्फ़िगर करने में सक्षम होने की योजना बनाई गई है। ;-)


110
2018-05-31 09:33





बकरियों और बकरी के आधार पर Google को गंभीर पसंद है ईस्टर एग्स। यहां तक ​​कि भी किया गया है इसके बारे में पिछली स्टैक ओवरफ़्लो पोस्ट

जैसा कि पिछले पदों में उल्लेख किया गया है, यह क्रोम टास्क मैनेजर के भीतर भी मौजूद है (यह पहली बार 200 9 में जंगली में दिखाई दिया):

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

और फिर विंडोज़ में, 2010 की शुरुआत में क्रोम के लिनक्स और मैक संस्करण)। वास्तव में "बकरी टेलीपोर्ट" की संख्या वास्तव में है बिना सोचे समझे:

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

बकरियों के अन्य Google संदर्भों में शामिल हैं:

जहां तक ​​मैं कह सकता हूं, बकरियों और Google के सबसे शुरुआती सहसंबंध मूल "मूसिंग विद बकरी" ब्लॉग पोस्ट में हैं।

हम सुरक्षित रूप से यह मान सकते हैं कि यह केवल ईस्टर अंडे है और लौटने के अलावा, कोई वास्तविक दुनिया का उपयोग नहीं है false


104
2017-11-15 10:33



विभिन्न आंतरिक सॉफ्टवेयर में बकरी संदर्भों के लिए आईबीएम भी अफवाह है। - goat


एपीआई 21 के रूप में (पहला एंड्रॉइड 5.0 / लॉलीपॉप एसडीके), यह पता लगाता है कि क्या बकरी सिम्युलेटर ऐप स्थापित है:

/**
 * 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 प्रत्येक डिवाइस के लिए अब एक यादृच्छिक यादृच्छिक मूल्य देता है: यदि यह आपके कोड में पर्याप्त गहरा दफनाया गया था तो यह एक ले सकता है लंबा यह पता लगाने का समय कि आपकी नई बग कहां से आ रही हैं।

निचली पंक्ति: यदि आप किसी विधि के कार्यान्वयन को नियंत्रित नहीं करते हैं और एपीआई दस्तावेज में बताए गए उद्देश्यों के अलावा इसका उपयोग करने का निर्णय लेते हैं, तो आप परेशानी के लिए जा रहे हैं।


101
2017-10-20 10:00



किसी ने कभी भी किसी तरह का क्यों रखा होगा if(false) उत्पादन में? यहां आओ। यदि आपका कोड ऐसा दिखता है तो यह कार्यान्वयन बदल रहा है कम से कम आपकी समस्याओं का - djechlin
खैर, वास्तविक एपीआई दस्तावेज (उपयोगकर्ता टेलीपोर्टेशन प्रवृत्तियों) के अनुसार, मुझे लगता है कि हमेशा झूठी वापसी के लिए इसका उपयोग करना वास्तव में है केवल अनुबंध का पालन करने का तरीका। फिर भी, आप एक अच्छा मुद्दा लाते हैं। - codebreaker
बकरी सिम्युलेटर Google play पर भयानक लग रहा है play.google.com/store/apps/...। यह जानना अच्छा होगा कि बकरी होने से कोई क्या हासिल कर सकता है। - cowls


एक समान कॉल है, isUserAMonkey(), अगर यह सच हो जाता है बंदररुनर उपकरण उपयोग किया जा रहा है। एसडीके स्पष्टीकरण सिर्फ इस के रूप में उत्सुक है।

public static boolean isUserAMonkey(){}     

रिटर्न true यदि उपयोगकर्ता इंटरफ़ेस वर्तमान में बंदर द्वारा गड़बड़ कर रहा है।

यहाँस्रोत है

मुझे उम्मीद है कि यह एक नए की प्रत्याशा में जोड़ा गया था एसडीके टूल को बकरी और इच्छा के साथ कुछ नाम दिया गया वास्तव में उस उपकरण की उपस्थिति के लिए परीक्षण करने के लिए कार्यात्मक हो।

एक समान सवाल भी देखें, ActivityManager में अजीब फ़ंक्शन: isUseramonkey है। इसका क्या मतलब है, इसका उपयोग क्या है?


94
2017-11-16 21:33



इस के साथ मेरी धारणा यह है कि यह अनुमति देता है ActivityManager रिपोर्ट करने के लिए कि क्या इसे लागू किया गया है monkey ui तनाव परीक्षण उपकरण, लेकिन मैंने कभी इसकी पुष्टि नहीं की है। - CtrlF


enter image description here

ग्रह के सबसे दूरस्थ पहाड़ों में, बकरी की एक उन्नत प्रजाति है जो वर्तमान में मनुष्यों की तरह फोन का उपयोग करने में सक्षम है!

लीक फुटेज: youtu.be/YJwZMUn7GdQ 

enter image description here

Google ने इसे देखा होगा और प्रौद्योगिकी उन्नति की अगली पंक्ति में रहने के प्रयास में उनके लिए समर्थन प्रदान करने का निर्णय लिया होगा।


51
2017-09-30 14:00



इसे AppCompat कहा जाता है। - silentsudo
अभी तक का सबसे अच्छा जवाब - Benobab
बकरी गोपनीयता? किसी को? - Ohad Cohen