11 Soru: Android için uygun kullanım örnekleri UserManager.isUserAGoat ()?

tarafından oluşturulan soru Fri, Sep 7, 2018 12:00 AM

Android 4.2 'de tanıtılan yeni API’leri inceliyordum. . UserManager sınıfına bakarken şu yöntemle karşılaştım:

 
public boolean isUserAGoat()
     

Bu çağrıyı yapan kullanıcının ışınlanmalara tabi olup olmadığını belirlemek için kullanılır.

     

Bu aramayı yapan kullanıcının keçi olup olmadığını döndürür.

Bu nasıl ve ne zaman kullanılmalı?

    
3412
  1. @ Martindale: Söylediklerinin hiçbiri doğru değil; bir olay değildi, içsel değildi ve bir hafıza yönetimi tekniği değildi. Varsayımlar yapmak yerine koduna danışın ... :)
    2012-11-14 20: 38: 55Z
  2. 2012-11-15 04: 58: 42Z
  3. İlk ölüm yıldızındaki yerçekimi için sabitler de var developer.android.com/reference/android/hardware/… ve TV şovu adasında geliştirici.android.com/reference/android/hardware/… elbette ki sayılardır.
    2013-03-29 22: 09: 56Z
  4. 2016-04-25 07: 49: 51Z
  5. @ ccpizza, şaka yapıyor olmalısınız. 'kırgın' insanlardan biri olmanız gerekir.
    2018-05-09 16: 16: 51Z
11 Yanıtlar                              11                         

