Phát triển với ActiveLook: Bắt đầu!

Trên trang này bạn sẽ tìm thấy:

  • ActiveLook là gì: phần giới thiệu toàn bộ khái niệm
  • Bắt đầu: Nắm bắt trong 10 phút
  • Đôi nét về Kế hoạch chứng nhận & quảng bá
  • Thiết kế cho ActiveLook: toàn bộ thực hành tốt & yêu cầu
  • Hướng dẫn quản lý ứng dụng, bộ nhớ & firmware quản lý

‍

Chúc bạn khám phá vui vẻ!

‍

‍

ActiveLook là gì?

‍

Nói ngắn gọn, ActiveLook là một công nghệ phần cứng—“module quang học”—có thể tích hợp vào những mẫu kính có thiết kế đẹp. Đồng thời đây là một giao thức mở hướng tới các màn hình thông báo từ xa. Cùng nhau, chúng đưa thông tin quan trọng trực tiếp vào tầm nhìn người dùng.

‍

Chúng tôi gọi đó là “Light AR”

‍

Bạn có nghĩ đến hoạt động nào cần thông tin theo thời gian thực và “tối quan trọng”? Người dùng gần như không có cơ hội nhìn màn hình smartphone trong khi đang hành động? Cần đưa thông tin chủ chốt mà không ảnh hưởng chuyển động hoặc hoạt động? Cần phản hồi trực quan về một hoạt động thể chất?

Vậy bạn đã đến đúng nơi.

Và... còn một điều nữa: 

Mọi kính ActiveLook đều dùng chung giao diện API mở: ứng dụng của bạn có thể kết nối và hiển thị nội dung trên mọi thiết bị được ActiveLook chứng nhận (kính thể thao, kính bảo hộ, mũ thể thao, module HUD, goggles, …)

Xem tại đây danh sách kính tích hợp công nghệ ActiveLook.

Đi theo hướng dẫn onboarding bên dưới để hiểu toàn bộ ý tưởng ActiveLook.

‍

‍

Nó hoạt động thế nào? Không chỉ là kiến trúc: đó là một triết lý.


ActiveLook hướng tới sự tối giản. Đó là mục tiêu, cũng là thách thức. 

‍

Tối giản về kích thước, diện tích chiếm chỗ và mức tiêu thụ điện. Điều này có nghĩa:

  • Liên kết giao tiếp tối giản (Bluetooth Low Energy), 
  • Bộ nhớ cục bộ giới hạn (khoảng ~1MB mỗi ứng dụng), 
  • Tài nguyên tính toán tối giản (MCU Cortex M0 công suất thấp).


Module quang học ActiveLook hoàn toàn không “thông minh”: *bạn* mới là phần thông minh.


Đây không phải màn hình video, mà là màn hình thông báo.


Một hình ảnh hiển thị trong ActiveLook là sự kết hợp của:

  • 1) Icon
  • 2) Văn bản (bạn quyết định font & kích thước)
  • 3) Hình học
  • 4) Chỉ vậy thôi.


Đây không phải màn hình có tần số quét như màn hình video thông thường, mà là màn hình “bộ nhớ”: bạn có thể cập nhật bất kỳ pixel hoặc phần nào của màn hình tương tự ghi một byte hoặc trang trong bộ nhớ. Phần không bị sửa hoặc xóa vẫn tiếp tục hiển thị. Vì vậy hệ thống rất tiết kiệm năng lượng với nội dung ít thay đổi.


Giao tiếp với thiết bị ActiveLook diễn ra theo 2 giai đoạn:


Giai đoạn 1 - Thiết lập: Tải trước tài nguyên đồ họa vào bộ nhớ flash của kính (icon, font, v.v.). Việc này chỉ cần làm một lần khi ứng dụng kết nối lần đầu với một cặp kính ActiveLook.


Giai đoạn 2 - Chạy! : Gửi lệnh hiển thị tới kính để kết hợp văn bản và icon đã nạp. Lưu ý bạn không gửi toàn bộ hình ảnh “trực tiếp” tới màn hình, mà chỉ gửi lệnh đồ họa qua Bluetooth, ví dụ: 

  • [‘display’; ‘icon số này’; ‘ở đây’]
  • [‘write’; ‘văn bản này’; ‘bằng font này’; ‘ở đó’]


Vì vậy bạn cần thông minh trong việc:

  • Định nghĩa và phân rã UI thành một tập các thành phần đồ họa.
  • Xác định phần tối thiểu nào của UI cần cập nhật và khi nào.
  • Giảm tối đa lượng và tần suất cập nhật màn hình (ví dụ: làm mới 1/4 màn hình mỗi 1 giây là mục tiêu tốt!). 


