Блог
Строительство и ремонт
Репетиторы
Красота
Фрилансеры
Разные специалисты
Уход за животными
Тренеры
Автоинструкторы

Разработка на Java — удалённая работа в Москве

Дата: 2025-02-12
Детали
Регион
Москва
Занятость
дистанционно
Стоимость
договорная
Дата публикации
2025-02-12
Описание
Необходимо внести небольшие изменения в код. Необходимо изменить или на оборот доработать перый этап входа Аппка не запускается пока не выберешь камеру на телефоне, после чего загружается аппка и уже телефон запрашивает доступ к камере. Нужно: - либо убрать этап выбора камеры и назначать заднюю камеру по дефолту (соответсвенно чтоб страница запускалась с loader bar и запрос на доступ к камере, после чего инициализация камеры) - либо подключить выбор методов user и environment в соответствии с выбором пользователя, так как сейчас стоит метод environment и при выборе камеры переднего вида, включается все равно задняя var initialize = async() =>{ var unityCanvas = document.querySelector(“#unity-canvas“); var videoCanvas = document.querySelector(“#video-canvas“); window.arCamera = new ARCamera(unityCanvas, videoCanvas); window.iTracker = new ImageTracker(arCamera); try{ await window.iTracker.initialize(); console.log(“ImageTracker initialized!“); } catch{ console.error(“Failed to initialize ImageTracker. Are you missing opencv.js? “ + error); ShowError(“Failed to initialize the experience.“); return; } await LoadWebcams(); document.getElementById(“startARButton“).style.display = “block“; } initialize(); var container = document.querySelector(“#unity-container“); var canvas = document.querySelector(“#unity-canvas“); var loadingBar = document.querySelector(“#unity-loading-bar“); var progressBarFull = document.querySelector(“#unity-progress-bar-full“); function StartAR() { canvas.style.width = window.innerWidth + “px“; canvas.style.height = window.innerHeight + “px“; document.getElementById(“startARDiv“).style.display = “none“; createUnityInstance(document.querySelector(“#unity-canvas“), { dataUrl: “Build/AR Arts.data“, frameworkUrl: “Build/AR Arts.framework.js“, codeUrl: “Build/AR Arts.wasm“, streamingAssetsUrl: “StreamingAssets“, companyName: “DefaultCompany“, productName: “AR Web“, productVersion: “0.1“, //webglContextAttributes: { “preserveDrawingBuffer“: true }, // matchWebGLToCanvasSize: false, // Uncomment this to separately control WebGL canvas render size and DOM element size. // devicePixelRatio: 1, // Uncomment this to override low DPI rendering on high DPI displays. }, (progress) => { progressBarFull.style.width = 100 * progress + “%“; } ).then((unityInstance) => { window.unityInstance = unityInstance; RequestWebcam(); loadingBar.style.display = “none“; }); loadingBar.style.display = “block“; } //Set Facing Mode here ('environment', 'user', '') window.unityFacingMode = “environment“ window.WEBCAM_SETTINGS = { video: { facingMode: unityFacingMode, }, audio: false }; window.requestingForPermissions = false; async function RequestWebcam(){ window.requestingForPermissions = true; try{ window.webcamStream = await navigator.mediaDevices.getUserMedia(window.WEBCAM_SETTINGS); console.log(“Webcam access granted“); requestingForPermissions = false; } catch (err) { //user denied camera permission - show error panel console.error(“getUserMedia error - “ , err); ShowError(“Failed to start the experience. Camera permission was denied“); window.requestingForPermissions = false; } } async function StartWebcam(){ console.log(“StartWebcam“) while (window.requestingForPermissions) { // Wait until requestingForPermissions becomes true. console.log(“Waiting for permissions...“); await new Promise(resolve => setTimeout(resolve, 100)); // Adjust the delay time as needed. } console.log(“Got Permissions“); if(window.webcamStream) { const video = document.querySelector(“#webcam-video“); video.srcObject = webcamStream; try { await arCamera.startWebcam(video); console.log(“Webcam started successfully“); window.unityInstance.SendMessage('ARCamera', 'OnStartWebcamSuccess'); } catch(err){ console.error(“Webcam failed to start - “, err); window.unityInstance.SendMessage('ARCamera', 'OnStartWebcamFail'); } } else{ console.error(“Webcam failed to start - permission not yet granted“); window.unityInstance.SendMessage('ARCamera', 'OnStartWebcamFail'); } } async function LoadWebcams(){ let camDevices = []; // let backCams = []; let devices = await navigator.mediaDevices.enumerateDevices(); var ctr = 0; devices.forEach(mediaDevice => { if (mediaDevice.kind === 'videoinput') { if(window.unityFacingMode == 'environment' && !mediaDevice.label.includes('facing front')){ //back cam only camDevices.push(mediaDevice); } else if(window.unityFacingMode == 'user' && mediaDevice.label.includes('facing front')){ //front cam only camDevices.push(mediaDevice); } else{ //back and front camDevices.push(mediaDevice); } ctr++; } }); var select = document.getElementById(“chooseCamSel“); select.style.display = “block“; var count = 0; //reverse array because some Android phones can't distinguish front and back cams at first load //and when this happens, most of the time, front cam goes first and back cam goes last camDevices = camDevices.reverse(); camDevices.forEach(mediaDevice => { const option = document.createElement('option'); option.value = mediaDevice.deviceId; let label = `Camera ${count}`; if (mediaDevice.label) { label = mediaDevice.label } const textNode = document.createTextNode(label); option.appendChild(textNode); select.appendChild(option); count++; }); iTracker.WEBCAM_NAME = select.options[select.selectedIndex].innerHTML; } function SelectCam(){ var select = document.getElementById(“chooseCamSel“); window.deviceId = select.value; window.WEBCAM_SETTINGS.video['deviceId'] = deviceId; //console.log(window.WEBCAM_SETTINGS); iTracker.WEBCAM_NAME = select.options[select.selectedIndex].innerHTML; } async function FlipCam(){ arCamera.stopWebcam(); window.WEBCAM_SETTINGS.video.deviceId = ''; if(window.WEBCAM_SETTINGS.video.facingMode == 'user'){ window.WEBCAM_SETTINGS.video.facingMode = 'environment'; arCamera.setFlipped(false); } else{ window.WEBCAM_SETTINGS.video.facingMode = 'user'; arCamera.setFlipped(true); } window.webcamStream = await navigator.mediaDevices.getUserMedia(window.WEBCAM_SETTINGS); const video = document.querySelector(“#webcam-video“); video.srcObject = webcamStream; await arCamera.startWebcam(video); } function ShowError(error){ document.getElementById(“errorDiv“).style.display = “flex“; document.getElementById(“errorText“).innerHTML = error; } function ShowScreenshot(dataUrl){ document.getElementById(“screenshotDiv“).style.display = “flex“; document.getElementById(“screenshotImg“).src = dataUrl; document.getElementById(“screenshotImg“).style.width = “80vw“; document.getElementById(“screenshotImg“).style.height = 80 / window.innerWidth * window.innerHeight + “vw“; } function ShowConfirmUrl(url){ document.getElementById(“confirmUrlDiv“).style.display = “flex“; window.newUrlString = url; document.getElementById(“confirmUrlText“).innerText = “Are you sure you want to visit “ + url; } window.ITRACKER_GLOBALS = { //place global settings here INTERNAL_SMOOTHFACTOR_POS: .075, }.
Похожие заказы
Разработка на Java
дистанционно
договорная
Есть сервис для подписания договоров, нужно написать функцию баланса, связать с Т банком.
Москва
Фрилансеры
2025-04-08
Откликнуться
Разработка на Java
дистанционно
договорная
Сборка майнкрафт с квестами изначально тестировалась на определенной версии в одиночной игре. Эту же сборку установил на сервер с идентичными параметрами, но квесты почему-то не высвечиваются. Очень буду благодарен за помощь!!!.
Москва
Фрилансеры
2025-04-07
Откликнуться
Разработка на Java
дистанционно
договорная
Если вкратце: (Minecraft), ошибка в моде ftb quests.
Москва
Фрилансеры
2025-04-07
Откликнуться
Разработка на Java
дистанционно
договорная
Разбор дальнейшего плана обучения.
Москва
Фрилансеры
2025-04-05
Откликнуться
Разработка на Java
дистанционно
договорная
Разработка модов для игры Minecrat.
Москва
Фрилансеры
2025-04-04
Откликнуться
Разработка на Java
дистанционно
договорная
Пожелания и особенности: Создать модель в программе AnyLogic.
Москва
Фрилансеры
2025-04-03
Откликнуться
Разработка на Java
дистанционно
договорная
Пожелания и особенности: в чем суть. Есть 2 вкладки, данные копируются из одной в другую (скриптом) и все бы ничего, но 1) Во второй вкладке есть поля кудакопируются значения и есть поля куда вносятся в ручную 2) В первую вкладку может что-то добавляться между строк что потом будет скопировано во вторую и оно даже копируется во вторую куда надо вот в чем проблема, то что во второй вкладке было внесено в ручную не сдвигается а остается в тех же строках, и получается все тогда начинает ехать, а надо чтобы то куда вставляется новая строка все остальные столбцы были пустые, ну то есть строки должны полностью съезжать, если надо могу показать По цене можно договориться если задача сложная. Пожелания и особенности: в чем суть. Есть 2 вкладки, данные копируются из одной в другую (скриптом) и все бы ничего, но 1) Во второй вкладке есть поля кудакопируются значения и есть поля куда вносятся в ручную 2) В первую вкладку может что-то добавляться между строк что потом будет скопировано во вторую и оно даже копируется во вторую куда надо вот в чем проблема, то что во второй вкладке было внесено в ручную не сдвигается а остается в тех же строках, и получается все тогда начинает ехать, а надо чтобы то куда вставляется новая строка все остальные столбцы были пустые, ну то есть строки должны полностью съезжать, если надо могу показать По цене можно договориться если задача сложная.
Москва
Фрилансеры
2025-04-02
Откликнуться