Get the right pixel density on Android

This commit is contained in:
Paul Rouget 2018-09-23 03:46:23 +02:00
parent 7287ea4c85
commit 96cf1e2da3
7 changed files with 27 additions and 12 deletions

View file

@ -24,7 +24,8 @@ public class JNIServo {
String url,
String logstr,
Callbacks callbacks,
int width, int height, boolean log);
int width, int height, float density,
boolean log);
public native void setBatchMode(boolean mode);

View file

@ -27,7 +27,7 @@ public class Servo {
String args,
String url,
String logstr,
int width, int height, boolean log) {
int width, int height, float density, boolean log) {
mRunCallback = runCallback;
@ -36,7 +36,7 @@ public class Servo {
Callbacks cbs = new Callbacks(client, gfxcb);
mRunCallback.inGLThread(() -> {
mJNI.init(activity, args, url, logstr, cbs, width, height, log);
mJNI.init(activity, args, url, logstr, cbs, width, height, density, log);
});
}

View file

@ -206,7 +206,7 @@ public class ServoSurface {
inUIThread(() -> {
final boolean showLogs = true;
String uri = mInitialUri == null ? null : mInitialUri;
mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mServoLog, mWidth, mHeight, showLogs);
mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mServoLog, mWidth, mHeight, 1, showLogs);
});
Looper.loop();

View file

@ -11,6 +11,7 @@ import android.net.Uri;
import android.opengl.GLES31;
import android.opengl.GLSurfaceView;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Choreographer;
import android.view.GestureDetector;
@ -139,9 +140,13 @@ public class ServoView extends GLSurfaceView
final boolean showLogs = true;
int width = getWidth();
int height = getHeight();
DisplayMetrics metrics = new DisplayMetrics();
mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
float density = metrics.density;
inGLThread(() -> {
String uri = mInitialUri == null ? null : mInitialUri.toString();
mServo = new Servo(this, this, mClient, mActivity, mServoArgs, uri, mServoLog, width, height, showLogs);
mServo = new Servo(this, this, mClient, mActivity, mServoArgs, uri, mServoLog, width, height, density, showLogs);
});
}