Chúng tôi cũng cung cấp lệnh “layout” và “pages” để gom các cập nhật vào số lệnh tối thiểu.


Việc tiếp theo: xem Kế hoạch chứng nhận ứng dụng ActiveLook. Chương trình sẽ cấp giấy phép để quảng bá khả năng tương thích ActiveLook, bảo đảm ứng dụng phù hợp hệ sinh thái và được hỗ trợ quảng bá!


Nếu hiểu toàn bộ phần trên, bạn đã nắm phần lớn ý tưởng.

‍

‍

Bắt đầu thế nào? Nắm bắt trong 10 phút.

‍

Đăng ký làm nhà phát triển

‍

Trước tiên: hãy chắc chắn bạn đăng ký làm nhà phát triển trên website ActiveLook, mục Developer. 


ActiveLook còn trẻ và firmware sẽ tiếp tục phát triển trong những tháng tới. 


Đăng ký sẽ cho phép bạn truy cập firmware kính sắp phát hành trước vài tháng so với khi triển khai thực tế. Điều này rất cần thiết để bạn có thể cập nhật và kiểm thử ứng dụng trước khi firmware mới được triển khai, đồng thời đồng bộ bản phát hành ứng dụng với firmware mới nhất.


Thông tin về firmware mới cũng như quyền truy cập kho “firmware đang phát triển” sẽ được cung cấp cho mọi nhà phát triển ActiveLook đã đăng ký.

‍

Bạn phát triển trên di động?

‍

Bạn thật may mắn, chúng tôi đã chuẩn bị sẵn một số tài nguyên. 

  • Một SDK với toàn bộ chức năng cần thiết được đóng gói và sẵn dùng: kết nối và bắt tay với kính, tải tài nguyên đồ họa, tương tác & cấu hình cảm biến.
  • Một ứng dụng demo bao gồm phần lớn—nếu không phải tất cả—chức năng trong dự án sẵn sàng biên dịch.


Tải Android SDK :

  • Cài Android Studio.
  • Truy cập tài nguyên SDK tại https://github.com/ActiveLook/android-sdk 
  • Chạy dự án mẫu: clone repo và import dự án vào Android Studio.
  • Để biết chi tiết, xem Read.me trên trang GitHub của chúng tôi.


Tải iOS SDK :

  • Cài Xcode 
  • Truy cập tài nguyên SDK tại: https://github.com/ActiveLook/ios-sdk 
  • Chạy dự án mẫu: clone repo và mở ActiveLookSDK.xcworkspace trong Xcode.
  • Để biết chi tiết, xem Read.me trên trang GitHub của chúng tôi.


Xem ứng dụng demo tại đây: 

‍

‍

Bạn phát triển trên nền tảng khác? (đồng hồ, pod, máy tính xe đạp, PC, thiết bị GPS, thiết bị công nghiệp, máy nướng bánh kết nối hay bất cứ thứ gì...)


Bạn có thể điều khiển một cặp kính ActiveLook từ bất kỳ thiết bị master nào hỗ trợ BTLE.


Tài liệu API ở đây. API dựa trên giao thức giao tiếp BTLE. Tại đây bạn sẽ tìm thấy danh sách đầy đủ các service, characteristic và command để vận hành một cặp kính ActiveLook


https://github.com/ActiveLook/Activelook-API-Documentation 

‍


Nhận bộ kit phát triển của bạn!

‍

Trong lúc ứng dụng đầu tiên đang biên dịch, hãy dành 5 phút để đặt bộ kit phát triển. Dù WYSIWYG nằm đâu đó trong lộ trình phát triển, chúng tôi vẫn luôn khuyến nghị kiểm tra ứng dụng bằng cách kết nối với một cặp kính thật. Khả năng đọc của nội dung AR cần được xác nhận trên nền thực tế.


Bộ kit phát triển là một cặp kính ActiveLook thật, đầy đủ chức năng. Mẫu và thiết kế cụ thể được gửi sẽ phụ thuộc vào tồn kho và khả năng cung ứng. 


Bạn có thể tải các bản beta firmware lên bộ kit này để phát triển/kiểm thử ứng dụng vài tháng trước khi mỗi firmware mới được triển khai thực tế.

‍

‍

Làm sao để ứng dụng được hiển thị, chứng nhận & quảng bá?


Hướng tới chứng nhận ActiveLook là cách tốt để bảo đảm ứng dụng hoặc dịch vụ thành công trong hệ sinh thái ActiveLook. 


