Trang Chủ Xã hội Truyền thông Phát triển cho dự án Tango - núm vú

Phát triển cho dự án Tango - núm vú

Video: Project Tango 2025

Video: Project Tango 2025
Anonim

Android thúc đẩy nhiều dự án sáng tạo của Google. Chẳng hạn, thiết bị máy tính bảng được gọi là Project Tango. Thoạt nhìn, một thiết bị Project Tango giống như một chiếc máy tính bảng 7 inch thông thường. Khi bật thiết bị, bạn sẽ thấy màn hình chính Android quen thuộc với các biểu tượng để khởi chạy ứng dụng và với các chỉ báo cho tín hiệu WiFi và Sức mạnh của pin.

Thiết bị này thậm chí chạy ứng dụng Cửa hàng Play của Google, vì vậy bạn có thể sử dụng nó để duyệt web, chỉnh sửa tài liệu và làm tất cả những thứ mà các thiết bị máy tính bảng thông thường làm.

Nhưng phần cứng của dự án Tango không phải là bình thường. Mặt sau của máy tính bảng có bộ cảm biến độ sâu, camera mắt cá và máy ảnh hồng ngoại. Kết hợp dữ liệu từ các nguồn này với phần mềm theo dõi chuyển động nội bộ, Project Tango tạo ra một bản đồ 3D của không gian xung quanh.

Bạn có thể tạo bản đồ phòng khách của riêng mình và lưu trữ bản đồ trên thiết bị Project Tango. Khi mang thiết bị trở lại phòng khách, thiết bị nhớ không gian và tất cả các vật bên trong không gian.

Tango đi kèm với một vài ứng dụng demo. Với một ứng dụng, bạn nhắm mục tiêu thiết bị ở hai điểm để đo khoảng cách giữa các điểm đó. Bạn có thể đứng một vài feet từ điểm xuất phát và điểm kết thúc bởi vì thiết bị này biết bạn từ đâu trong mỗi điểm.

Với một ứng dụng khác, bạn đi qua thế giới ảo. Để thay đổi quan điểm của bạn trong một thế giới, bạn không xoay một phím điều khiển, di chuyển con chuột, hoặc kéo ngón tay của bạn dọc theo một màn hình. Thay vào đó, bạn xem màn hình của thiết bị khi bạn di chuyển quanh môi trường thực tế của chính bạn. Thiết bị này cho bạn thấy những gì bạn thấy trong thế giới ảo khi bạn đi về phía trước, quay sang nhìn sang hai bên và điều hướng theo các đối tượng 3D ảo.

Để giúp bạn bắt đầu phát triển, Project Tango đi kèm với một số ứng dụng mẫu. Mở ứng dụng QuickStart rất cơ bản trong Android Studio hiển thị các giá trị dịch và xoay khi bạn di chuyển thiết bị từ nơi này sang nơi khác. (Xem hình sau).

Ứng dụng QuickStart.

Ở cốt lõi của ứng dụng QuickStart là Hoạt động trên Android. Một số mã của ứng dụng xuất hiện bên dưới.

