Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Ar core时获取位置服务错误_Android_Kotlin_Arcore - Fatal编程技术网

Android 使用Ar core时获取位置服务错误

Android 使用Ar core时获取位置服务错误,android,kotlin,arcore,Android,Kotlin,Arcore,我有一个Ar对象,它放在屏幕的底部,会随着相机的移动而移动,但过了一段时间,出现了一个错误 E/ARCore LocationProvider:FLP api客户端构建期间的异常:com.google.android.gms.common.api.GoogleAppClient java.lang.ClassNotFoundException:com.google.android.gms.common.api.GoogleAppClient 我不知道为什么会这样,因为我没有使用任何基于位置的服务

我有一个Ar对象,它放在屏幕的底部,会随着相机的移动而移动,但过了一段时间,出现了一个错误 E/ARCore LocationProvider:FLP api客户端构建期间的异常:com.google.android.gms.common.api.GoogleAppClient java.lang.ClassNotFoundException:com.google.android.gms.common.api.GoogleAppClient

我不知道为什么会这样,因为我没有使用任何基于位置的服务

以下是全部错误:

    E/ARCore-LocationProvider: Exception during FLP api client construction: com.google.android.gms.common.api.GoogleApiClient
    java.lang.ClassNotFoundException: com.google.android.gms.common.api.GoogleApiClient
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:454)
        at com.google.ar.core.services.LocationProvider.loadClass(PG:74)
        at com.google.ar.core.services.LocationProvider.<init>(PG:11)
        at com.google.ar.core.Session.nativeCreateSessionAndWrapperWithFeatures(Native Method)
        at com.google.ar.core.Session.<init>(Session.java:14)
        at com.google.ar.sceneform.ux.BaseArFragment.createSessionWithFeatures(BaseArFragment.java:419)
        at com.google.ar.sceneform.ux.BaseArFragment.createSession(BaseArFragment.java:405)
        at com.google.ar.sceneform.ux.BaseArFragment.initializeSession(BaseArFragment.java:379)
        at com.google.ar.sceneform.ux.BaseArFragment.onResume(BaseArFragment.java:338)
        at androidx.fragment.app.Fragment.performResume(Fragment.java:2498)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1501)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)
        at androidx.fragment.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:3241)
        at androidx.fragment.app.FragmentController.dispatchResume(FragmentController.java:223)
        at androidx.fragment.app.FragmentActivity.onResumeFragments(FragmentActivity.java:538)
        at androidx.fragment.app.FragmentActivity.onPostResume(FragmentActivity.java:527)
        at androidx.appcompat.app.AppCompatActivity.onPostResume(AppCompatActivity.java:172)
        at android.app.Activity.performResume(Activity.java:7977)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4312)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4354)
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2109)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.GoogleApiClient" on path: DexPathList[[zip file "/data/app/com.example.arrings-Z2Bc9Z5oOudX5Z9PhFYHZQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.arrings-Z2Bc9Z5oOudX5Z9PhFYHZQ==/lib/arm64, /data/app/com.example.arrings-Z2Bc9Z5oOudX5Z9PhFYHZQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at java.lang.Class.classForName(Native Method) 
        at java.lang.Class.forName(Class.java:454) 
        at com.google.ar.core.services.LocationProvider.loadClass(PG:74) 
        at com.google.ar.core.services.LocationProvider.<init>(PG:11) 
        at com.google.ar.core.Session.nativeCreateSessionAndWrapperWithFeatures(Native Method) 
        at com.google.ar.core.Session.<init>(Session.java:14) 
        at com.google.ar.sceneform.ux.BaseArFragment.createSessionWithFeatures(BaseArFragment.java:419) 
        at com.google.ar.sceneform.ux.BaseArFragment.createSession(BaseArFragment.java:405) 
        at com.google.ar.sceneform.ux.BaseArFragment.initializeSession(BaseArFragment.java:379) 
        at com.google.ar.sceneform.ux.BaseArFragment.onResume(BaseArFragment.java:338) 
        at androidx.fragment.app.Fragment.performResume(Fragment.java:2498) 
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1501) 
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) 
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) 
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269) 
        at androidx.fragment.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:3241) 
        at androidx.fragment.app.FragmentController.dispatchResume(FragmentController.java:223) 
        at androidx.fragment.app.FragmentActivity.onResumeFragments(FragmentActivity.java:538) 
        at androidx.fragment.app.FragmentActivity.onPostResume(FragmentActivity.java:527) 
        at androidx.appcompat.app.AppCompatActivity.onPostResume(AppCompatActivity.java:172) 
        at android.app.Activity.performResume(Activity.java:7977) 
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4312) 
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4354) 
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52) 
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2109) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7682) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 
2020-05-11 12:04:39.708 7568-7568/com.example.arrings E/ARCore-LocationProvider: Can't find FLP class: com.google.android.gms.location.LocationServices
    java.lang.ClassNotFoundException: com.google.android.gms.location.LocationServices
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:454)
        at com.google.ar.core.services.LocationProvider.loadClass(PG:74)
        at com.google.ar.core.services.LocationProvider.isLocationLibraryLinked(PG:60)
        at com.google.ar.core.Session.nativeCreateSessionAndWrapperWithFeatures(Native Method)
        at com.google.ar.core.Session.<init>(Session.java:14)
        at com.google.ar.sceneform.ux.BaseArFragment.createSessionWithFeatures(BaseArFragment.java:419)
        at com.google.ar.sceneform.ux.BaseArFragment.createSession(BaseArFragment.java:405)
        at com.google.ar.sceneform.ux.BaseArFragment.initializeSession(BaseArFragment.java:379)
        at com.google.ar.sceneform.ux.BaseArFragment.onResume(BaseArFragment.java:338)
        at androidx.fragment.app.Fragment.performResume(Fragment.java:2498)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1501)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)
        at androidx.fragment.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:3241)
        at androidx.fragment.app.FragmentController.dispatchResume(FragmentController.java:223)
        at androidx.fragment.app.FragmentActivity.onResumeFragments(FragmentActivity.java:538)
        at androidx.fragment.app.FragmentActivity.onPostResume(FragmentActivity.java:527)
        at androidx.appcompat.app.AppCompatActivity.onPostResume(AppCompatActivity.java:172)
        at android.app.Activity.performResume(Activity.java:7977)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4312)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4354)
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2109)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.location.LocationServices" on path: DexPathList[[zip file "/data/app/com.example.arrings-Z2Bc9Z5oOudX5Z9PhFYHZQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.arrings-Z2Bc9Z5oOudX5Z9PhFYHZQ==/lib/arm64, /data/app/com.example.arrings-Z2Bc9Z5oOudX5Z9PhFYHZQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at java.lang.Class.classForName(Native Method) 
        at java.lang.Class.forName(Class.java:454) 
        at com.google.ar.core.services.LocationProvider.loadClass(PG:74) 
        at com.google.ar.core.services.LocationProvider.isLocationLibraryLinked(PG:60) 
        at com.google.ar.core.Session.nativeCreateSessionAndWrapperWithFeatures(Native Method) 
        at com.google.ar.core.Session.<init>(Session.java:14) 
        at com.google.ar.sceneform.ux.BaseArFragment.createSessionWithFeatures(BaseArFragment.java:419) 
        at com.google.ar.sceneform.ux.BaseArFragment.createSession(BaseArFragment.java:405) 
        at com.google.ar.sceneform.ux.BaseArFragment.initializeSession(BaseArFragment.java:379) 
        at com.google.ar.sceneform.ux.BaseArFragment.onResume(BaseArFragment.java:338) 
        at androidx.fragment.app.Fragment.performResume(Fragment.java:2498) 
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1501) 
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) 
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) 
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269) 
        at androidx.fragment.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:3241) 
        at androidx.fragment.app.FragmentController.dispatchResume(FragmentController.java:223) 
        at androidx.fragment.app.FragmentActivity.onResumeFragments(FragmentActivity.java:538) 
        at androidx.fragment.app.FragmentActivity.onPostResume(FragmentActivity.java:527) 
        at androidx.appcompat.app.AppCompatActivity.onPostResume(AppCompatActivity.java:172) 
        at android.app.Activity.performResume(Activity.java:7977) 
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4312) 
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4354) 
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52) 
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2109) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7682) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 
2020
这是我正在使用的代码:\

