Неправильная ориентация на Android в ландшафтном режимеAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Неправильная ориентация на Android в ландшафтном режиме

Сообщение Anonymous »

Я пытаюсь получить правильную ориентацию своего веб-приложения. В iOS event.webkitCompassHeading работает очень хорошо, но в Android он либо не определен, либо возвращает NaN.
После поиска в Google я нашел код такого типа:< /p>
headingMio = Math.round(roundedAlpha + 85) % 360;
if (headingMio < 0) {
headingMio += 360;
}

Но в ландшафтном режиме это не работает. Как это исправить? Вот мой код:
let lastHeading = null;
let threshold = 5;
let threshold2 = 15;

document.addEventListener('click', async function requestOrientationPermission() {
if (typeof DeviceOrientationEvent.requestPermission === 'function') {
try {
const permissionState = await DeviceOrientationEvent.requestPermission();
if (permissionState === 'granted') {
console.log("Permesso concesso per l'orientamento del dispositivo.");
// Aggiungi l'event listener per l'orientamento
window.addEventListener('deviceorientation', handleDeviceOrientation);
document.removeEventListener('click', requestOrientationPermission);
} else {
console.log("Permesso negato per l'orientamento del dispositivo.");
}
} catch (error) {
console.error('Errore nel richiedere il permesso:', error);
}
} else {
window.addEventListener('deviceorientation', handleDeviceOrientation);
}
});

// Funzione che gestisce i dati di orientamento del dispositivo
function handleDeviceOrientation(event) {
roundedAlpha = Math.round(360 - event.alpha);
roundedBeta = Math.round(event.beta);
roundedGamma = Math.round(event.gamma);

headingMio = Math.round(event.webkitCompassHeading);

if (headingMio === undefined || isNaN(headingMio)) {
if (roundedBeta > 80 && roundedBeta < 105) {
//not worikng landscape
} else {
headingMio = Math.round(roundedAlpha + 85) % 360;
if (headingMio < 0) {
headingMio += 360;
}
}
}

const c = document.getElementById("orientation");

if (lastHeading === null || Math.abs(headingMio - lastHeading) > threshold) {
lastHeading = headingMio;

c.innerText = `Alpha (Z): ${roundedAlpha}, Beta (X - Inclinazione avanti/indietro): ${roundedBeta}, Gamma (Y - Inclinazione laterale): ${roundedGamma}, Nord Magnetico (Compass Heading): ${headingMio}`;

if (!isNaN(headingMio)) {
map.setHeading(parseInt(headingMio, 10));
}
}

c.innerText = `Alpha (Z): ${roundedAlpha}, Beta (X - Inclinazione avanti/indietro): ${roundedBeta}, Gamma (Y - Inclinazione laterale): ${roundedGamma}, Nord Magnetico (Compass Heading): ${headingMio}`;

}


Подробнее здесь: https://stackoverflow.com/questions/792 ... scape-mode
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Черная линия в ландшафтном режиме (приложение Android Studio)
    Гость » » в форуме JAVA
    0 Ответы
    32 Просмотры
    Последнее сообщение Гость
  • Черная линия в ландшафтном режиме (приложение Android Studio)
    Гость » » в форуме Android
    0 Ответы
    44 Просмотры
    Последнее сообщение Гость
  • Zxing в Android всегда в ландшафтном режиме
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Белый ящик API Android-заставки в ландшафтном режиме
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Пикассо показывает изображение в ландшафтном режиме
    Anonymous » » в форуме Android
    0 Ответы
    82 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»