ArFragment отображает только мигающий экран

Я пишу базовое приложение ArCore. Но ArFragment отображает мигающий знак только тогда, когда я помещаю его горизонтально, чтобы обнаружить плоскую поверхность. Также разрешение камеры отсутствует, когда я тестирую его с помощью своего Sony experia. Я не уверен, поддерживается ли мой телефон, потому что я не знаю точную модель своего телефона. Ниже приведено мое разрешение и некоторый код инициализации.

//Permission request

public boolean isCameraPermissionGranted(Activity host){
        // if the device isn't compatible return false
        if (!host.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA) &&
                !host.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_AR)){
            return false;
        }
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED) {

            // Permission is not granted
            // Should we show an explanation?
            if (ActivityCompat.shouldShowRequestPermissionRationale(host, Manifest.permission.CAMERA)) {
                // Show an explanation to the user *asynchronously* -- don't block
                // this thread waiting for the user's response! After the user
                // sees the explanation, try again to request the permission.
            } else {
                // No explanation needed; request the permission
                ActivityCompat.requestPermissions(host, new String[]{Manifest.permission.CAMERA},
                        MY_PERMISSIONS_REQUEST_CAMERA);
            }
        } else {
            // Permission has already been granted
            return true;
        }
        return false;
    }

//onCreate 
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.image_activity_layout)

        utils  = Utils(applicationContext)
        if (utils.isCameraPermissionGranted(this) && utils.isStoragePermissionGranted(this))
            utils.maybeEnableAr()
        //loadCamera()

        arFragment = supportFragmentManager.findFragmentById(R.id.f_sceneform_fragment) as ArFragment
        // Adds a listener to the ARSceneView
        // Called before processing each frame
        arFragment.arSceneView.scene.addOnUpdateListener { frameTime ->
            arFragment.onUpdate(frameTime)
            //onUpdate()
        }

    }

//Манифест

<uses-feature android:name = "android.hardware.camera" />
    <uses-feature android:name = "android.hardware.camera.ar" android:required = "true"/>

//This the fragment
<fragment
            android:id = "@+id/f_sceneform_fragment"
            android:name = "com.google.ar.sceneform.ux.ArFragment"
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            app:layout_constraintBottom_toBottomOf = "parent"
            app:layout_constraintEnd_toEndOf = "parent"
            app:layout_constraintStart_toStartOf = "parent"
            app:layout_constraintTop_toTopOf = "parent" />

Это экран, который я вижу.

ArFragment отображает только мигающий экран

Вы пытались вручную дать ему разрешение на использование камеры через настройки приложения на устройстве? Также у вас установлено приложение ArCore — предустановленное или из PlayStore?

Ryujin 22.05.2019 05:14

Разрешение камеры не указано в разрешениях. Нет, я не установил ArCore? Требуется ли это для новой формы сцены? Если вы посмотрите на codelabs.developers.google.com/codelabs/sceneform-intro/#4, они не требуют установки ArCore.

The_Martian 22.05.2019 07:47

Если вы создаете приложение ARCore, то да, вам нужен ARCore. Если его еще нет на вашем устройстве, вы можете найти его в магазине Play. Чтобы проверить, поддерживается ли ваше устройство, посмотрите здесь: Developers.google.com/ar/discover/supported-devices

Ryujin 22.05.2019 13:57
0
3
267
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавлено простое разрешение следующим образом:

<uses-permission android:name = "android.permission.CAMERA" />

Другие вопросы по теме