private lateinit var arFragment: ArFragment
    private var renderable: ModelRenderable? = null
    private val mCameraRelativePose = Pose.makeTranslation(0.0f, -0.39f, -0.55f)
    private var oldAnchor: Anchor? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        arFragment = ar_fragment as ArFragment
        arFragment.planeDiscoveryController.hide()
        arFragment.arSceneView.planeRenderer.isVisible = false
        arFragment.planeDiscoveryController.setInstructionView(null)
        arFragment.arSceneView.scene.addOnUpdateListener { frameTime ->
            arFragment.onUpdate(frameTime)
            addNodeToScene()
        }
        //arFragment.setOnTapArPlaneListener { _, _, _ -> }
        placeObject()
    }

    /**
     * @param fragment our fragment
     * @param anchor ARCore anchor from the hit test
     * @param model our 3D model of choice
     *
     * Uses the ARCore anchor from the hitTest result and builds the Sceneform nodes.
     * It starts the asynchronous loading of the 3D model using the ModelRenderable builder.
     */
    private fun placeObject() {
        ModelRenderable.builder()
            .setSource(arFragment.context, R.raw.rings)
            .build()
            .thenAccept {
                renderable?.isShadowCaster = false
                renderable?.isShadowReceiver = false
                renderable = it
            }
            .exceptionally {
                Toast.makeText(this@MainActivity, "Error", Toast.LENGTH_SHORT).show()
                return@exceptionally null
            }
    }

    /**
     * @param fragment our fragment
     * @param anchor ARCore anchor
     * @param renderable our model created as a Sceneform Renderable
     *
     * This method builds two nodes and attaches them to our scene
     * The Anchor nodes is positioned based on the pose of an ARCore Anchor. They stay positioned in the sample place relative to the real world.
     * The Transformable node is our Model
     * Once the nodes are connected we select the TransformableNode so it is available for interactions
     */
    private fun addNodeToScene() {
        val frame = arFragment.arSceneView.arFrame ?: return
        val pose =
            frame.camera?.displayOrientedPose?.compose(mCameraRelativePose)?.extractTranslation()
        if (frame.camera?.trackingState == TrackingState.TRACKING) {
            val anchor = arFragment.arSceneView.session?.createAnchor(pose)
            anchor?.pose?.toMatrix(FloatArray(16), 0)

            if (oldAnchor != null) {
                oldAnchor?.detach()
            }
            oldAnchor = anchor
            val anchorNode = AnchorNode(anchor)
            anchorNode.isSmoothed = true
            anchorNode.setParent(arFragment.arSceneView.scene)
            // TransformableNode means the user to move, scale and rotate the model
            val transformableNode = TransformableNode(arFragment.transformationSystem)
            transformableNode.renderable = renderable  // have to add position and angel here naaa
            transformableNode.setParent(anchorNode)
            transformableNode.select()
        }
    }

我和LocationProvider有类似的问题,我没有在我的应用程序中使用location。在将图像添加到增强图像数据库时,我无意中使用了空名称

AugmentedImageDatabase augmentedImageDatabase = new AugmentedImageDatabase(session);
augmentedImageDatabase.addImage(name /*was null*/, bitmap, size);

你解决了吗?你解决了这个问题吗?你是如何解决这个问题的?如果你给出答案,我会给你200英镑的赏金
AugmentedImageDatabase augmentedImageDatabase = new AugmentedImageDatabase(session);
augmentedImageDatabase.addImage(name /*was null*/, bitmap, size);