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




android (8)

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

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

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

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

public boolean isUserAGoat()

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

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

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


उनके source , एपीआई 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;
}

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

एपीआई 21 में कार्यान्वयन को बदलने के लिए बदल दिया गया था कि पैकेज com.coffeestainstudios.goatsimulator साथ एक स्थापित ऐप है 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");
}

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


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

public static boolean isUserAMonkey(){}     

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

Here स्रोत है।

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

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


कृपया नीचे स्रोत कोड देखें:

/**
 * 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 पर :

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

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


मजेदार ईस्टर अंडे।
क्रोम के उबंटू संस्करण में, टास्क मैनेजर ( शिफ्ट + एएससी ) में, राइट-क्लिक के साथ आप एक विज्ञान-फाई कॉलम जोड़ सकते हैं जो इतालवी संस्करण में "कैपर टेलीलेटपोर्ट" (टेलीपोर्टेड बकरी) है।

इसके बारे में एक मजाकिया सिद्धांत here


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

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

बहुत से टेलीपोर्ट बकरियों के बारे में भी एक बड़ी क्रोमियम बग रिपोर्ट है।

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

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

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

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

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





usermanager