java setcameradisabled userhandle - Android UserManager.isUserAGoat()の適切な使用例




6 Answers

私はこれが "公式な"ユースケースかどうかはわかりませんが、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)のサポートが中断されるという特定の理由で、「到達不能なコード」がトリガされif (false)指摘します。 ( static final boolean DEBUG = false;例えば)。

私はif whileに置き換え、より曖昧なユースケースを作り出しました。 私このような動作で、EclipseのようなあなたのIDEを飛び越えることができると信じていますが、この編集は4年後のものです。私はEclipse環境を持っていません。

java android usermanager

私はAndroid 4.2で導入された新しいAPIを見ていました。 UserManagerクラスを見て、私は次のメソッドを見つけました:

public boolean isUserAGoat()

このコールを行っているユーザーがテレポートしているかどうかを判断するために使用されます。

この呼び出しを行ったユーザーがヤギかどうかを返します。

いつ、どのようにこれを使うべきですか?




この関数呼び出しは@djechlinのanswer補完するものですが、特定の反復や特定の再帰呼び出しを停止したい場合に、IDEにブレークポイントを保持するためのダミーコードとして使用できます。

IDEに警告として表示されるダミー変数宣言の代わりにisUserAGoat()を使用することができます。具体的には、Eclipseではブレークポイントマークが詰まって有効/無効にすることが難しくなります。 メソッドが規約として使用されている場合、すべての呼び出しは後で(コミット・フェーズの間に?)いくつかのスクリプトによってフィルタリングされる可能性があります。

Googleのメンバーは大量のEclipseユーザーです(Eclipseプラグインとして、Android SDK、GAEなどのプロジェクトをいくつか提供しています)ので、@djechlinの回答とこの補足的な回答は、少なくとも私にとっては意味があります。




音声認識の分野では、ユーザーはヤギヒツジに分かれています。

たとえば、 89ページの次のようにします

羊は音声認識が非常にうまく働く人々で、山羊はそれほどうまく働かない人です。 ボイスレコグナイザーだけがそれらをどのように分けるかを知っています。 人々は誰の声が容易に認識されるのか、そうでないのかを予測することはできません。 最高のポリシーは、すべての種類の環境ですべての種類の音声を処理できるようにインターフェイスを設計することです

たぶん将来、ヤギのニーズに合わせて音声認識エンジンを設定できるように、Androidユーザーをヤギとしてマークする予定です。 ;-)




API 21(最初のAndroid 5.0 / Lollipop SDK)では、 Goat Simulatorアプリがインストールされているかどうかを検出します

/**
 * 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を返すものは、一見無作為な値を返すようになりました。コードに深く埋もれてしまった場合、新しいバグがどこから来ているのか判断するのに時間がかかることがあります。

要点:メソッドの実装を制御せず、APIドキュメントに記載されている以外の目的でメソッドを使用することに決めた場合は、問題が発生する可能性があります。




惑星の最も遠い山々には、私たちの人間のように、現在携帯電話を使用できるように見える高度なヤギ種があります。

流出した映像: youtu.be/YJwZMUn7GdQ

技術進歩の最前線にとどまるために、Googleはこれを見つけて、サポートを提供することに決めた。




以下のソースコードをご覧ください:

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



Related