Mündəricat:

Artırılmış Reallıq Veb Brauzeri: 9 addım
Artırılmış Reallıq Veb Brauzeri: 9 addım

Video: Artırılmış Reallıq Veb Brauzeri: 9 addım

Video: Artırılmış Reallıq Veb Brauzeri: 9 addım
Video: More than Coffee: Golang. Почему Java разработчики учат GO как второй язык. 2024, Noyabr
Anonim
Artırılmış Reallıq Veb Brauzeri
Artırılmış Reallıq Veb Brauzeri
Artırılmış Reallıq Veb Brauzeri
Artırılmış Reallıq Veb Brauzeri

Bu gün Android üçün genişlənmiş bir reallıq veb brauzeri hazırlayacağıq.

Bu fikir, ExpressVPN sponsorlu bir YouTube videosu çəkməyimi istədikdə başladı. Bu mənim ilk işim olduğundan, məhsulu ilə əlaqəli bir şey etmək istədim. Dərhal düşündüm ki, oh, yalnız bir VPN -də AR -da vebə baxa biləcəyimiz üçün genişləndirilmiş bir reallıq veb brauzeri hazırlayacağam. Bu qədər çətin ola bilməz, elə deyilmi? Səhv. Yeni layihələr öyrənmək üçün istifadə etmək istədiyim üçün bu layihə üçün özümə bəzi məhdudiyyətlər qoydum.

Android üçün olmasını istədiyim bir nömrəli idi, çünki həmişə IOS ilə işlər görürəm.

İkinci nömrə heç bir ödənişli API istifadə etmək istəmədim, hər kəsin bu layihəni yükləyib internetdə heç bir şey ödəmədən onu icra etməsini istədim. Beləliklə, heç bir IBM Watson, Google API və Unity Asset mağazasından heç nə yoxdur.

GƏLİN BAŞLAYAQ!

Addım 1: İlk şeylər əvvəlcə

İlk Şeylər İlk
İlk Şeylər İlk

İşləmək istədiyim ilk şey, mətndən danışmaq üçün yaxşı bir həll idi, buna görə də onlayn axtarışları səsimizlə edə bilərik. Həm də səsin ən yaxşı əl izləmə həllinə sahib olana qədər AR -da əla bir qarşılıqlı əlaqə üsulu olduğunu düşünürəm. Bilirəm ki, Android -in mətn funksionallığı üçün bəzi ana dili var, buna görə sürətli bir Google axtarışı Unity üçün bəzi plaginlər tapmağımıza kömək edəcək.

Bu plaginə ilk dəfə birlik üçün gəldim:

www.google.com/search?rlz=1C5CHFA_enUS816U…

Bunu sınadım və əla işlədi. Yeganə problem, ARCore ilə istifadə edərkən doğma bir popup qutusu meydana gətirməsi və Birliyin arxa planına çıxması və izləməni itirməyiniz idi.

Bu idealdan daha az idi.

Addım 2: Android üçün mətnlə işləmək üçün nitq əldə edin

Android üçün işləmək üçün mətnə nitq əldə etmək
Android üçün işləmək üçün mətnə nitq əldə etmək

Beləliklə, yerli pop -up qutusunu gətirməyən və çox şey tapa bilməyən bəzi pluginlər axtarmağa başladım, amma sonunda bu android kitabxanasını tapdım:

github.com/maxwellobi/Android-Speech-Recog…

İndi doğma Android inkişafı haqqında heç bir şey bilmirəm, ancaq özümə meydan oxumaq istədim və bu kitabxana üçün bir körpü kodu yazmağa çalışacağımı və Unity -də istifadə etmək üçün onu Android plagininə çevirməyi düşündüyümü başa düşdüm. saatlarla məyusluq.

Sonra nəhayət işə düşdü …

Addım 3: Öyrənilən dərslər

Öyrənilmiş dərslər
Öyrənilmiş dərslər

Beləliklə, bu prosesdə öyrəndiyim iki şey var ki, yalnız birlik üçün bir Android plaginini necə düzəltməyimdən dərhal görünmür.

Birincisi, plagininiz maraqlı bir şey edəcəksə, ehtimal ki, Android tətbiq kontekstinə bir istinad almalı olacaqsınız. Bunu Unity yükləmənizdən class.jar faylını Android layihənizə kitabxana olaraq əlavə edərək edə bilərsiniz. Beləliklə, fayl layihə quruluşuna gedin və sonra tətbiq modulu üçün asılılıqlar sekmesini seçin. Jar faylını əlavə etmək üçün burada artı düyməsini basa bilərsiniz. Birlik quruluşunuza, oynatma mühərriklərinə, androidplayerə, varyasyonlara, mono, inkişafa, siniflərə və nəhayət class.jar. Yalnız tərtib etmək üçün əhatə dairəsini dəyişdirin. İndi yeni bir java faylında edə bilərsiniz:

UnityPlayer.currentActivity.getApplicationContext ();

və ehtiyac duyduğunuz yerdə bu istinaddan istifadə edin.

Növbəti qəribə məsələ odur ki, bu səs funksiyası yalnız əsas mövzuda işlədilə bilər, əks halda səhvlər alacaqsınız. Birlikdə bunu etmək üçün yuxarıdakı şəkildəki kimi AndroidJavaRunnable olaraq UI Mövzusunda işləməyi funksiyalara və plaginə bildirməlisiniz.

Addım 4: Mübarizələr

Mübarizələr
Mübarizələr

Bu anda bir Android mütəxəssisi olduğumu düşünürəm

Android inkişaf etdirmək üçün onlayn müraciət edirəm, Android etiketləri və köynəklər sifariş edirəm. Həyat yaxşıdır. İndi Birlikdə bir veb səhifənin necə yaradılacağını anlamağa davam etməyə hazıram. Bir az araşdırma apardıqdan sonra görürəm ki, qəbul edilən həll Android WebView istifadə etməkdir. Bu, brauzerdə hər şeyi yükləmədən bir Android tətbiqetməsində qarşılıqlı fəaliyyət göstərən veb saytlar göstərməyə imkan verən bir Android sinifidir. Əsasən, istifadəçilərinizi tətbiqinizdə saxlaya bilərsiniz. İlk iş qaydası, kiminsə bunun üçün açıq mənbə olan bir birlik plagini hazırladığını görməkdir. Əvvəlcə bu plagini sınayıram:

github.com/gree/unity-webview

ancaq yalnız WebView -ni Unity GUI qatına verir ki, bu da işləməyəcək. Sonra VR üçün bu plagini tapıram:

github.com/IanPhilips/UnityAndroidVRBrowse…

Bu, WebView -ni bir tekstura və hətta qarşılıqlı təsirə malik hala gətirməyə imkan verir ki, bu da mənim cəhdlərimi və bütün kliklərimin birliyə mane olduğunu öyrənənə qədər bunun cavab olduğunu düşünürdüm.

Addım 5: Rəsm lövhəsinə qayıdın

Rəsm lövhəsinə qayıt
Rəsm lövhəsinə qayıt

Bunun üçün öz plaginimi yaratmağa çalışacağam, çünki ehtiyacım olan tək şey veb saytının birliyini birliyə göndərməkdir. Bununla əlaqədar bir araşdırma apardıqda, bir Android kətanını bitmapdə saxlaya biləcəyimi, sonra onu bir pngə kodlaya biləcəyimi və bu baytları Unity -ə göndərə biləcəyimi bildiyimdə, bu bayt dəsti ilə yeni bir toxuma yaradın və mən yaxşıyam. Bir neçə saatlıq məyusluqdan və varlığımı sorğu -suala çəkdikdən sonra …

Nəhayət işə düşdü.

İndi bir veb saytından bir ekran görüntüsü əldə edə bilərəm, buna görə arcore ilə necə işlədiyini görək …

Etmir.

Ən yeni telefon olmayan bir galaxy s7 istifadə etdiyimi söyləyirəm, amma bu WebView məhsulları hələ də bütün tətbiqi dondurur və əsasən yararsızdır. Düşünürəm ki, WebView və ARCore hər ikisi də əsas mövzunu çox yükləyir, amma bilmirəm. Rəsm lövhəsinə qayıt. Bu işi görmək istəyiriksə, ağır yükü bir növ serverə yükləməli olacağıq. Bir az googling etdikdən sonra məlum olur ki, yazılmayan başsız bir brauzer olan Phantom JS istifadə edən WebShot adlı Node.js kitabxanası olan bir veb saytın ekran görüntüsünü çəkə bilərsiniz.

Addım 6: Nəhayət bir yerə gedirik

Nəhayət Haradasa Alırıq
Nəhayət Haradasa Alırıq

İndi Node.js -dən necə istifadə edəcəyimi anlamalıyam ….

Müəyyən bir port nömrəsini dinləyən bir Node.js skriptini hazırlaya biləcəyiniz ortaya çıxdı və bu porta vurulduqda bəzi məlumatları geri qaytara bilər. Limanı 3000 -də dinləyən bir az salam dünya skripti yaradaraq bunu sınaya bilərik. Biz skriptlə birlikdə qovluğa daxil ola bilərik və sonra düyməni, sonra da skript adını işlədə bilərik. Brauzerimizdə IP ünvanınıza və sonra 3000 portuna keçsək, onun salam dünyaya qayıtdığını görə bilərik. İndi nodu kiçik bir şəkildə başa düşdüyüm üçün hawkhost.com olan veb saytlarımı yerləşdirdiyim serverdə işləyə bilərəm. Serverə daxil oldum və bir neçə salam dünya node.js skriptini işə salmağa çalışıram … və heç bir şey işləmir. Başqa bir neçə saatlıq qarışıqlıqdan sonra, xüsusi hosting serverimin yalnız istifadə üçün açıq olan 3000 və 12001 portu olduğunu öyrəndim.