/ * * Bản quyền năm 2014 Google Inc. Tất cả các quyền được bảo lưu. * * Cấp phép theo Giấy phép Apache, Phiên bản 2. 0 ("Giấy phép"); * bạn không thể sử dụng tệp này ngoại trừ tuân thủ Giấy phép. * Bạn có thể lấy bản sao Giấy phép tại * * // www. apache. org / licenses / LICENSE-2. 0 * * Trừ khi luật pháp hiện hành yêu cầu hoặc đã đồng ý bằng văn bản, phần mềm * phân phối theo Giấy phép được phân phối trên cơ sở "AS IS", * KHÔNG CÓ ĐẢM BẢO HO ORC ĐIỀU KIỆN BẤT K AN HÌNH THỨC NÀO, thể hiện hay ngụ ý.* Xem Giấy phép cho các ngôn ngữ cụ thể chi phối điều khoản và * hạn chế theo Giấy phép. * / import com. Google. atap. tangoservice. Tango; nhập khẩu com. Google. atap. tangoservice. Tango. OnTangoUpdateListener; nhập khẩu com. Google. atap. tangoservice. TangoConfig; nhập khẩu com. Google. atap. tangoservice. TangoCoordinateFramePair; nhập khẩu com. Google. atap. tangoservice. TangoPoseData; / / Có nhiều tờ khai nhập khẩu ở đây lớp MainActivity công khai mở rộng hoạt động {@Hãy bảo vệ void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (bố cục R. activity_main); mTranslationTextView = (TextView) findViewById (R id id. translation_text_view); mRotationTextView = (TextView) findViewById (R.số luân phiên_tập tin xem); / / Khởi tạo Tango khách hàng mTango = mới Tango (này); / / Thiết lập cấu hình Tango cho phép theo dõi chuyển động mConfig = mTango. getConfig (TangoConfig. CONFIG_TYPE_CURRENT); mConfig. putBoolean (TangoConfig.KEY_BOOLEAN_MOTIONTRACKING, true);} @Chuyển quyền được bảo vệ void onActivityResult (int requestCode, int resultCode, Intent data) {try {setTangoListeners ();} catch (TangoErrorException e) {} thử {mTango. kết nối (mConfig);} catch (TangoOutOfDateException e) {} catch (TangoErrorException e) {}} private void setTangoListeners () {// Chọn phối hợp các cặp khung ArrayList framePairs = new ArrayList (); khung. thêm (mới TangoCoordinateFramePair (TangoPoseData. COORDINATE_FRAME_START_OF_SERVICE, TangoPoseData. COORDINATE_FRAME_DEVICE)); // Thêm một người nghe Tango pose data mTango. connectListener (framePairs, new OnTangoUpdateListener () { @Override public void onPoseAvailable (TangoPoseData pose) { // Định dạng dịch và quay dữ liệu cuối cùng String translationMsg = Chuỗi định dạng (sTranslationFormat, pose. [0], [1], đặt ra [2].vòng quay cuối cùng [1], đặt ra [2] // Hiển thị dữ liệu trong TextViews runOnUiThread (new Runnable () { @Override public void run () { mTranslationTextView setText (translationMsg); mRotationTextView. }); } });}} Những gì bạn nhìn thấy ở đây không phải là toàn bộ MainActivity 210 dòng lớp học, nhưng một số điểm nổi bật quan trọng của lớp đã được tóm tắt.

Hãy nhìn vào lớp MainActivity. Tâm của mã hoạt động nằm trong lớp OnTangoUpdateListener vô danh với phương thức onPoseAvailable của nó.

Trong cuộc sống hàng ngày, đặt ra là cách bạn định hướng đầu của bạn so với môi trường xung quanh. Và trong thuật ngữ Project Tango, một đặt ra là cách bạn định hướng thiết bị liên quan đến môi trường xung quanh. Một hình dáng được mô tả bằng bảy số, như số dịch và số quay mà bạn thấy trong hình trước. Khi phần cứng của thiết bị cảm thấy một tư thế mới, phần mềm gọi phương thức onPoseAvailable. Phương thức onPoseAvailable phải hiển thị các thông báo như Translation: -2.6622, 3 214773, 2. 824979 trong các trường văn bản của hoạt động.

Nhưng có vấn đề. Các quy tắc luồng của Android cho thấy không có chủ đề nào ngoài chủ đề chính có thể cập nhật giao diện người dùng của ứng dụng. Trong lớp MainActivity, cá thể OnTangoUpdateListener chạy trong một chủ đề của riêng nó. Vì vậy, phương thức onPoseAvailable của cá thể không thể hiển thị các thông báo trong các trường văn bản của hoạt động bằng cách gọi trực tiếp mTranslationTextView. setText và mRotationTextView. setText phương pháp.

Nhưng như Giáo sư Farnsworth trong

Futurama luôn luôn nói, có "Tin vui, mọi người! "Android có một phương pháp runOnUiThread chỉ trong những dịp như vậy. Tham số của phương thức runOnUiThread là một lớp thực hiện giao diện Runnable của Java. Trong mã của ứng dụng QuickStart, phương thức chạy của lớp này hiển thị văn bản thay mặt cho trường hợp OnTangoUpdateListener. Cuối cùng, người dùng của thiết bị nhìn thấy dữ liệu Translation and Rotation, và tất cả là tốt.

Phát triển cho dự án Tango - núm vú

Lựa chọn của người biên tập

Mang quà Hostess - núm vú

Mang quà Hostess - núm vú

Khi bạn được mời đến nhà của người khác, cho chủ nhà một món quà nhỏ được gọi là quà tặng chủ nhà) luôn là một cử chỉ tốt đẹp, ngay cả khi lời mời không hướng dẫn bạn. Với một chai rượu vang, một cây có hoa, hoặc một món ăn ngon thì đây là một cách đáng để bạn thể hiện sự đánh giá cao của bạn và thể hiện sự xuất sắc của khách mời ...

Trao quyền cho bản thân bằng cách tốt - những con voi

Trao quyền cho bản thân bằng cách tốt - những con voi

