6 import android.content.Context;
7 import android.database.Cursor;
8 import android.net.Uri;
9 import android.os.Handler;
10 import android.util.DisplayMetrics;
11 import android.util.Log;
12 import android.util.TypedValue;
13 import android.view.Gravity;
14 import android.view.ViewGroup;
15 import android.widget.TextView;
16 import android.widget.Toast;
25 private static final String COLUMN_FILE_NAME =
"Filename";
26 private static final String COLUMN_CALIBRATION_DATA =
"Calibration Data";
45 public int getValue() {
69 public int getValue() {
86 if (instance == null) {
93 private String activeProfileName =
"";
104 public boolean init(String modelName) {
105 return MaxstARJNI.WearableCalibration_init(modelName);
114 return MaxstARJNI.WearableCalibration_isActivated();
124 final Context context =
MaxstAR.getApplicationContext();
126 int licenseType =
MaxstARJNI.getLicenseType();
128 if(licenseType == 1 || licenseType == 3 || licenseType == 4) {
129 String licenseTypeString =
"";
130 switch (licenseType) {
132 licenseTypeString =
"Free";
135 licenseTypeString =
"Invalid";
138 licenseTypeString =
"None";
142 final String LicenseMessage =
"This License " + licenseTypeString;
143 Handler mainHandler =
new Handler(context.getMainLooper());
145 Runnable myRunnable =
new Runnable() {
148 DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
149 int offsetX = displayMetrics.widthPixels / 2;
152 Toast toast = Toast.makeText(context, LicenseMessage, Toast.LENGTH_LONG);
153 ViewGroup group = (ViewGroup) toast.getView();
154 TextView messageTextView = (TextView) group.getChildAt(0);
155 messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 50);
157 toast.setGravity(Gravity.CENTER, offsetX, offsetY);
161 mainHandler.post(myRunnable);
164 MaxstARJNI.WearableCalibration_setSurfaceSize(surfaceWidth, surfaceHeight);
181 return MaxstARJNI.WearableCalibration_getViewport(eyeType.getValue());
191 return MaxstARJNI.WearableCalibration_getProjectionMatrix(eyeType);
201 return MaxstARJNI.WearableCalibration_writeProfile(filePath);
211 return MaxstARJNI.WearableCalibration_readProfile(filePath);
214 public void loadDefaultProfile(String modelName) {
215 MaxstARJNI.WearableCalibration_loadDefaultProfile(modelName);
225 return MaxstARJNI.WearableCalibration_setProfile(data);
228 public boolean readActiveProfile(Context context, String wearableDeviceName) {
229 Uri uri = Uri.parse(
"content://com.maxst.ar.wearablecali/activeprofile");
230 Cursor c = context.getContentResolver().query(uri, null, null, null, null);
231 if (c == null || c.getCount() == 0) {
232 Log.e(TAG,
"No active profile");
233 loadDefaultProfile(wearableDeviceName);
234 Log.e(TAG,
"Load default device profile "+ wearableDeviceName);
238 activeProfileName = c.getString(c.getColumnIndex(COLUMN_FILE_NAME));
239 byte[] data = c.getBlob(c.getColumnIndex(COLUMN_CALIBRATION_DATA));
241 Log.d(TAG,
"fileName:" + activeProfileName);
242 activeProfileName = activeProfileName.substring(0, activeProfileName.lastIndexOf(
"."));
243 Log.d(TAG,
"data:" +
new String(data, 0, data.length));
253 return activeProfileName;
263 MaxstARJNI.WearableCalibration_getDistancePos(distanceType.getValue(), pos);
272 MaxstARJNI.WearableCalibration_setCameraToEyePose(eyeType.getValue(), distanceType.getValue(), pose);
275 public float[] getScreenCoordinate() {
276 return MaxstARJNI.WearableCalibration_getScreenCoordinate();
279 public void getTargetGLScale(DistanceType distanceType,
float[] scale) {
280 MaxstARJNI.WearableCalibration_getTargetGLScale(distanceType.getValue(), scale);
283 public void getTargetGLPosition(DistanceType distanceType,
float[] position) {
284 MaxstARJNI.WearableCalibration_getTargetGLPosition(distanceType.getValue(), position);
float [] getProjectionMatrix(int eyeType)
boolean init(String modelName)
void setCameraToEyePose(EyeType eyeType, DistanceType distanceType, float[] pose)
boolean readProfile(String filePath)
boolean setProfile(byte[] data)
boolean writeProfile(String filePath)
void setSurfaceSize(int surfaceWidth, int surfaceHeight)
static WearableCalibration getInstance()
void getDistancePos(DistanceType distanceType, float[] pos)
float [] getViewport(EyeType eyeType)
String getActiveProfileName()