Разработка на 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
дистанционно
договорная
Необходима помощь в решении задачи по java? Java (ORM + Spring Boot), базы данных (MySQL), веб-программирование (HTML, CSS, JavaScript). Реализовать информационную систему «Склад магазина техники» с веб-интерфейсом. Необходимый функционал: добавление техники, удаление техники, редактирование техники, поиск техники по различным параметрам, отдельный фильтр (сортировка) по дате выпуска машины, гистограмма количества отгруженной техники (на JavaScript, либо на Java) по дням, счетчик элементов (техники) в таблице (на JavaScript, либо на Java). Необходима стандартная форма авторизации от Spring Boot. Параметры объекта «машина»: ID, Вид техники (например, мультиварка), Группа техники (например, бытовые приборы), Дата ввоза на склад, Дата вывоза со склада, ФИО водителя, увозящего технику со склада.
Москва
Фрилансеры
2025-05-04
Разработка на Java
дистанционно
договорная
Пожелания и особенности: Репетиторство. Пожелания и особенности: Репетиторство.
Казань
Фрилансеры
2025-05-02
Разработка на Java
дистанционно
договорная
Пожелания и особенности: Нельзя использовать ИИ и любые нейросети! Задача состоит в том, чтобы реализовать небольшой аналог почтового сервера с консольным интерфейсом. В файле описаны четкие и конкретные требования. Задание нужно выполнить на МАКСИМАЛЬНЫЙ балл. Использование любых сторонних библиотек запрещено. Исключением является JUnit. Пожелания и особенности: Нельзя использовать ИИ и любые нейросети! Задача состоит в том, чтобы реализовать небольшой аналог почтового сервера с консольным интерфейсом. В файле описаны четкие и конкретные требования. Задание нужно выполнить на МАКСИМАЛЬНЫЙ балл. Использование любых сторонних библиотек запрещено. Исключением является JUnit. Пожелания и особенности: Нельзя использовать ИИ и любые нейросети! Задача состоит в том, чтобы реализовать небольшой аналог почтового сервера с консольным интерфейсом. В файле описаны четкие и конкретные требования. Задание нужно выполнить на МАКСИМАЛЬНЫЙ балл. Использование любых сторонних библиотек запрещено. Исключением является JUnit.
Москва
Фрилансеры
2025-04-29
Разработка на Java
дистанционно
договорная
Пожелания и особенности: Нужно поправить ай-трекинговое исследование в PCIbex Farm, чтобы оно работало и было доступно для прохождения. В коде есть загрузка ZIP с аудио и фото для 24 заданий (испытуемый будет выбирать 1 фото из 4), рандомизация фото и самих заданий, предварительная настройка ай-трекера под испытуемого. Хранение результатов пока не сделано. Я, к сожалению, не понимаю, в чем именно ошибки. Мне кажется, для понимающего человека работы на час-два. Если нужно, распишу пошагово, что именно должно происходить в эксперименте. Пожелания и особенности: Нужно поправить ай-трекинговое исследование в PCIbex Farm, чтобы оно работало и было доступно для прохождения. В коде есть загрузка ZIP с аудио и фото для 24 заданий (испытуемый будет выбирать 1 фото из 4), рандомизация фото и самих заданий, предварительная настройка ай-трекера под испытуемого. Хранение результатов пока не сделано. Я, к сожалению, не понимаю, в чем именно ошибки. Мне кажется, для понимающего человека работы на час-два. Если нужно, распишу пошагово, что именно должно происходить в эксперименте.
Москва
Фрилансеры
2025-04-29
Разработка на Java
дистанционно
договорная
Пишу приложение для подсчтета КБЖУ на java. нужна помощь. приложение планируется простейшее.
Челябинск
Фрилансеры
2025-04-29
Разработка на Java
дистанционно
договорная
Необходимо выполнить домашнее задание по джаве (1 курс университета) нужно реализовать небольшой аналог почтового сервера с консольным интерфейсом.
Москва
Фрилансеры
2025-04-28
Разработка на Java
дистанционно
договорная
Здравствуйте, учусь в 10 классе, пишу проект на java для сдачи в школе. Плохо понимаю язык, так что нужна помощь.
Челябинск
Фрилансеры
2025-04-28