Не могу разрешить облачный якорь после его размещения

0

Я пытался использовать облачный якорь ARcore. После того, как я опущу якорь, он обязательно даст мне идентификатор, поэтому я предполагаю, что мой облачный якорь успешно загружен в облачный сервис (но на моей облачной платформе он показывает, что якорь в облаке отсутствует создать или разрешить, это странно). Но когда я пытаюсь решить эту проблему, это просто терпит неудачу, и всегда указываю координату привязки облака как. (0,0,0)Что мне делать, чтобы разрешить привязку облака? Ниже мой код:

package com.wheic.arapp;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.google.ar.core.Anchor;
import com.google.ar.core.Frame;
import com.google.ar.sceneform.AnchorNode;
import com.google.ar.sceneform.Camera;
import com.google.ar.sceneform.Node;
import com.google.ar.sceneform.collision.Ray;
import com.google.ar.sceneform.math.Vector3;
import com.google.ar.sceneform.rendering.Color;
import com.google.ar.sceneform.rendering.Material;
import com.google.ar.sceneform.rendering.MaterialFactory;
import com.google.ar.sceneform.rendering.ModelRenderable;
import com.google.ar.sceneform.rendering.ShapeFactory;
import com.google.ar.sceneform.ux.ArFragment;
import com.google.ar.sceneform.ux.TransformableNode;
import java.util.Objects;

public class MainActivity extends AppCompatActivity {

    // object of ArFragment Class
    //private ArFragment arCam;


    private cloudAnchor arCam;
    private  double  dis = 0;

    private Vector3 po;
    private Vector3 RN;

    AnchorNode anchorNode;

