Introducción
La realidad aumentada (AR) es una tecnología que superpone información digital sobre el mundo real. ARCore es la plataforma de Google para crear experiencias de realidad aumentada en dispositivos Android. En este módulo, aprenderás a integrar ARCore en tu aplicación Android y a crear experiencias de AR básicas.
Requisitos previos
Antes de comenzar, asegúrate de tener:
- Android Studio instalado y configurado.
- Un dispositivo Android compatible con ARCore o un emulador configurado para AR.
- Conocimientos básicos de desarrollo de Android.
Configuración del entorno
Paso 1: Agregar dependencias de ARCore
- Abre tu proyecto en Android Studio.
- Abre el archivo
build.gradle
de tu módulo (generalmenteapp/build.gradle
). - Agrega las siguientes dependencias:
dependencies { implementation 'com.google.ar:core:1.23.0' implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.17.1' }
- Sincroniza tu proyecto con Gradle.
Paso 2: Configurar permisos y características
- Abre el archivo
AndroidManifest.xml
. - Agrega los siguientes permisos y características:
<uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera.ar" android:required="true"/> <uses-feature android:name="android.hardware.camera" android:required="true"/> <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true"/> <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"/>
Creando una experiencia AR básica
Paso 1: Crear una actividad AR
- Crea una nueva actividad llamada
ARActivity
. - En el archivo
ARActivity.java
, configura la actividad para usar ARCore y Sceneform:
import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import com.google.ar.core.ArCoreApk; import com.google.ar.sceneform.ux.ArFragment; public class ARActivity extends AppCompatActivity { private ArFragment arFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ar); arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ux_fragment); } }
Paso 2: Configurar el diseño de la actividad
- Crea un nuevo archivo de diseño XML llamado
activity_ar.xml
. - Agrega el siguiente contenido:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/ux_fragment" android:name="com.google.ar.sceneform.ux.ArFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
Paso 3: Agregar un objeto 3D
- Descarga un modelo 3D en formato
.sfb
y colócalo en la carpetaassets
. - En
ARActivity.java
, agrega el siguiente código para colocar el objeto 3D en la escena:
import com.google.ar.core.HitResult; import com.google.ar.core.Plane; import com.google.ar.sceneform.AnchorNode; import com.google.ar.sceneform.rendering.ModelRenderable; import com.google.ar.sceneform.ux.TransformableNode; public class ARActivity extends AppCompatActivity { private ArFragment arFragment; private ModelRenderable modelRenderable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ar); arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ux_fragment); ModelRenderable.builder() .setSource(this, Uri.parse("model.sfb")) .build() .thenAccept(renderable -> modelRenderable = renderable) .exceptionally( throwable -> { Toast.makeText(this, "Unable to load model", Toast.LENGTH_SHORT).show(); return null; }); arFragment.setOnTapArPlaneListener( (HitResult hitResult, Plane plane, MotionEvent motionEvent) -> { if (modelRenderable == null) { return; } Anchor anchor = hitResult.createAnchor(); AnchorNode anchorNode = new AnchorNode(anchor); anchorNode.setParent(arFragment.getArSceneView().getScene()); TransformableNode node = new TransformableNode(arFragment.getTransformationSystem()); node.setParent(anchorNode); node.setRenderable(modelRenderable); node.select(); }); } }
Ejercicio práctico
Ejercicio 1: Agregar interacción con el objeto 3D
Objetivo: Permitir que el usuario interactúe con el objeto 3D, por ejemplo, cambiando su color al tocarlo.
Instrucciones:
- Modifica el código en
ARActivity.java
para detectar toques en el objeto 3D. - Cambia el color del objeto cuando el usuario lo toque.
Solución:
import com.google.ar.sceneform.Node; import com.google.ar.sceneform.rendering.Color; import com.google.ar.sceneform.rendering.MaterialFactory; public class ARActivity extends AppCompatActivity { private ArFragment arFragment; private ModelRenderable modelRenderable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ar); arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ux_fragment); ModelRenderable.builder() .setSource(this, Uri.parse("model.sfb")) .build() .thenAccept(renderable -> modelRenderable = renderable) .exceptionally( throwable -> { Toast.makeText(this, "Unable to load model", Toast.LENGTH_SHORT).show(); return null; }); arFragment.setOnTapArPlaneListener( (HitResult hitResult, Plane plane, MotionEvent motionEvent) -> { if (modelRenderable == null) { return; } Anchor anchor = hitResult.createAnchor(); AnchorNode anchorNode = new AnchorNode(anchor); anchorNode.setParent(arFragment.getArSceneView().getScene()); TransformableNode node = new TransformableNode(arFragment.getTransformationSystem()); node.setParent(anchorNode); node.setRenderable(modelRenderable); node.select(); node.setOnTapListener((hitTestResult, motionEvent1) -> { MaterialFactory.makeOpaqueWithColor(this, new Color(android.graphics.Color.RED)) .thenAccept(material -> modelRenderable.setMaterial(material)); }); }); } }
Conclusión
En este módulo, has aprendido a configurar ARCore en tu proyecto Android, crear una actividad AR, y agregar un objeto 3D interactivo. La realidad aumentada ofrece muchas posibilidades para crear aplicaciones innovadoras y atractivas. Continúa explorando las capacidades de ARCore para llevar tus aplicaciones al siguiente nivel.
En el próximo módulo, exploraremos cómo implementar compras dentro de la aplicación para monetizar tus aplicaciones de Android.
Curso de Android Studio
Módulo 1: Introducción a Android Studio
- Introducción a Android Studio
- Configuración de Android Studio
- Entendiendo la interfaz de Android Studio
- Creando tu primer proyecto Android
Módulo 2: Desarrollo básico de Android
- Entendiendo la estructura del proyecto Android
- Introducción a los diseños XML
- Componentes básicos de la interfaz de usuario
- Introducción a las actividades
- Ejecutando tu aplicación en un emulador
Módulo 3: Desarrollo intermedio de Android
- Introducción a los Intents
- Trabajando con Fragmentos
- Manejo de la entrada del usuario
- Usando RecyclerView
- Redes en Android
Módulo 4: Desarrollo avanzado de Android
- Persistencia de datos con SQLite
- Usando Room para la gestión de bases de datos
- Componentes avanzados de la interfaz de usuario
- Vistas personalizadas y Canvas
- Trabajando con tareas en segundo plano
Módulo 5: Desarrollo profesional de Android
- Implementando la arquitectura MVVM
- Inyección de dependencias con Dagger
- Pruebas unitarias y pruebas de interfaz de usuario
- Publicando tu aplicación en Google Play
- Optimización del rendimiento