ユーザーが自分の GPS 位置を偽造しているかどうかを確実に検出する方法はありますか?
この手法は、セルラー接続ハードウェアのない Android デバイスで機能するはずです。つまり Wi-Fi のみ
これがうまくいく場合は、このコードを試してください
// returns true if mock location enabled, false if not enabled.
if (Settings.Secure.getString(getContentResolver(),
Settings.Secure.ALLOW_MOCK_LOCATION).equals("0"))
return false;
else return true;
乾杯!
ユーザーが実際にそこにいるかどうかに関係なく、それ自体で任意の座標が本物と見なされる可能性があるため、偽の GPS 座標の概念をより明確にする必要があると思います。
したがって、次の 2 つの方法で行動できます。
ソリューション 1 に関しては、たとえば、タワーに最も近い GSM 信号の CID (セル ID) と LAC (ロケーション エリア コード) を使用して、ユーザーが特定のエリアにいるかどうかを調べることができます。これには、インターネット接続と、LAC から GPS 座標への変換のためのリモート サービスへの要求が必要です。
解決策 2 については、ユーザーの速度や加速度と一致しない異常な座標の変化をチェックすることができます。たとえば、数秒で数マイルの変化があれば、なりすましの座標について警告することができます。