kaynak , API 21’de değiştirilinceye kadar false’a geri dönmek için kullanılan yöntem.

 
/**
 * 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;
}

Yöntemin geliştiriciler olarak bizim için gerçek bir kullanımı yok gibi görünüyor. Birisi daha önce Paskalya yumurtası olabileceğini belirtti. .

API 21’de uygulama, com.coffeestainstudios.goatsimulator paketiyle yüklü bir uygulama olup olmadığını kontrol etmek için değiştirildi

 
/**
 * 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");
}

İşte kaynak ve 1669

2019-01-22 11: 07: 38Z
  1. Teori: Keçiler, dik uçurumlar gibi normal keçi olmayan kullanıcılardan elde ettikleri konum eğilimlerini arttıran her tür güvencesiz yerlerde bulunur. Çılgınca görünen keçilerin olabileceği “ışınlanma” yı açıklayabilir.Yazılım, konumlarını, keçi olmayanlar için tasarlanmış algolarla belirlemeye çalıştığında bulun.
    2012-11-14 12: 58: 36Z
  2. #define false random() % 2 ama bu Java değil ...
    2012-11-14 14: 12: 52Z
  3. Bu bir tarih dersi, cevap değil. Paskalya yumurtası olsa bile, bunun için geçerli bir kullanım davası var mı? Paskalya yumurtası olmak faydalı olmasının önüne geçmez ve faydalı olup olmadığını göstermediniz.
    2012-11-14 20: 26: 37Z
  4. 2015-02-21 08: 07: 45Z
  5. Bu işlevi kullananlar için kendimi kötü hissediyorum, sonsuza dek false döndürmesini bekliyoruz.
    2015-04-27 05: 11: 45Z

Bunun "" "resmi kullanım davası olup olmadığını bilmiyorum, ancak aşağıdakiler Java'da bir uyarı oluşturur (return ifadeleriyle karıştırıldığında derleme hataları oluşturabilir ve ulaşılamaz kodlara yol açabilir):

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

Ancak bu yasaldır:

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

Bu yüzden sık sık kendimi bir kod bloğunu boşa çıkarmanın en hızlı yolu için aptalca bir yardımcı program yöntemi yazarken buluyorum, ardından hata ayıklamayı tamamlarken tüm çağrıları buluyorum, bu nedenle uygulama bunun için kullanılamıyorsa. /p>

JLS puanları if (false), hata ayıklama bayrakları, yani temelde bu kullanım durumu (h /t @auselen) için desteği kırmasının belirli bir nedeni nedeniyle "erişilemez kod" u tetiklemez. (Örneğin, static final boolean DEBUG = false;).

while'u if için değiştirdim, daha karanlık bir kullanım çantası ürettim. Bu davranışla IDE'nizi Eclipse gibi düzenleyebileceğinize inanıyorum ancak bu düzenleme geleceğe 4 yıl kaldı ve oynayacak bir Eclipse ortamım yok.

    
952
2018-02-12 21: 13: 44Z
  1. eğer (false) {ekstre;}?
    denediniz mi?
    2012-11-14 15: 00: 16Z
  2. if (Boolean.FALSE) {...} genellikle çalışıyor gibi görünüyor.
    2012-11-14 19: 53: 36Z
  3. @ djechlin Bunun yalnızca android olup olmadığını bilmiyorum, standart java `da (false) {...}` sadece iyi derler (açık jdk javac 1.6 ve 1.7)
    2012-11-14 20: 24: 37Z
  4. @ PeterOlson - özellikle bir ifanın yanlış veya doğru gittiği bir kod dalını test etmeye çalışıyorsanız, bunu simüle etmenin en kesin ve açık yoludur - yorum yapma bloğun uygun ucuyla eşleşmezseniz blok daha az doğru olabilir (belki /hemen takip eden bloğun gizlice olduğunu farketmediniz), zorla zorlamanız durumunda derleme hatasına neden olur else numaralı bloğun ardından vs.
    2012-11-15 02: 01: 38Z
  5. "uygulamanın değişmemesi koşuluyla" - ve sorun var. Bu, uygulamada değişiklik yapabileceği ve yapabileceği için “if (false)” uyarısız uygulamanın felaket bir yoludur. Bu soruya cevabımı gör: bir kullanıcı yüklü bir uygulamaya sahipse, API21 isUserAGoat() tarihinden itibaren doğru döner. Kodunuz aniden "rasgele" cihazlarda garip davranmaya başladığında teşhis koymada iyi şanslar!
    2014-11-05 12: 29: 56Z

Bu, Google’da bir iç şaka gibi görünüyor. Aynı zamanda Google Chrome görev yöneticisinde de yer aldı. Bir amacı yok,Bazı mühendisler dışında eğlenceli buluyorlar. İsterseniz bu, kendi başına bir amaçtır.

  1. Chrome'da, Görev Yöneticisi'ni Shift + Esc ile açın.
  2. Goats Teleported sütununu eklemek için sağ tıklayın.
  3. Wonder.

Çok fazla ışınlanmış keçi hakkında büyük bir Chromium hata raporu bile var.

chrome

Şu Krom hb = HEAD # l599 "> kaynak kod pasajı , HN yorumlarından çalınır.

 
int TaskManagerModel::GetGoatsTeleported(int index) const {
  int seed = goat_salt_ * (index + 1);
  return (seed >> 16) & 255;
}
    
734
2012-11-15 01: 06: 47Z
  1. bende yok, nereye sağ tıklıyorsunuz? veya ne için kullanılır
    2012-11-14 09: 17: 37Z
  2. @ auselen Keçi Teleported sütununu eklemek için açılır menüyü görmek için bir sütun başlığına sağ tıklamanız gerekir (en azından Chrome'da nasıl çalışır? OS X). cl.ly/Ksbd
    2012-11-14 09: 38: 39Z
  3. Windows XP + en yeni Chrome = orada değil, Ubuntu'da görüyorum.
    2012-11-14 09: 47: 29Z
  4. Chrome son sürümünü çalıştıran Windows 7 de göstermiyor. : /
    2012-11-14 17: 51: 35Z
  5. İç şakanın burada kökenleri olması muhtemeldir: googleblog.blogspot.be/2010/04/goats-are-baaaahk.html
    2012-11-20 21: 59: 06Z

@djechlin'i tamamlayan cevap (bu arada iyi cevap!), bu işlev çağrısı da olabilir belirli bir yinelemeyi veya belirli bir özyinelemeli çağrıyı durdurmak istediğinizde bir IDE'de bir kesme noktasını tutmak için yapay kod olarak kullanılır, örneğin:

resim tanımını buraya girin

isUserAGoat(), IDE'de bir uyarı olarak gösterilecek olan sahte değişken bildirimi yerine kullanılabilir ve Eclipse'de özel durumda, kesme noktası işaretini tıkatarak etkinleştirmeyi /devre dışı bırakmayı zorlaştırabilir. Yöntem bir kural olarak kullanılırsa, tüm istilalar daha sonra bir komut dosyası tarafından filtrelenebilir (işlem aşamasında belki?).

resim tanımını buraya girin

Google çocuklar ağır Eclipse kullanıcılarıdır (projelerinin birçoğunu Eclipse eklentisi olarak sağlarlar: Android SDK, GAE, vb.), bu nedenle @djechlin yanıtı ve bu tamamlayıcı yanıt çok anlamlı (en azından benim için). /p>     

274
2017-05-23 12: 02: 59Z
  1. Sadece hızlı bir şekilde test etmek için "kukla" kod yazıyorsanız, Eclipse uyarısındaki sorun nedir? Sanırım bu unutmuş olmanız durumunda bulabileceğiniz kadar harika.
    2013-04-30 20: 16: 57Z
  2. @ Tomasz sorunu şu ki, Eclipse'de uyarı işareti kesme noktasını tutar ve kesme noktasını devre dışı bırakmak veya kaldırmak için kesme görünümünü açmanız gerekir
    2013-05-08 22: 18: 39Z
  3. Evet, bunun için bir çözümüm var. Uyarı sembolüne sağ tıklayıp "Kesme Noktasını Aç" komutunu seçebilirsiniz. Aşağıdaki satır /seçenek etkinse, kesme noktasının oluşturulduğu anlamına gelir. Demek istediğim, sahte kod kötü ve bir uyarı olmalı, böylece unutmam;)
    2013-05-09 01: 40: 38Z
  4. @ Tomasz Bu çözümle ilgili sorun, kesme noktasının nerede olduğunu önceden bilmenizdir, bu nedenle basit bir görsel inceleme, uyarının bir kesme noktasını gizlediğini bilmez daha iyi bir çözüm olsa da, koşullu kesme noktalarını kullanmaktır, bunlarla birlikte sahte kodu (ve kongre yöntemlerini) tamamen unutabilirsiniz, ancak bunlar IDE'ler arasında farklılık gösterir ve iş istasyonları arasında otomatik olarak paylaşılamaz
    2013-05-16 14: 51: 43Z
  5. Neden sadece boş bir ifade ; kullanmıyorsunuz? Yani, keçiler daha iyi, ama bunun için kolay bir yol var zaten.
    2017-03-15 17: 57: 13Z

Android'in her sürümünde, komik /sabit /komik adında bir ad var.

Gördüğüm tek pratik kullanım, sordukları Google I /O Yarışması için Son Çağrıda oldu. belirli bir sürüm için ne olduğunu, yarışmacıların her sürüm için API fark raporunu okuyup okumadığını görmek. Yarışmada da programlama sorunları vardı, ancak genellikle başvuru sayısını kontrol etmesi kolay olan makul miktarlara indirgemek için otomatik olarak derecelendirilebilecek bazı bilgiler.

    
134
2012-12-10 02: 46: 25Z
  1. "Komik bir yöntem /sabit /Android'in her sürümünde her ne varsa." Biraz ad verebilir misin?
    2012-11-15 08: 30: 43Z
  2. Örneğin, Log.wtf adında bir Korkunç Hata: P
    olarak adlandırdıkları bir günlük kaydı var.
    2012-11-15 10: 41: 51Z
  3. Delphi'nin EProgrammerNotFound'u gibi bir bit mi? stackoverflow.com/questions/2084120/… 'de istisnasız //div >
    2012-11-15 10: 52: 44Z
  4. HoneyComb, AdapterViewAnimator # fyiWillBeAdvancedByHostKThx ()
    'dir.
    2012-11-15 14: 11: 05Z
  5. @ Angelo.Hannes, Yerçekimi Algılayıcı Sabitlerinde Ölüm Yıldızı (Yıldız Savaşları) için bir tane var
    2012-11-15 14: 58: 11Z

Konuşma tanıma disiplininde, kullanıcılar keçilere ve koyunlara ayrılır.

Örneğin, burada sayfa 89 :

  

Koyunlar, konuşma tanımanın son derece iyi çalıştığı, keçiler ise son derece zayıf çalıştığı kişilerdir. Sadece ses tanıyıcı, onları neyin ayırdığını bilir. İnsanlar kimin sesinin kolayca tanınacağını ve kimin olmayacağını tahmin edemezler. En iyi politika, arayüzü her türlü seste her türlü sesi işleyebilecek şekilde tasarlamaktır.

Belki de, konuşma tanıma motorunu keçilerin ihtiyaçları için yapılandırabilmeleri için Android kullanıcılarının gelecekte keçi olarak işaretlenmesi planlanmaktadır. ; -)

    
124
2018-02-12 21: 16: 35Z

Google’ın, Paskalya yumurtaları 'na dayalı keçi ve keçi için ciddi bir beğenisi vardır. . önceki Stack Overflow yayınları hakkında .

Önceki yayınlarda belirtildiği gibi, Chrome görev yöneticisinde de var ( ilk olarak 2009'da vahşi ortamda ortaya çıktı ):

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

Ve ardından Windows, Linux ve Mac sürümlerinde 2010'un başlarında Chrome ). "Teleported Teleported" sayısı aslında rasgele :

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

Keçilere yapılan diğer Google referansları şunlardır:

Keçilerin ve Google'ın en eski korelasyonu, söyleyebileceğim kadarıyla, orijinal "Keçi ile biçme" blog gönderisine aittir.

Bunun yalnızca bir Paskalya yumurtası olduğunu ve false'un iadesi dışında gerçek dünya kullanımının olmadığını güvenle söyleyebiliriz.

    
116
2017-05-23 11: 47: 32Z
  1. ibm ayrıca, çeşitli iç yazılımlar boyunca keçi referanslarına sahip olduğu söyleniyor.
    2014-09-17 04: 29: 52Z
  2. "Keçi ile biçme" referansı için arşivlenmiş bağlantı: web.archive.org/web/20100619024942/https://…
    2019-03-25 17: 14: 24Z

API 21'den itibaren (ilk Android 5.0 /Lollipop SDK) , bu Keçi Simülatörü uygulaması kuruldu:

 
/**
 * 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");
}

Bu, djechlin'in önerisinin olduğunu açıkça belirtmelidir. > Uyarı gerektirmeden kullanılması if (false) potansiyel olarak felaket bir stratejidir. Her cihaz için daha önce false döndüren şey şimdi görünüşte rastgele bir değer döndürür: kodunuzda yeterince derin bir şekilde gömülmüş olsaydı, yeni hatalarınızın nereden geldiğini anlamak için uzun bir zaman alabilirdi.

Alt satır: Bir yöntemin uygulanmasını kontrol etmezseniz ve onu API belgesinde belirtilenler dışında bir amaç için kullanmaya karar verirseniz, başınız belaya girecektir.

    
111
2017-09-20 10: 30: 07Z
  1. Neden birileri üretime herhangi bir tür if(false) koyar ki? Buraya gel. Kodunuz böyle görünüyorsa, bu uygulamanın değiştirilmesi sorunlarınızın en az değeridir.
    2014-11-05 15: 56: 59Z
  2. Eh, gerçek API belgelerine göre (kullanıcı ışınlanma eğilimleri), her zaman false döndürmek için kullanmanın gerçekten olduğunu sözleşmeyi takip edin. Yine de iyi bir noktaya değindin.
    2014-11-18 16: 20: 52Z
  3. Keçi simülatörü google oyununda harika görünüyor play.google.com/store/apps/… . Birinin keçi olmaktan ne kazanabileceğini bilmek iyi olurdu.
    2014-11-29 22: 12: 55Z

MonkeyRunner aracı kullanılıyor. SDK açıklaması bu kadar merak uyandırıcı.

 isUserAMonkey()      

Kullanıcı arayüzü şu anda bir maymun tarafından karıştırılıyorsa,

public static boolean isUserAMonkey(){}     
değerini döndürür.

İşte kaynaktır.

Bunun, yeni bir SDK aracı beklentisiyle eklenmesini bekliyorum. ve aslında bu aracın varlığını test etmek için işlevsel olacak.

Benzer bir soruya bakın, ActivityManager'da Tuhaf İşlev: isUserAMonkey. Bunun anlamı nedir, kullanımı nedir? .

    
102
2017-05-23 12: 26: 36Z
  1. Buna ilişkin benim varsayımım, true'un ActivityManager ui stres testi aracı tarafından çağrılıp başlatılmadığını bildirmesine izin vermesidir, ancak bunu hiçbir zaman onaylamadım.
    2014-01-28 08: 16: 28Z

Komik Paskalya Yumurtası.
Chrome'un Ubuntu sürümünde, Görev Yöneticisi'nde ( shift + esc ), sağ tıklayıp italyanca sürümünde "Capre Teletrasportate" olan bir bilim-kurgu sütunu ekleyebilirsiniz. (Teleported Goats).

Bununla ilgili komik bir teori: burada .

    
35
2016-04-21 11: 38: 48Z
  1. Artık bulamıyor gibiyim :(
    2018-12-23 23: 04: 47Z

İç şaka değil Görünüşe göre sadece bir uygulama denetleyicisi için Keçi Simülatörü - Kahve Lekesi Stüdyolarına Göre

Keçi Simülatörü kuruluysa, bir Keçisiniz. Kurmadıysanız, bir keçi değil.

Geliştiricilerin biri tarafından daha çok kişisel bir deney olduğunu, büyük olasılıkla ortak bir ilgi alanına sahip kişileri bulmanın sosyal bir deney olduğunu düşünüyorum.

    
1
2019-04-03 05: 50: 24Z
  1. Yöntem keçi simülatöründen önce oluşturuldu. Uygulamanın şimdi yüklü olup olmadığını kontrol etmesine rağmen, daha önce hiçbir şey yapmadı. Ve yine de bir şaka.
    2019-06-04 12: 07: 12Z
monkey
kaynak yerleştirildi İşte