Я пишу базовое приложение 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" />
Это экран, который я вижу.
Разрешение камеры не указано в разрешениях. Нет, я не установил ArCore? Требуется ли это для новой формы сцены? Если вы посмотрите на codelabs.developers.google.com/codelabs/sceneform-intro/#4, они не требуют установки ArCore.
Если вы создаете приложение ARCore, то да, вам нужен ARCore. Если его еще нет на вашем устройстве, вы можете найти его в магазине Play. Чтобы проверить, поддерживается ли ваше устройство, посмотрите здесь: Developers.google.com/ar/discover/supported-devices
Добавлено простое разрешение следующим образом:
<uses-permission android:name = "android.permission.CAMERA" />
Вы пытались вручную дать ему разрешение на использование камеры через настройки приложения на устройстве? Также у вас установлено приложение ArCore — предустановленное или из PlayStore?