java - Android UserManager.isUserAGoat()의 올바른 사용 사례?





(11)


아래 소스 코드를 참조하십시오.

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

Android 4.2에 도입 된 새로운 API를보고있었습니다. UserManager 클래스를 살펴보면서 다음과 같은 메서드를 발견했습니다.

public boolean isUserAGoat()

이 통화를하는 사용자가 순간 이동의 대상인지 여부를 결정하는 데 사용됩니다.

이 호출을 한 사용자가 염소인지 여부를 반환합니다.

언제 어떻게 사용해야합니까?




안드로이드의 각 버전에는 재미있는 명명 된 메서드 / 상수 / 뭐든간에 있습니다.

내가 본 유일한 실용적인 용도는 Google I / O 대회 최종 요청에서 특정 버전에 대한 정보를 물어 본 참가자가 각 출시에 대한 API 비교 보고서를 읽는 지 확인하는 것입니다. 경연 대회는 프로그래밍 문제도 있었지만 일반적으로 제출 횟수를 확인하기 쉽도록 합리적인 금액으로 줄이기 위해 자동으로 채점 될 수있는 퀴즈가있었습니다.




재미 있은 부활절 달걀입니다.
우분투 버전의 Chrome에서는 작업 관리자 ( shift + esc )에서 마우스 오른쪽 버튼을 클릭하면 이탈리아어 버전이 "Capre Teletrasportate"(Teleported Goats) 인 공상 과학 칼럼을 추가 할 수 있습니다.

그것에 관한 재미있는 이론이 here .




행성의 가장 먼 산에서, 우리 인간과 마찬가지로 현재 휴대 전화를 사용할 수있는 고급 염소 종이 있습니다!

유출 된 영상 : youtu.be/YJwZMUn7GdQ

Google은 기술 진보의 최전선에 머물기 위해이를 발견하고 지원을 제공하기로 결정했습니다.




이것은 Google의 내부 농담 인 것 같습니다. 또한 Chrome 작업 관리자에서도 사용됩니다. 일부 엔지니어가 재미있어한다는 것을 제외하고는 아무런 목적이 없습니다. 네가 원하면 그 목적은 그 자체이다.

  1. Chrome에서 Shift + Esc로 작업 관리자를 엽니 다.
  2. 마우스 오른쪽 버튼을 클릭하여 Goats Teleported 열을 추가합니다.
  3. 경이.

너무 많은 텔레포트 된 염소 에 대한 거대한 Chromium 버그 보고서가 있습니다 .

다음 Chromium 소스 코드 스 니펫HN 의견에서 도난 당합니다.

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



음성 인식 분야에서 사용자는 염소 으로 구분됩니다.

예를 들어, 여기 89 페이지 :

양들은 음성 인식이 매우 잘 작동하는 사람들이며, 염소는 예외적으로 저조한 사람들입니다. 음성 인식기 만이 구분자를 구분합니다. 사람들은 누구의 목소리가 쉽게 인식되고 누구의 목소리가 아닌지 예측할 수 없습니다. 가장 좋은 정책은 모든 종류의 환경에서 모든 종류의 음성을 처리 할 수 ​​있도록 인터페이스를 설계하는 것입니다

어쩌면 안드로이드 사용자를 미래의 염소로 표시하여 염소 요구에 맞게 음성 인식 엔진을 구성 할 계획 일 것입니다. ;-)




이런 식으로 @djechlin answer 보완하면 (자), 특정의 반복이나 특정의 재귀 호출을 정지하고 싶은 경우,이 함수 호출을 더미 코드로서 IDE에 보관 유지하는 일도 가능 합니다. 예를 들면 다음과 같습니다.

IDE에 경고로 표시되는 더미 변수 선언 대신 isUserAGoat() 사용할 수 있습니다. Eclipse에서는 특별한 경우 브레이크 포인트 표시가 막히므로이를 활성화 / 비활성화 할 수 없습니다. 이 방법을 규칙으로 사용하면 모든 호출을 나중에 일부 스크립트 (커밋 단계 중 어쩌면?)로 필터링 할 수 있습니다.

Google 사람들은 무거운 이클립스 사용자입니다 (그들은 Eclipse 플러그인으로 Android 플러그인, 즉 Android SDK, GAE 등 여러 프로젝트를 제공합니다). 따라서 @djechlin 응답과이 보완적인 대답이 많은 의미가 있습니다.




Google은 염소 및 염소 기반 부활절 달걀에 대해 매우 좋아합니다. 거기에 이전에 스택 오버플로에 대한 게시물이 있습니다 .

이전 게시물에서 언급했듯이 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;
 }

염소에 대한 Google의 다른 언급은 다음과 같습니다.

염소와 Google의 가장 초기 상관 관계는 내가 알 수있는 한 원래의 "염소 깎기"블로그 게시물에 속합니다.

우리는 이것이 단지 부활절 달걀이라고 가정하고 false 을 반환하는 경우를 제외하고는 실제 사용을하지 않습니다.




이것이 "공식적인"유스 케이스인지는 모르지만 다음은 Java에서 경고를 생성합니다 (도달 문에 도달 할 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 는 이것이 디버그 플래그에 대한 지원을 깨뜨리는 특별한 이유, 즉 기본적으로이 사용 사례 (h / t @auselen)에 대해 "연결할 수없는 코드"가 트리거되지 않는다고 지적합니다. ( static final boolean DEBUG = false; 를 들면).

if 에 대해서는 while 을 교체하여 좀 더 모호한 유스 케이스를 생성했습니다. Eclipse와 같이이 동작을 사용하여 IDE를 이동할 수 있다고 생각 하지만,이 편집은 향후 4 년입니다. Eclipse 환경을 사용할 필요가 없습니다.




MonkeyRunner 도구 가 사용 중이 면 true를 반환하는 유사한 호출 isUserAMonkey() 가 있습니다. SDK 설명은이 SDK와 마찬가지로 호기심이 있습니다.

public static boolean isUserAMonkey(){}     

사용자 인터페이스가 현재 원숭이에 의해 엉망이되고있는 경우 true 반환 true .

Here 에 소스가 있습니다.

나는 이것이 염소로 무언가로 명명 된 새로운 SDK 도구를 기대하며 실제적 으로 그 도구의 존재 여부를 테스트 할 수있을 것이라고 기대했다.

유사한 질문 인 ActivityManager의 이상한 함수 isUserAMonkey 도 참조하십시오 . 이것은 무엇을 의미하며, 그것의 용도는 무엇입니까? .




그래서 검색에서 여기에 나를 위해 일하는 대답을 발견

// Show soft-keyboard:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

// Hide soft-keyboard:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);




java android usermanager