- vừa được xem lúc

Augmented Reality in Android Mobile

0 0 9

Người đăng: To Duc Thang

Theo Viblo Asia

Intro

Chắc hẳn mọi người cũng đã nghe qua đến cái tên Augmented Reality hay mình thường hay gọi tắ là AR. Về AR thì mình seach thì thấy nó xuất hiện cũng đã khá lâu rồi cũng đã được ứng dụng vào thực tế cũng không phải là ít. Nó sử dụng Camera, các cảm biến trên thiết bị để có thể biểu diễn object. Các bạn cũng có thể đọc thêm bài viết Build ứng dụng Augmented Reality đơn giản với OpenCV [Phần 1] , cũng có mô tả về cách map 3D Object trong AR.

Bài viết này mình cũng sẽ làm thử App sử dụng AR trong thiết bị mobile Android. Trên chính trang chủ của Android Developer cũng có phần hướng dẫn cơ bản, có giải thích từ việc config camera đến việc create Ar rồi Debug như thế nào, mọi người xem chi tiết trong link sau Quickstart for Android, hoặc cũng có thể xem thêm việc build trên các nền tảng khác như IOS, Unity,...tại link này.Thậm chí có cả Codalab do chính Google hướng dẫn luôn. Ngoài trên mobile thì AR cũng được ứng dụng như kính AR, xe tự lái, cả trong quân sự nữa (mô phỏng chiến trường),...Ứng dụng của thằng này là vô cùng lớn.

App

Để có thể lấy ảnh mẫu làm ví dụ thì mình vào trang Poly của Google để tải một số ảnh 3D để làm. Hoặc các bạn có thể tải Blender để tự mình thiết kế cho riêng mình.

Trên Android thì việc đầu tiên là ta phải import Dependencies, để có thể sử dụng AR được.

implementation "com.google.ar.sceneform.ux:sceneform-ux:1.10.0"

Tiếp theo là khai báo quyền truy cập camera trong AndroidManifest.xml:

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

Cuối cùng là trong thẻ <application> thêm thẻ meta-data sau :

<meta-data android:name="com.google.ar.core" android:value="required" />

Xong, vậy là ta đã setup các thứ cần thiết. Tiếp theo sau đây sẽ là phần chính AR. Như bên trên mình sẽ vào trang Poly để down một vài object về làm thử. Ta sẽ tạo folder asset để chứa object. Trong activity_main.xml mình chỉ dùng 1 fragment thôi .

 <fragment android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/arFragment" android:name="com.google.ar.sceneform.ux.ArFragment"/>