    public static boolean checkSystemSupport(Activity activity) {

        // checking whether the API version of the running Android >= 24
        // that means Android Nougat 7.0
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            String openGlVersion = ((ActivityManager) Objects.requireNonNull(activity.getSystemService(Context.ACTIVITY_SERVICE))).getDeviceConfigurationInfo().getGlEsVersion();

            // checking whether the OpenGL version >= 3.0
            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;
        }
    }
    private enum AppAnchorState{
        NONE,
        HOSTED,
        HOSTING
    }

    Anchor anchor;
    Anchor resolveanchor;

    private AppAnchorState appAnchorState = AppAnchorState.NONE;
    private boolean isPlace = false;
    private SharedPreferences prefs;
    private SharedPreferences.Editor editor;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button resolve = findViewById(R.id.resolve);
        prefs = getSharedPreferences("AnchorID",MODE_PRIVATE);
        editor = prefs.edit();



        if (checkSystemSupport(this)) {

            // ArFragment is linked up with its respective id used in the activity_main.xml
            arCam = (cloudAnchor) getSupportFragmentManager().findFragmentById(R.id.arCameraArea);
            arCam.setOnTapArPlaneListener((hitResult, plane, motionEvent) -> {
                if(!isPlace){
                    anchor = arCam.getArSceneView().getSession().hostCloudAnchor(hitResult.createAnchor());
                    appAnchorState = AppAnchorState.HOSTING;
                    showText("HOSTING...");
                    createModel(anchor);
                    isPlace = true;

                }
            });
            

            arCam.getArSceneView().getScene().addOnUpdateListener(frameTime -> {

                if(appAnchorState != AppAnchorState.HOSTING){
                    return;
                }
                Anchor.CloudAnchorState cloudAnchorState = anchor.getCloudAnchorState();

                if(cloudAnchorState.isError()){
                    showText(cloudAnchorState.toString());
                } else if(cloudAnchorState == Anchor.CloudAnchorState.SUCCESS){
                    appAnchorState = AppAnchorState.HOSTED;


                    String anchorID = anchor.getCloudAnchorId();

                    editor.putString("anchorId",anchorID);
                    editor.apply();

                    showText("Anchor hosted success ID:" + anchorID);
                }
            });

            resolve.setOnClickListener(view -> {
                String anchorID = prefs.getString("anchorId","null");

                if(anchorID.equals("null")){
                    Toast.makeText(this,"No anchor found",Toast.LENGTH_LONG).show();
                    return;
                }

                //"ua-ad769dc5a8f2dc47f68688d02c5ccc0c" First Anchor
                //"ua-8adc145e0dcb2d6c2d8af6a08f802424" Second Anchor

                //"ua-d387d14 64aa5d3f9c174ce2e4ab974dd" replace second anchor


                //ua-26db877ff0b27136ef1ac22b8253caa4 restroom
                //ua-abc3661fbf90c45cacb5904f9e9d544b living room
                //ua-345ec650170b064cc3f5ef957c16e8fe resroom-2

                //walkway-classroom far ua-c05a2cc25a191e0b458f0126659e5ed4
                // near classroom ua-fc7b1702c8e2197580be1942517d5c6b
                //ANOTHER ua-7812254 Odd6f5358697addfc2609c8a6
                //CA
                String [] TE = {"ua-26db877ff0b27136ef1ac22b8253caa4","ua-abc3661fbf90c45cacb5904f9e9d544b"};


                String ID = "ua-26db877ff0b27136ef1ac22b8253caa4";

                resolveanchor = arCam.getArSceneView().getSession().resolveCloudAnchor(ID);
                anchorNode = new AnchorNode(resolveanchor);

                anchorNode.setParent(arCam.getArSceneView().getScene());


                Node node1 = new Node();
                ModelRenderable.builder()
                        .setSource(this, R.raw.arrow)
                        .setIsFilamentGltf(true)
                        .build()
                        .thenAccept(modelRenderable -> pointer(node1, modelRenderable))
                        .exceptionally(throwable -> {
                            AlertDialog.Builder builder = new AlertDialog.Builder(this);
                            builder.setMessage("Something is not right" + throwable.getMessage()).show();
                            return null;
                        });

                arCam.getArSceneView().getScene().addOnUpdateListener(frameTime -> {



                    po = anchorNode.getWorldPosition();
                    RN = node1.getWorldPosition();

                    RN.y = po.y;
                    Vector3 II = Vector3.subtract(po,RN);
                    node1.setLookDirection(II);
                    dis = Math.sqrt( (Math.pow((po.x-RN.x),2)) + (Math.pow((po.z-RN.z),2)));


                    Camera camera = arCam.getArSceneView().getScene().getCamera();
                    Ray ray = camera.screenPointToRay(1080/2f,1920/2f);
                    Vector3 newPos = ray.getPoint(3f);
                    node1.setLocalPosition(newPos);
                });
            });

        } else {
            return;
        }
    }
    private void showText(String s) {
        Toast.makeText(this,s,Toast.LENGTH_LONG).show();
    }

    private void createModel(Anchor anchor) {
        ModelRenderable.builder()
                .setSource(this,R.raw.arrow)
                .setIsFilamentGltf(true)
                .build()
                .thenAccept(modelRenderable -> addModel(anchor,modelRenderable));
    }

    private void placeModel(Anchor anchor, ModelRenderable modelRenderable) {
        AnchorNode anchorNode = new AnchorNode(anchor);
        anchorNode.setRenderable(modelRenderable);
        arCam.getArSceneView().getScene().addChild(anchorNode);
    }

    private void addModel(Anchor anchor, ModelRenderable modelRenderable) {

        // Creating a AnchorNode with a specific anchor
        AnchorNode anchorNode = new AnchorNode(anchor);

        // attaching the anchorNode with the ArFragment
        anchorNode.setParent(arCam.getArSceneView().getScene());

        // attaching the anchorNode with the TransformableNode
        TransformableNode model = new TransformableNode(arCam.getTransformationSystem());
        model.setParent(anchorNode);
        model.getScaleController().setMaxScale(0.2f);
        model.getScaleController().setMinScale(0.1f);


        // attaching the 3d model with the TransformableNode
        // that is already attached with the node
        model.setRenderable(modelRenderable);
        model.select();
    }

    private void pointer(Node node, ModelRenderable modelRenderable) {
        //Node node = new Node();
        node.setParent(arCam.getArSceneView().getScene());
        node.setRenderable(modelRenderable);
        node.setParent(arCam.getArSceneView().getScene());
    }
}

Я могу не разрешить или загрузить облачный якорь1

Я не могу разрешить или загрузить облачный якорь2

Надеюсь, кто-то может мне помочь. Заранее спасибо! если нужна какая-то информация, я могу их опубликовать.