Dù bạn gọi nó là gì - cách cư xử, lịch thiệp, nghi thức, bạn có thể kết hợp nó với sự lãnh đạo. Khi bạn dẫn đầu trong việc làm cho mọi người dễ dàng và làm cho mọi tình huống dễ chịu, bạn thể hiện sự cân bằng. Sự trầm cảm đến từ sự tự tin. Trong khí hậu ngày nay, nghi thức và tục tĩu đôi khi được coi là hổ thẹn. Những người khác xem ...

Nhận ra nỗ lực của Người cao tuổi để giấu cảm xúc khó chịu - những con voi

Nhận ra nỗ lực của Người cao tuổi để giấu cảm xúc khó chịu - những con voi

Con người thường tự bảo vệ bản thân mình khỏi nỗi đau của riêng mình cảm xúc (bao gồm lo lắng, oán giận, thất vọng và trầm cảm) bằng cách che giấu những cảm xúc này - từ bản thân và từ người khác. Họ thường làm như vậy mà không hề biết rằng họ đang làm việc đó. Người cao niên cũng không ngoại lệ. Ẩn cảm xúc không phải lúc nào cũng là điều xấu - có thể là ...

Lựa chọn của người biên tập

Mạng Cisco: Mô hình OSI Lớp 5 - Lớp Session - Dummies

Mạng Cisco: Mô hình OSI Lớp 5 - Lớp Session - Dummies

Lớp phiên của Kết nối Hệ thống Mở (Open System Interconnection) (OSI) mô tả cách thức dữ liệu được định dạng giữa các thiết bị ở hai bên của liên kết. Đây là cách thức hiệu quả trong việc duy trì kênh mở giữa hai thiết bị. Tuy nhiên, ở các mức thấp của mô hình OSI, không có kết nối vĩnh viễn, nhưng ...

Cisco Các mạng: Gói - núm vú

Cisco Các mạng: Gói - núm vú

Các bộ chứa dữ liệu được gọi là các khung trong lớp liên kết dữ liệu (Lớp 2) và các gói trong lớp mạng (lớp 3). Trong lớp mạng, bạn chỉ nhìn vào phần của khung được gọi là dữ liệu trong khung Ethernet. Khi khung Ethernet di chuyển lên từ lớp liên kết dữ liệu tới ...

Cisco Mạng: Mô hình Mô hình Mạng OSI - núm vú

Cisco Mạng: Mô hình Mô hình Mạng OSI - núm vú

Tổ chức Tiêu chuẩn hoá Quốc tế (ISO) thiết bị phải được thiết kế để giao tiếp với nhau. ISO đã đề xuất mô hình mạng cho phép truyền thông này diễn ra, và mặc dù điều này là tốt từ một mức độ lý thuyết, nó không phải luôn luôn theo sau, đặc biệt là kể từ khi nó được xuất bản sau nhiều mạng ...

Lựa chọn của người biên tập

Lập trình Java cho Android: Cài đặt Công cụ Phần mềm để Bắt đầu - những người có đầu

Lập trình Java cho Android: Cài đặt Công cụ Phần mềm để Bắt đầu - những người có đầu

Trước khi bạn có thể viết Các chương trình Java cho các thiết bị Android, bạn cần một số công cụ phần mềm. Nếu bạn là một tay cũ để cài đặt phần mềm, và nếu máy tính của bạn không phải là quirky, các bước này có lẽ sẽ phục vụ bạn tốt. Truy cập trang web Lập trình Java dành cho Nhà phát triển Android for Dummies và tải xuống tệp có chứa các ví dụ về chương trình. Truy cập Java ...

Java Lập trình Thách thức: Thực hiện lại Tháp Hà Nội - đầu

Java Lập trình Thách thức: Thực hiện lại Tháp Hà Nội - đầu

Thách thức này giúp bạn sử dụng tài năng lập trình của mình để viết một chương trình Java sẽ in các bước cần thiết để giải quyết một tháp Towers của Hà Nội puzzle cho số lượng đĩa. Tháp Hà Nội là một câu đố logic cổ điển bao gồm ba chốt đứng và một số đĩa có đường kính khác nhau. Mỗi

Java: lặp lại và For Vòng lặp - núm vú

Java: lặp lại và For Vòng lặp - núm vú

Trong Java, giống như trong thế giới thực, có rất nhiều lần khi bạn lặp lại một cái gì đó. Tương tự như vậy, các ứng dụng có nhu cầu lặp lại nhiệm vụ. Thực hiện chúng một lần là không đủ, trong một số trường hợp. Chương này giúp bạn hiểu cách thực hiện cùng một nhiệm vụ nhiều lần. Một vòng lặp lặp đi lặp lại bao gồm một cấu trúc đặc biệt theo dõi khi nào ...