Theo liên kết này để xem mọi thông tin cần thiết về chương trình chứng nhận.


Việc ứng dụng được chứng nhận ActiveLook sẽ giúp tăng khả năng hiển thị, bảo đảm độ ổn định và tích hợp mượt mà trong hệ sinh thái ActiveLook.

‍

‍

Thực hành tốt và yêu cầu phát triển

‍

Dưới đây là các yêu cầu chính về phát triển ứng dụng và dịch vụ, giúp bảo đảm ứng dụng mang lại trải nghiệm hấp dẫn.

‍

‍

Thiết kế cho màn hình “Thực tế tăng cường”

‍

Trong thực tế tăng cường (hình ảnh ảo được chiếu chồng lên môi trường người dùng), phần “đen” trong hình sẽ hoàn toàn trong suốt. Phần sáng hơn sẽ dễ nhìn hơn. Hãy hình dung việc nhìn phản chiếu của màn hình TV trên một cửa kính. 

Màn hình ActiveLook là đơn sắc màu vàng. Tập trung toàn bộ năng lượng ánh sáng vào một màu/bước sóng duy nhất tạo hiệu suất ánh sáng và độ sáng cao hơn nhiều so với màn hình màu. Điều này cũng cho phép tối ưu toàn bộ thiết kế quang học (filter, coating, v.v.) để tối đa khả năng đọc và độ tương phản dưới ánh sáng ban ngày, trong khi vẫn duy trì mức tiêu thụ điện cực thấp. 


Màn hình cung cấp 16 mức xám (thực tế là 16 mức vàng).

‍

‍

Phần nào “thay đổi”, phần nào “cố định” trong UI?

‍

Như đã nêu, ActiveLook sử dụng màn hình bộ nhớ sẽ không thay đổi nếu bạn không “ghi” nội dung mới. Bạn cần tận dụng đặc tính này.

Khi thiết kế, hãy hình dung giao diện là sự kết hợp của các vùng cố định và vùng “thay đổi”. 

  • Bạn chỉ làm mới dữ liệu (icon hoặc text) ở nơi và khi cần => tránh cập nhật toàn trang có hệ thống hoặc bất kỳ dạng “video mode” nào.
  • Nếu một phần màn hình có thể định nghĩa bằng “1 hình cố định” + “1 chuỗi văn bản thay đổi”, sử dụng tính năng Layout sẽ đơn giản hóa việc quản lý (xem bên dưới).

‍

‍

Hướng dẫn chung về thiết kế UI

‍

ActiveLook® sử dụng vi máy chiếu. Kích thước nhỏ gọn và cách tích hợp tạo ra một số đánh đổi quang học. Để hạn chế flare hoặc phản xạ ký sinh có thể nhìn thấy, khuyến nghị:

  • Giới hạn tỷ lệ nội dung sáng trong hình: Không hiển thị nội dung dạng “toàn trang” hoặc “ảnh chụp”. Không hiển thị nội dung đen trên nền “trắng”, mà nên hiển thị nội dung “trắng” trên nền đen.
  • Hạn chế sử dụng các đường dài hoặc hình học có thể bị biến dạng
  • Ưu tiên vùng trung tâm màn hình và hạn chế nội dung ở các góc.
  • Không chạm viền/góc: để duy trì cảm giác “hình ảnh nổi”, không nên thể hiện viền màn hình.

‍

‍

Không video & animation

‍

ActiveLook được thiết kế như một hệ thống tối giản (hay “tối ưu”) để nhẹ, không xâm lấn và hoạt động lâu. Hệ thống dùng liên kết BTLE băng thông thấp và pin nhỏ (90mAh cho 12–15 giờ hoạt động).

Hai giới hạn kỹ thuật này khiến ActiveLook không phù hợp để hiển thị video. Chỉ tải một hình qua BTLE cũng mất vài giây, vì vậy video sẽ không thể mượt.


Giao tiếp với thiết bị ActiveLook yêu cầu *tải trước* các icon và hình ảnh đồ họa vào bộ nhớ kính. Việc này được thực hiện một lần khi ứng dụng kết nối lần đầu với một cặp kính mới. Sau đó chỉ cần gửi lệnh để hiển thị icon mong muốn. Theo cách này bạn có thể tạo một số hiệu ứng kiểu “animated GIF”, nhưng nên xem đó là mức tối đa.

‍

‍

Tối đa thời lượng pin kính

‍

ActiveLook cho 12–15 giờ hoạt động ở chế độ hiển thị liên tục.

Nếu muốn ứng dụng đạt mức này, hãy giảm tần suất cập nhật đồ họa và để hệ thống ngủ giữa các lần làm mới.


Mục tiêu khoảng 1 lần cập nhật mỗi giây, đồng thời dùng lệnh pages & layout để nhóm cập nhật sẽ giúp tối đa thời lượng pin.

Lưu ý cảm biến cử chỉ tiêu thụ khoảng một nửa công suất thiết bị. Có thể tắt cảm biến cử chỉ 

‍

‍

Giữ mọi thứ mượt mà 

‍

Liên kết Bluetooth có băng thông nhỏ. Để giữ độ trễ đồ họa thấp và làm các cập nhật mượt hơn, hãy tối đa sử dụng lệnh “layout” và “pages” thay vì gửi từng lệnh riêng để đặt từng phần tử đồ họa (ảnh, text, v.v.).

‍

Hold & Flush!

‍

Luôn nhóm các lệnh cập nhật hiển thị giữa một lệnh “Hold” và một lệnh “Flush”. Khi đó chỉ có một lần sao chép bộ đệm hiển thị tới màn hình vật lý sau khi toàn bộ cập nhật đã thực thi. Điều này tiết kiệm điện, tăng tốc độ làm mới và giảm hiệu ứng nhấp nháy.

‍

Hãy nghĩ tới việc “xóa”

‍

ActiveLook® là màn hình bộ nhớ: nội dung trước đó sẽ tiếp tục hiển thị trừ khi bạn chủ động phủ nội dung đục mới lên.

  • Dùng icon cùng kích thước để icon mới phủ hoàn toàn icon cũ (hoặc vẽ hình chữ nhật đen trước khi vẽ lại).
  • Dùng văn bản kích thước cố định để có thể hiển thị hình chữ nhật đen nhằm xóa nó

Để xóa nội dung, bạn có thể:

  • Phủ nội dung cùng kích thước
  • Hiển thị hình chữ nhật “Black Paint” cùng kích thước (màu 0)
  • Hiển thị cùng văn bản ở cùng vị trí bằng “Black Paint”
  • Dùng “Layouts” (xem bên dưới) và với mỗi lần hiển thị layout, thực hiện lệnh layoutClear trên vùng đã định nghĩa
  • Xóa toàn bộ màn hình bằng lệnh clear

‍

Dùng vùng “hiển thị hiệu quả”

‍

Để phù hợp với khác biệt khuôn mặt cá nhân và optical eye box, khuyến nghị không dùng toàn bộ vùng màn hình mà giữ “lề” ở mọi phía. 

Tương tự ứng dụng ActiveLook, hãy cân nhắc tạo vùng “dành riêng” 30 pixel ở mỗi bên ngang và 25 pixel ở mỗi bên dọc. Điều này tạo vùng hữu dụng thực tế 244 x 206 pixel (xem “Adjust screen offset” trong phần “settings” và hình bên dưới).

Lệnh shift (xem ở trên) hữu ích để quản lý lề hiển thị.

‍

 

‍

‍

Layouts và Pages

‍

Để đơn giản hóa việc dùng phần tử đồ họa, có thể lưu danh sách lệnh đồ họa thành “layouts”. Mỗi layout được nhận diện bằng một số đơn giản và cho phép hiển thị một giá trị (truyền như đối số hàm) dưới dạng text hoặc phần tử đồ họa khác (ảnh, hình tròn…).

Pages được định nghĩa là tập hợp các layout hiển thị cùng nhau trên màn hình. Thông thường mỗi layout dùng để hiển thị một loại thông tin, ví dụ tốc độ hoặc thời gian. Tùy ứng dụng và cài đặt người dùng, các layout khác nhau có thể xuất hiện trong một page.

‍

‍

Giữ ứng dụng luôn cập nhật 

‍

ActiveLook hướng tới một hệ sinh thái thống nhất gồm ứng dụng (nguồn) và thiết bị (màn hình) tương thích chéo. 


Điều này được bảo đảm bằng việc triển khai một firmware thống nhất trên mọi thiết bị (kính) tương thích ActiveLook, để hành vi nhất quán bất kể thương hiệu. Firmware ActiveLook sẽ liên tục phát triển và cải thiện. Firmware mới được triển khai thực tế khoảng 1 đến ~4 lần mỗi năm (xem phần tiếp theo về quy trình kiểm tra/cập nhật firmware).


Để tiếp tục phục vụ cộng đồng, ứng dụng ActiveLook của bạn cần được duy trì đồng bộ với chức năng firmware mới nhất khi chúng được triển khai. 


