import
android.app.Activity;
import
android.app.ActivityManager;
import
android.app.AlertDialog;
import
android.content.Context;
import
android.os.Build;
import
android.os.Bundle;
import
android.widget.Toast;
import
androidx.appcompat.app.AppCompatActivity;
import
com.google.ar.core.Anchor;
import
com.google.ar.sceneform.AnchorNode;
import
com.google.ar.sceneform.rendering.ModelRenderable;
import
com.google.ar.sceneform.ux.ArFragment;
import
com.google.ar.sceneform.ux.TransformableNode;
import
java.util.Objects;
public
class
MainActivity
extends
AppCompatActivity {
private
ArFragment arCam;
private
int
clickNo =
0
;
public
static
boolean
checkSystemSupport(Activity activity) {
if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
String openGlVersion = ((ActivityManager) Objects.requireNonNull(activity.getSystemService(Context.ACTIVITY_SERVICE))).getDeviceConfigurationInfo().getGlEsVersion();
if
(Double.parseDouble(openGlVersion) >=
3.0
) {
return
true
;
}
else
{
Toast.makeText(activity,
"App needs OpenGl Version 3.0 or later"
, Toast.LENGTH_SHORT).show();
activity.finish();
return
false
;
}
}
else
{
Toast.makeText(activity,
"App does not support required Build Version"
, Toast.LENGTH_SHORT).show();
activity.finish();
return
false
;
}
}
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if
(checkSystemSupport(
this
)) {
arCam = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.arCameraArea);
arCam.setOnTapArPlaneListener((hitResult, plane, motionEvent) -> {
clickNo++;
if
(clickNo ==
1
) {
Anchor anchor = hitResult.createAnchor();
ModelRenderable.builder()
.setSource(
this
, R.raw.gfg_gold_text_stand_2)
.setIsFilamentGltf(
true
)
.build()
.thenAccept(modelRenderable -> addModel(anchor, modelRenderable))
.exceptionally(throwable -> {
AlertDialog.Builder builder =
new
AlertDialog.Builder(
this
);
builder.setMessage(
"Something is not right"
+ throwable.getMessage()).show();
return
null
;
});
}
});
}
else
{
return
;
}
}
private
void
addModel(Anchor anchor, ModelRenderable modelRenderable) {
AnchorNode anchorNode =
new
AnchorNode(anchor);
anchorNode.setParent(arCam.getArSceneView().getScene());
TransformableNode model =
new
TransformableNode(arCam.getTransformationSystem());
model.setParent(anchorNode);
model.setRenderable(modelRenderable);
model.select();
}
}