Beləliklə, bu limanlardan və hosting serverlərim IP -dən istifadə edərək işləyən bir dünya nümunəsi əldə edə bilərəm. Sonra WebShot modulunu quraşdırıram və URL keçə biləcəyim kiçik bir skript yaradıram və bu veb ünvanındakı veb saytın görüntüsünü mənə qaytaracaq. İndi bu node skriptini işə sala və Unity -dən serverimin spesifik IP və port nömrəsinə http POST sorğusu göndərə bilərəm ki, bu da həmin veb saytın görüntüsü olan bir bayt aralığını mənə qaytaracaq. İndi başqa bir problem terminalımı bağladığımda prosesin bitdiyini və dinləməyi dayandırmasıdır. Daha çox araşdırma aparıram və sonsuza qədər adlı bir modul tapıram. NPM əbədi olaraq quraşdırılır və indi sonsuza qədər gedə bilərəm və skriptə sonsuza qədər başlaya bilərəm və daxil olub yenidən dayandırana qədər işləməyə davam edəcək.

Addım 7: İşləyir

İşləyir!
İşləyir!

Əla. Ancaq kifayət qədər sərin deyil.

AR -da İnternetə baxmağın dəyəri haqqında düşündüyüm zaman boşluq əlavə olunur. Artıq tək bir ekranla məhdudlaşmırıq, buna görə axtarış yolumu qarşımda görselleştirmeme imkan verən bir şey etmək istəyirəm. Gəlin ilk axtarış səhifəsini yükləyək, sonra həmin səhifəni tarayaq və hər bir axtarış nəticəsini bir link olaraq çıxaraq, sonra ana ekranın üstündə bir şəkil olaraq yükləyə bilək. Bunu Google nəticələrinin ilk səhifəsini silmək və davamlı olaraq sonsuza qədər işlədən başqa bir Node.js skripti ilə edə bilərik. Bu, Google axtarış API -si ilə daha səmərəli şəkildə edilə bilər, lakin bu layihənin ikinci nömrəli qaydası ödənişli API -lər deyildi, buna görə də hələlik belə edəcəyik. İndi hər bir bağlantı üçün şəkillərə sahib olduğumuza görə, hər dəfə tıkladıqda və bum vuranda daha böyük bir ekrana yükləyə bilərik, burada gözəl bir kiçik brauzerimiz var. Tamamilə işləmir, amma götürəcəyəm. Yaxşı, bu layihəni özünüz idarə etmək istəyirsinizsə, Github -a gedin və expressVPN layihəsini yükləyin:

github.com/MatthewHallberg/ARBrowserExpres…

Addım 8: Hər şeyi işə salın

Hər şeyi işə salmaq
Hər şeyi işə salmaq

Birlikdə açın və hər şeyi maşınınızda yerli olaraq işlədək. Əvvəlcə maşınınızın IP ünvanını tapmalısınız, buna görə də Mac -da olsanız, IP -ni göstərmək üçün wifi simvolunu vurun.

Birliyə qayıdın və brauzer nəzarətçi skriptini açın və orada IP ünvanınızı daxil edin və panoya kopyalayın. NodeScripts qovluğunu tapın və masaüstünüzə qoyun, qovluğu açın və hər iki uzantını.js olaraq dəyişdirin. Hər bir skript açın və IP ünvanınızı IP olaraq dəyişdirin. İndi terminal açın və bəzi şeylər quraşdırmalıyıq. Hələ yoxdursa HomeBrew quraşdırın.

-brew quraşdırma qovşağı

-npm veb şəklini quraşdırın

-npm quraşdırma flatiron

-npm quraşdırma birliyi

-npm cheerio quraşdırın

İndi hər iki skripti belə qovluq qovluğuna başlaya bilərik və getimage.js node edə bilərik və sonra yeni bir terminal pəncərəsi açırıq və getlinks.js node edirik Hər iki terminal pəncərəsini işlək vəziyyətdə buraxın və redaktora qayıdın. Oyuna bassaq hər şey yaxşı işləməlidir. Telefonumuza daxil olmaq üçün fayl qura, parametrlər qura və qura və qaça bilərik! Serverləri dayandırmaq istəyirsinizsə, c terminalını və ya q terminalını bağlayın.

BU BELƏDİR!

Tövsiyə: