ミリ秒あたりのピクセル数で重力による加速度を計算できるように、実際の長さの単位でデバイス上の画面の大きさを正確に知る必要があります。
このための Android API のどこかにメソッドはありますか?
ミリ秒あたりのピクセル数で重力による加速度を計算できるように、実際の長さの単位でデバイス上の画面の大きさを正確に知る必要があります。
このための Android API のどこかにメソッドはありますか?
以下を使用します。
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(mWidthPixels/dm.xdpi,2);
double y = Math.pow(mHeightPixels/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);
Log.d("debug","Screen inches : " + screenInches);
mWidthPixels と mHeightPixels が以下のコードから取得される場合
private void setRealDeviceSizeInPixels()
{
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);
// since SDK_INT = 1;
mWidthPixels = displayMetrics.widthPixels;
mHeightPixels = displayMetrics.heightPixels;
// includes window decorations (statusbar bar/menu bar)
if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17)
{
try
{
mWidthPixels = (Integer) Display.class.getMethod("getRawWidth").invoke(display);
mHeightPixels = (Integer) Display.class.getMethod("getRawHeight").invoke(display);
}
catch (Exception ignored)
{
}
}
// includes window decorations (statusbar bar/menu bar)
if (Build.VERSION.SDK_INT >= 17)
{
try
{
Point realSize = new Point();
Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize);
mWidthPixels = realSize.x;
mHeightPixels = realSize.y;
}
catch (Exception ignored)
{
}
}
参照用にこの投稿を参照してください: 画面の寸法をピクセルで取得する
使用xdpi * widthPixels
して、ydpi * heightPixels
私が思うものをあなたに与えるかもしれません。
これを計算するには、画面密度を使用する必要があります。
Context.getResources().getDisplayMetrics().density
ドキュメントによると:
ディスプレイの論理密度。これは、密度に依存しないピクセル単位のスケーリング係数であり、1 DIP は約 160 dpi の画面 (たとえば、240x320、1.5 インチ x 2 インチの画面) 上の 1 ピクセルであり、システムのディスプレイのベースラインを提供します。したがって、160dpi 画面では、この密度値は 1 になります。120 dpi の画面では .75 になります。等
この値は、実際の画面サイズ (xdpi と ydpi で指定される) に正確に従うわけではありませんが、表示 dpi の全体的な変化に基づいて段階的に UI 全体のサイズをスケーリングするために使用されます。たとえば、240x320 画面には幅が 1.8 インチ、1.3 インチなどであっても、密度は 1 になります。ただし、画面の解像度が 320x480 に増加しても、画面サイズが 1.5 インチ x 2 インチのままの場合、密度は増加します (おそらく 1.5 に)。