Cần thiết lập cơ chế kiểm tra ứng dụng có tương thích với firmware mới nhất đang triển khai hay không (dùng 2 chữ số đầu của số phiên bản firmware) và nhắc người dùng nâng cấp ứng dụng nếu phát hiện không khớp. 


Lý tưởng nhất, ứng dụng có thể tận dụng các chức năng mới nhất; tối thiểu phải bảo đảm ứng dụng vẫn hoạt động nếu hành vi firmware thay đổi.


Phần lớn nâng cấp firmware sẽ trung tính với API nhưng một số bản có thể loại bỏ hoặc sửa chức năng/hành vi cũ, dẫn tới bản phát hành “major”. Chúng tôi sẽ cố giảm tối đa tần suất các bản major này (có thể dự trù tối đa một lần mỗi năm). 


Các bản major sẽ được thông báo trước 6 tháng. Firmware và SDK tương ứng sẽ có bản “development” trước 3 tháng so với khi triển khai thực tế.


Thông tin tương ứng sẽ được gửi tới mailing list nhà phát triển, cho phép mọi nhà phát triển lên kế hoạch điều chỉnh ứng dụng trước khi firmware mới triển khai. 


Ngày triển khai firmware chính xác sẽ được thông báo trước để bạn đồng bộ thời điểm phát hành ứng dụng mới. 

‍

‍

Hướng dẫn nâng cấp firmware và chống phân mảnh

‍

Bảo đảm mọi kính chạy cùng firmware là trách nhiệm chung của mọi ứng dụng ActiveLook. Điều này giúp hệ sinh thái không “phân mảnh”, tránh người dùng gặp lỗi do phiên bản ứng dụng & firmware không đồng bộ.


Hiện việc nâng cấp firmware kính chỉ được thực hiện bởi “ActiveLook Sports Application”, ứng dụng đồng hành ActiveLook chính thức do Microoled phát triển.


Các ứng dụng ActiveLook được yêu cầu luôn kiểm tra phiên bản firmware khi ghép đôi với bất kỳ kính nào. Nếu phát hiện firmware cũ, ứng dụng nên nhắc người dùng nâng cấp. 


Quy trình chung:

  • Đọc phiên bản firmware hiện đang được nạp trên kính
  • So sánh với firmware mới nhất (tại thời điểm ứng dụng được phát hành)
  • Nếu firmware kính cũ hơn firmware tham chiếu:
  • Thông báo người dùng cần nâng cấp firmware bằng cách kết nối kính với ứng dụng ActiveLook Sports
  • Mời cài ứng dụng ActiveLook và cung cấp liên kết trực tiếp tới trang ứng dụng trên kho.

‍

‍

Quản lý bộ nhớ & tài nguyên

‍

Như mô tả ở trên, khi kết nối lần đầu với một cặp kính, ứng dụng cần tải trước các tài nguyên đồ họa sẽ dùng trong quá trình hoạt động. 


Tập bitmap và lệnh tải layout này được gọi là “configuration” ban đầu cho ứng dụng.


Một cặp kính có thể lưu nhiều configuration (tập tài nguyên đồ họa) đến từ các ứng dụng khác nhau. 


Điều đó yêu cầu một quy trình đơn giản nhưng sạch để quản lý tài nguyên và bộ nhớ trên thiết bị.


Từ firmware 4.0 trở đi (có từ tháng 6/2021), flash được tổ chức bằng filesystem: mỗi ứng dụng được cấp một thư mục configuration riêng để lưu toàn bộ tài nguyên.


Khi kết nối lần đầu với một cặp kính và sau khi kiểm tra phiên bản firmware (như phần trước), ứng dụng sẽ:

  • Kiểm tra lượng flash còn trống,
  • Tạo thêm không gian khi cần bằng cách xóa configuration ít dùng nhất,
  • Tải configuration đồ họa của nó lên.


Quy trình và lệnh chi tiết được mô tả trong tài liệu SDK & API.


Lưu ý configuration “system” mặc định (được ứng dụng ActiveLook Sports sử dụng) khoảng ~40kB. Flash tích hợp có khoảng ~3MB trống, vì vậy việc dọn configuration dự kiến không xảy ra thường xuyên.

‍

‍

Vậy là xong!

‍

Chúng tôi còn thiếu điều gì? Có phần nào chưa rõ? Hãy cho chúng tôi biết bằng cách điền biểu mẫu liên hệ (nhấn tại đây).


Marc
6 tháng 9, 2023

Tin khác