O Google está empenhado em promover a igualdade racial para as comunidades negras. Veja como.

Habilitar ARCore

Esta página descreve como habilitar a funcionalidade ARCore em seus projetos Android NDK. Para fazer isso, você precisa:

  1. Adicionar AR necessário ou AR opcional ao manifesto
  2. Adicionar dependências de compilação para seu projeto
  3. Executar verificações de tempo de execução para garantir que o dispositivo é Arcore-suportado e que o Google Play Services para AR está instalado nele
  4. Certifique-se de seus cumpre app com de Arcore requisitos de privacidade do usuário

Serviços do Google Play para AR

Arcore SDKs fazer AR apresenta acessível em Arcore dispositivos suportados que têm serviços Google Play para AR (Arcore) instalado.

O Google Play Services para AR é instalado automaticamente e mantido atualizado na grande maioria dos dispositivos compatíveis.

Antes de iniciar uma sessão de AR, os aplicativos devem:

  1. Verifique se Arcore é suportado, chamando ArCoreApk_checkAvailability .
  2. Verifique se o Google Play Services para AR está instalado e atualizado, e que Arcore dados perfil de dispositivo necessário tenha sido baixado, chamando ArCoreApk_requestInstall .

Adicionar AR necessário ou AR opcional ao manifesto

Uma aplicação que suporte Ar possui pode ser configurado de duas maneiras: AR Obrigatório e AR opcional.

AR necessário

Para ser útil, um aplicativo AR Obrigatório requer um dispositivo suportado Arcore que tem o Google Play Services para AR instalado nele.

Para mais informações, consulte Publishing AR Apps na Play Store Google .

Para declarar seu aplicativo para ser AR necessário, modifique o seu AndroidManifest.xml para incluir as seguintes entradas:

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