Trong MainActivity.java ta sẽ khai báo các thuộc tính và define AR đơn giản :

 private ArFragment arFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.arFragment); arFragment.setOnTapArPlaneListener((hitResult, plane, motionEvent) -> { Anchor anchor = hitResult.createAnchor(); ModelRenderable.builder() .setSource(this, Uri.parse("TocoToucan.sfb")) # đường link thư mục đến asset. .build() .thenAccept(modelRenderable -> addModelToScene(anchor, modelRenderable)); }); } private void addModelToScene(Anchor anchor, ModelRenderable modelRenderable) { AnchorNode node = new AnchorNode(anchor); TransformableNode transformableNode = new TransformableNode(arFragment.getTransformationSystem()); transformableNode.setParent(node); transformableNode.setRenderable(modelRenderable); arFragment.getArSceneView().getScene().addChild(node); transformableNode.select(); } 

Mọi người hãy run thử và xem kết quả nhận được ntn.

Nếu như ta muốn nhiều object hơn thì như thế nào. Cách đơn giản là ta sẽ tạo một List chứa các image (có thể đưa vào asset hoặc trong drawable). Còn các lệnh khai báo khác thì vẫn giữ nguyên như thế.

 View view = viewRenderable.getView(); ViewPager pager = view.findViewById(R.id.viewPager); List<Integer> images = new ArrayList<>(); images.add(R.drawable.iu); images.add(R.drawable.im2); images.add(R.drawable.im3); images.add(R.drawable.im4); images.add(R.drawable.im5); ArAdapter adapter = new ArAdapter(images); pager.setAdapter(adapter);

Do tạo một List các image ta sẽ tạo class Adapter để quản lý việc này.

 private class ArAdapter extends PagerAdapter { List<Integer> images; public ArAdapter(List<Integer> images){ this.images = images; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { View view = getLayoutInflater().inflate(R.layout.image_item, container, false); ImageView imageView = view.findViewById(R.id.imageView); imageView.setImageResource(images.get(position)); container.addView(view); return view; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView((View) object); } @Override public int getCount() { return images.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } }

Done!!!

Chú ý là khi build trên máy thật thì nó sẽ yêu cầu install một app để hỗ trợ cho việc build AR ??

Ngoài ra thì m cũng có ý tưởng là sử dụng AR cho việc mua sắm trang sức như đồng hồ ( sử dụng model AI để detec chỗ cánh tay đeo đồng hồ, rồi map đồng hồ mà mình chọn), hay sử dụng AR để thử quần áo chẳng hạn. Và rất nhiều ứng dụng tiềm năng khác mà có thể dùng AR. Dưới đây mình xin giới thiệu một vài App như thế (sản phẩm có trên Store).

Example Other

1. App InkHunter

Trong quá trình tìm hiểu các app đã sử dụng AR thì mình tìm được thằng này. Về ý tưởng của app là sử dụng AR cho việc thử hình Xăm (Tatoo), với hình xăm có cung cấp sẵn hoặc cũng có thể tự mình design (quá xịn sò). Tuy nhiên là hiện tại App chỉ đang hỗ trợ HĐH IOS từ 8.0 trở lên. Và cũng chỉ cung cấp một vài mẫu để mình thử, có những cái (đệp ) mình sẽ phải trả phí để mua nó. Mọi người cũng có thể down sử dụng tại link sau.

2. App Furniture IKEA Place

Tiếp theo là một sản phẩm ứng dụng khác trong lĩnh vực nội thất Agmenty AR Furniture. Trong app ta sẽ chọn các đồ vật, nội thất mình thích, sử dụng AR đưa Camera vào vị trí trong căn nhà mà mình dự định đặt đồ vật đó, nó sẽ giúp ta hình dung được phần nào về kết quả nếu ta đặt nó ở đó. Hiện app có trên cả Android và IOS.

3. App YouCam Makeup

Một siêu phẩm trong lĩnh vực làm đẹp khác là YouCam Makeup. Vào trang chủ của App đã thấy thích rồi. Nó cũng cho ta thử các loại tran điểm như son, kẻ mắt, lông mày, da, phấn nền, loại bỏ mụn, đốm mắt, thâm,.....Hiện app có trên cả Android và IOS 12 trở lên.

4. App Pokemon Go

Nói về AR thì không thể thiếu Pokemon Go được, một trò chơi nổi tiếng trên thế giới (mặc dù bị nghi ngờ lấy dữ liệu vị trí người dùng và một số nước, khu vực, đơn vị cấm dùng). Trò chơi cho phép người dùng trao đổi, săn Pokemon bằng định vị GPS và Camera của thiết bị. App Game cũng đã đạt được hàng chục triệu lượt tải.

Và còn rất nhiều ứng dụng trong thực tế có sử dụng AR mọi người có thể tìm thêm. Nếu có ý tưởng gì hay thì hãy chia sẻ biết đâu sẽ làm ra sản phẩm được nhiều người đón nhận.

Refer

  1. https://creativetech.blog/home/augmented-faces-makeup
  2. https://viblo.asia/p/build-ung-dung-augmented-reality-don-gian-voi-opencv-phan-1-RnB5pWaGlPG
  3. https://medium.com/deemaze-software/augmented-reality-a-simple-technical-introduction-83d5e77206b9
  4. https://medium.com/@OmniVirt/guide-to-augmented-reality-ar-app-development-e85a037c4d19
  5. https://code.tutsplus.com/tutorials/code-your-first-augmented-reality-app-with-arkit--cms-29705
  6. https://www.udemy.com/topic/arkit/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 207

- vừa được xem lúc

[Android] Hiển thị Activity trên màn hình khóa - Show Activity over lock screen

Xin chào các bạn, Hôm nay là 30 tết rồi, ngồi ngắm trời chờ đón giao thừa, trong lúc rảnh rỗi mình quyết định ngồi viết bài sau 1 thời gian vắng bóng. .

0 0 107

- vừa được xem lúc

Tìm hiểu Proguard trong Android

1. Proguard là gì . Cụ thể nó giúp ứng dụng của chúng ta:. .

0 0 100

- vừa được xem lúc

Làm ứng dụng học toán đơn giản với React Native - Phần 6

Chào các bạn một năm mới an khang thịnh vượng, dồi dào sức khỏe. Lại là mình đây Đây là link app mà các bạn đang theo dõi :3 https://play.google.com/store/apps/details?id=com.

0 0 68

- vừa được xem lúc

20 Plugin hữu ích cho Android Studio

1. CodeGlance. Plugin này sẽ nhúng một minimap vào editor cùng với thanh cuộn cũng khá là lớn. Nó sẽ giúp chúng ta xem trước bộ khung của code và cho phép điều hướng đến đoạn code mà ta mong muốn một cách nhanh chóng.

0 0 315