<!-- Limits app visibility in the Google Play Store to ARCore supported devices
     (https://developers.google.com/ar/devices). -->
<uses-feature android:name="android.hardware.camera.ar" android:required="true"/>

<application …>
    …

  <!-- "AR Required" app, requires "Google Play Services for AR" (ARCore)
       to be installed, as the app does not include any non-AR features. -->
  <meta-data android:name="com.google.ar.core" android:value="required" />

</application>

Em seguida, modifique de seu aplicativo build.gradle para especificar um minSdkVersion de pelo menos 24:

android {
    defaultConfig {
        …
        minSdkVersion 24
    }
}

AR opcional

Um AR Opcional aplicativo tem características AR opcionais, que são ativados somente em Arcore dispositivos suportados que têm serviços Google Play para AR instalado.

  • Aplicativos opcionais de AR podem ser instalados e executados em dispositivos que não suportam ARCore.

  • Quando os usuários instalar um aplicativo AR Opcional, o Google Play Store não irá instalar automaticamente o Google Play Services para AR com o aplicativo.

Para declarar seu aplicativo para ser AR opcional, modificar seu AndroidManifest.xml para incluir as seguintes entradas:

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

<application …>
    …

    <!-- "AR Optional" app, contains non-AR features that can be used when
         "Google Play Services for AR" (ARCore) is not available. -->
    <meta-data android:name="com.google.ar.core" android:value="optional" />
</application>

Em seguida, modifique de seu aplicativo build.gradle para especificar um minSdkVersion de pelo menos 14:

android {
    defaultConfig {
        …
        minSdkVersion 14
    }
}

Adicionar dependências de compilação

Para adicionar a biblioteca ARCore ao seu projeto Android Studio, execute estas etapas:

  1. Certifique-se de seu projeto build.gradle arquivo inclui repositório Maven do Google.

    allprojects {
    repositories {
        google()
            ...
    
  2. Extraia bibliotecas nativas do ARCore aar.

    As bibliotecas nativas estão incluídas no arquivo ARCore aar. Para usá-los como parte de um projeto C / C ++, eles devem ser extraídos do arquivo para que possam ser referenciados diretamente. Para fazer isso, adicione uma tarefa personalizada para o seu módulo build.gradle arquivo (por exemplo, app/build.gradle ).

    O arquivo de cabeçalho para Arcore, arcore_c_api.h está incluído no projeto GitHub SDK:

    Definir uma variável para um diretório no app/build diretório. As bibliotecas nativas serão extraídas para este diretório. Crie também uma configuração gradle para manter as tarefas e dados de extração.

    /*
    The ARCore aar library contains the native shared libraries. These are
    extracted before building to a temporary directory.
    */
    def arcore_libpath = "${buildDir}/arcore-native"
    
    // Create a configuration to mark which aars to extract .so files from
    configurations { natives }
    
    

    Crie uma tarefa para copiar as bibliotecas nativas do arquivo aar e adicione-as às dependências de construção

      // Extracts the shared libraries from aars in the natives configuration.
      // This is done so that NDK builds can access these libraries.
      task extractNativeLibraries() {
         // Extract every time.
         outputs.upToDateWhen { false }
    
         doFirst {
              configurations.natives.files.each { f ->
                  copy {
                      from zipTree(f)
                      into arcore_libpath
                      include "jni/**/*"
                  }
              }
          }
      }
    
      tasks.whenTaskAdded {
          task-> if (task.name.contains("external") && !task.name.contains("Clean")) {
              task.dependsOn(extractNativeLibraries)
          }
      }
    
  3. Configure os sinalizadores de construção nativos para passar os locais para as ferramentas de construção externas.

    Este exemplo é das amostras do projeto GitHub.

          externalNativeBuild {
              cmake {
                  cppFlags "-std=c++11", "-Wall"
                  arguments "-DANDROID_STL=c++_static",
                          "-DARCORE_LIBPATH=${arcore_libpath}/jni",
                          "-DARCORE_INCLUDE=${project.rootDir}/../../libraries/include"
              }
          }
    

  4. Adicione as dependências para as bibliotecas Java e nativas.

     dependencies {
          ...
          // Add java and native dependencies on the ARCore library
          implementation 'com.google.ar:core:1.25.0'
          natives 'com.google.ar:core:1.25.0'
          ...
     }
    
  5. Referência as bibliotecas nativas em CMakeLists.txt

    # Import the ARCore library.
    add_library(arcore SHARED IMPORTED)
    set_target_properties(arcore PROPERTIES IMPORTED_LOCATION
                  ${ARCORE_LIBPATH}/${ANDROID_ABI}/libarcore_sdk_c.so
                  INTERFACE_INCLUDE_DIRECTORIES ${ARCORE_INCLUDE}
    )
    

Execute verificações de tempo de execução

Verifique se o ARCore está instalado

Todos os aplicativos de RA deve chamar ArCoreApk_requestInstall() antes de criar uma sessão de Arcore. ArCoreApk_requestInstall() verifica se uma versão compatível do Google Play Services para AR está instalado (ele pode estar desatualizado ou que tenham sido removidos manualmente pelo usuário) e pedirá ao utilizador para instalar o serviço se ele não está presente.

// Tracks if we have already triggered an installation request.
bool install_requested_;

void nativeOnCreate() {
  // other setup

  install_requested_ = false;
}

void nativeOnResume(JNIEnv env, jobject activity) {
  if (ar_session_ == null) {
    bool user_requested_install = !install_requested_;

    ArInstallStatus install_status;
    // Ensure Google Play Services for AR and ARCore device profile data are
    // installed and up to date.
    ArStatus error = ArCoreApk_requestInstall(
        env, activity, user_requested_install, &install_status);
    if (error != AR_SUCCESS) {
      // Inform user of error.
      return;
    }

    switch (install_status) {
      case AR_INSTALL_STATUS_INSTALLED:
        break;
      case AR_INSTALL_STATUS_INSTALL_REQUESTED:
        // When this method returns `AR_INSTALL_STATUS_INSTALL_REQUESTED`:
        // 1. This activity will be paused.
        // 2. The user is prompted to install or update Google Play
        //    Services for AR (market://details?id=com.google.ar.core).
        // 3. ARCore downloads the latest device profile data.
        // 4. This activity is resumed. The next invocation of
        //    ArCoreApk_requestInstall will either return
        //    `AR_INSTALL_STATUS_INSTALLED` or throw an exception if the
        //    installation or update did not succeed.
        install_requested_ = true;
        return;
    }

    // Request camera permissions.

    error = ArSession_create(env, context, &ar_session_);
    if (error != AR_SUCCESS) {
      // Inform user of error.
      return;
    }

    // Configure session
  }

  // Normal onResume behavior
}

Se ArCoreApk_requestInstall() retorna AR_INSTALL_STATUS_INSTALL_REQUESTED , as pausas de atividade atuais e é pedido ao utilizador para instalar ou atualizar o serviço. Da atividade onResume() executa novamente quando o usuário retorna para a atividade.

Verifique se ARCore é compatível (AR opcional apenas)

AR aplicativos opcionais podem usar ArCoreApk_checkAvailability() para determinar se os suportes de dispositivos atuais Arcore. Em um dispositivo que não oferece suporte a ARCore, os aplicativos devem desabilitar a funcionalidade relacionada a AR e ocultar os elementos de IU associados.

void maybeEnableArButton(JNIEnv env, jobject context) {
  // Likely called from Activity.onCreate() of an activity with AR buttons.
  ArAvailability availability
  ArCoreApk_checkAvailability(env, context, &availability);
  if (availability == AR_AVAILABILITY_UNKNOWN_CHECKING) {
    // Set a timer to call maybeEnableArButton() again after about 200ms.
  }
  if (availability == AR_AVAILABILITY_SUPPORTED_NOT_INSTALLED ||
      availability == AR_AVAILABILITY_SUPPORTED_APK_TOO_OLD ||
      availability == AR_AVAILABILITY_SUPPORTED_INSTALLED) {
    // Show/enable AR button.
  } else {
    // Hide/disable AR button.
  }
}

Então, quando o usuário quiser usar um recurso de AR, a sua aplicação deve assegurar que o Google Play Services para AR está instalado . Uma maneira fácil de fazer isso é iniciar uma atividade que segue o padrão AR necessário descrito acima.

Conformidade com os requisitos de privacidade do usuário

Certifique-se de seus cumpre app com de Arcore requisitos de privacidade do usuário .

Próximos passos

Leia o código e os comentários no aplicativo de amostra, bem como a API de Referência C .