å®å ¨ãªã³ã³ããã¹ãç¨: ãã®æ©è½ã¯ä¸é¨ã¾ãã¯ãã¹ã¦ã®å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã«ããã¦ãå®å ¨ãªã³ã³ããã¹ã (HTTPS) ã§ã®ã¿å©ç¨ã§ãã¾ãã
ã»ã³ãµã¼ API 群 (Sensor APIs) ã¯ã端æ«ã®ã»ã³ãµã¼ç¾¤ãä¸è²«ããå½¢ã§ã¦ã§ããã©ãããã©ã¼ã ããå©ç¨å¯è½ã«ãããå ±éã®è¨è¨ã§ä½ãããã¤ã³ã¿ã¼ãã§ã¤ã¹ã®éåã§ãã
æ¦å¿µã¨ä½¿ç¨æ³ä¸è¬ã»ã³ãµã¼ API (Generic Sensor API) ã®ä»æ§ã§ã¯ Sensor
ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®ç¾©ããã¦ãã¾ãããã¦ã§ãéçºè
ããããç¨ãããã¨ã¯ãªãã§ãããããããã«ãç¹å®ã®ç¨®é¡ã®ã»ã³ãµã¼ãããã¼ã¿ãåå¾ããããã«ããã®ãµãã¯ã©ã¹ãç¨ãããã¨ã«ãªãã¾ãããã¨ãã°ãAccelerometer
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯å徿ã«ç«¯æ«ã® 3 軸ããããã«ããã£ã¦ããå é度ãè¿ãã¾ãã
ã»ã³ãµã¼ã¯ã端æ«ã®ç©ççãªã»ã³ãµã¼ã«å®å
¨ã«å¯¾å¿ãã¦ãããã¨ãã対å¿ãã¦ããªããã¨ãããã¾ãããã¨ãã°ãGyroscope
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ç«¯æ«ã®ç©ççãªã¤ã³ã¿ã¼ãã§ã¤ã¹ã«å®å
¨ã«å¯¾å¿ãã¦ãã¾ãã䏿¹ãAbsoluteOrientationSensor
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ 2 å以ä¸ã®ç«¯æ«ã»ã³ãµã¼ã®æ
å ±ãã¢ã«ã´ãªãºã ã«ããçµã¿åãããæ
å ±ãæä¾ãã¾ãããããã®ã»ã³ãµã¼ã®ç¨®é¡ã¯ããããã ä½ã¬ãã« ããã³ é«ã¬ãã« ã¨å¼ã°ãã¾ããå¾è
ã®ç¨®é¡ã®ã»ã³ãµã¼ã¯ããã¥ã¼ã¸ã§ã³ã»ã³ãµã¼ (ã¾ãã¯ãä»®æ³ã»ã³ãµã¼ãåæã»ã³ãµã¼) ã¨ãå¼ã°ãã¾ãã
ã»ã³ãµã¼ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ã対å¿ãã端æ«ã»ã³ãµã¼ã®ãããã·ã¼ã§ããããã¾ããããã®ãããã»ã³ãµã¼ã®æ©è½ã®æ¤åºã¯ä»ã® API ããè¤éã«ãªãã¾ããã»ã³ãµã¼ API ãåå¨ããããã¨ãã£ã¦ãAPI ãå®éã®ãã¼ãã¦ã§ã¢ã»ã³ãµã¼ã«æ¥ç¶ããã¦ããããã»ã³ãµã¼ãåä½ããããã»ã³ãµã¼ã®æ¥ç¶ãç¶æããã¦ããããã¦ã¼ã¶ã¼ãã»ã³ãµã¼ã¸ã®ã¢ã¯ã»ã¹ã許å¯ãããã¯ãããã¾ãããããããã¹ã¦ã®æ å ±ã常ã«å©ç¨å¯è½ã«ãã¦ããã¨ãããã©ã¼ãã³ã¹ã¨é»æ± ã®æã¡ã«è² æ ãããã¾ãã
ãã®ãããã»ã³ãµã¼ API ã®æ©è½ãæ¤åºããã«ã¯ãAPI ãã®ãã®ãæ¤åºããä¸ã§ãé²è¡çããã°ã©ãã³ã°ã®æ¦ç¥ (å¾è¿°) ãã¨ããªããã°ããã¾ããã
以ä¸ã®ä¾ã§ã¯ãã»ã³ãµã¼ API ãæ¤åºãã 3 éãã®æ¹æ³ã示ãã¾ããããã«ããªãã¸ã§ã¯ãã®çæã try...catch
ãããã¯ã®ä¸ã§è¡ãæ¹æ³ãããã¾ãããªããNavigator
ã¤ã³ã¿ã¼ãã§ã¤ã¹ãç¨ããæ¤åºã¯å©ç¨å¯è½ãªé¸æè¢ã«å«ã¾ããªããã¨ã«æ³¨æãã¦ãã ããã
if (typeof Gyroscope === "function") {
// ããããåãâ¦
}
if ("ProximitySensor" in window) {
// 注æï¼
}
if (window.AmbientLightSensor) {
// æéã¸â¦
}
é²è¡çããã°ã©ãã³ã°
æ©è½ã®æ¤åºã®ç¯ã§è¨åããããã«ãç¹å®ã®ã»ã³ãµã¼ API ã使ãããããã§ãã¯ããã ãã§ã¯æ©è½ã®æ¤åºã«ã¯ä¸ååã§ããå®éã®ã»ã³ãµã¼ãåå¨ãããã¨ã確èªããªããã°ããã¾ããããã®ããã«é²è¡çããã°ã©ãã³ã°ãå¿ è¦ã§ããé²è¡çããã°ã©ãã³ã°ã«ã¯ã3 åã®æ¦ç¥ãå¿ è¦ã§ãã
以ä¸ã®ã³ã¼ãä¾ã§ããããã®ååã説æãã¾ããtry...catch
ãããã¯ã«ãããã»ã³ãµã¼ã®çææã«æããããã¨ã©ã¼ããã£ãããã¾ããerror
ã¤ãã³ããç£è¦ãããã¨ã§ãä½¿ç¨æã«æããããã¨ã©ã¼ããã£ãããã¾ããã¦ã¼ã¶ã¼ã«ä½ããæç¤ºãããã®ã¯ã許å¯ã®è¦æ±ãå¿
è¦ãªã¨ãã¨ã端æ«ããã®ã»ã³ãµã¼ã®ç¨®é¡ã«å¯¾å¿ãã¦ããªãã¨ãã ãã§ãã
ããã«ããã®æ©è½ã¯ãµã¼ãã¼ã§è¨å®ããã æ¨©éããªã·ã¼ ã«ãããããã¯ãããå¯è½æ§ãããã¾ãã
let accelerometer = null;
try {
accelerometer = new Accelerometer({ referenceFrame: "device" });
accelerometer.addEventListener("error", (event) => {
// å®è¡æã®ã¨ã©ã¼ãå¦çãã
if (event.error.name === "NotAllowedError") {
// 許å¯ãè¦æ±ããã³ã¼ãã«é£ã¶
} else if (event.error.name === "NotReadableError") {
console.log("ã»ã³ãµã¼ã«æ¥ç¶ã§ãã¾ããã");
}
});
accelerometer.addEventListener("reading", () => reloadOnShake(accelerometer));
accelerometer.start();
} catch (error) {
// çææã®ã¨ã©ã¼ãå¦çãã
if (error.name === "SecurityError") {
// åè¿°ã® Permissions Policy ã«é¢ããã¡ã¢ãåç
§
console.log(
"ã»ã³ãµã¼ã®çæã Permissions Policy ã«ãããããã¯ããã¾ããã",
);
} else if (error.name === "ReferenceError") {
console.log("ãã®ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã¯ã»ã³ãµã¼ã«å¯¾å¿ãã¦ãã¾ããã");
} else {
throw error;
}
}
許å¯ã¨ Permissions Policy
ã»ã³ãµã¼ã®è¨æ¸¬å¤ã¯ã権é API ã«ããã¦ã¼ã¶ã¼ãç¹å®ã®ã»ã³ãµã¼ã®ç¨®é¡ãç¨ãã許å¯ãä¸ãããã¤ãµã¼ãã¼ã® Permissions-Policy
ã§ãããã¯ããã¦ããªãå ´åã®ã¿åç
§ã§ãã¾ãã
以ä¸ã®ä¾ã§ã¯ãã»ã³ãµã¼ã使ç¨ãããã¨ããåã«ã¦ã¼ã¶ã¼ã«è¨±å¯ãè¦æ±ããæ¹æ³ã示ãã¾ãã
navigator.permissions.query({ name: "accelerometer" }).then((result) => {
if (result.state === "denied") {
console.log("å é度è¨ã»ã³ãµã¼ã使ã許å¯ãå¾ããã¾ããã§ããã");
return;
}
// ã»ã³ãµã¼ã使ç¨ãã
});
å¥ã®æ¹æ³ã¨ãã¦ãã»ã³ãµã¼ã使ç¨ãããã¨ãã¦ãSecurityError
ãç£è¦ãããã¨ãã§ãã¾ãã
const sensor = new AbsoluteOrientationSensor();
sensor.start();
sensor.addEventListener("error", (error) => {
if (event.error.name === "SecurityError")
console.log("AbsoluteOrientationSensor ã使ç¨ãã許å¯ãããã¾ããã");
});
以ä¸ã®è¡¨ã§ã¯ãããããã®ã»ã³ãµã¼ã®ç¨®é¡ã«ã¤ãã¦ãPermissions APIã<iframe>
è¦ç´ ã® allow
屿§ãPermissions-Policy
ãã£ã¬ã¯ãã£ãã§å¿
è¦ãªååã示ãã¾ãã
AbsoluteOrientationSensor
'accelerometer'
㨠'gyroscope'
㨠'magnetometer'
Accelerometer
'accelerometer'
AmbientLightSensor
'ambient-light-sensor'
GravitySensor
'accelerometer'
Gyroscope
'gyroscope'
LinearAccelerationSensor
'accelerometer'
Magnetometer
'magnetometer'
RelativeOrientationSensor
'accelerometer'
㨠'gyroscope'
è¨æ¸¬å¤
ã»ã³ãµã¼ã®è¨æ¸¬å¤ã¯ããã¹ã¦ã®ã»ã³ãµã¼ã®ç¨®é¡ã§ç¶æ¿ããã¦ãã reading
ã¤ãã³ãã³ã¼ã«ããã¯ãéãã¦åå¾ã§ãã¾ããåå¾ã®é »åº¦ã¯ã»ã³ãµã¼ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã«æ¸¡ããªãã·ã§ã³ã§ä½¿ç¨è
ãè¨å®ãã¾ãããã®ãªãã·ã§ã³ã¯ã1 ç§ãããä½ååå¾ããããè¡¨ãæ°å¤ã§ããæ´æ°ã¾ãã¯å°æ°ã使ç¨ãããã¨ãã§ããå°æ°ã¯ 1 ç§ã« 1 åæªæºã®é »åº¦ãè¨å®ããã¨ãç¨ãã¾ããå®éã®åå¾é »åº¦ã¯ç«¯æ«ã®ãã¼ãã¦ã§ã¢ã«ä¾åããè¨å®ããå°ãªããªãå¯è½æ§ãããã¾ãã
以ä¸ã®ä¾ã§ã¯ãMagnetometer
ã»ã³ãµã¼ãç¨ãã¦ããã説æãã¾ãã
let magSensor = new Magnetometer({ frequency: 60 });
magSensor.addEventListener("reading", (e) => {
console.log(`X 軸æ¹åã®ç£å ´ ${magSensor.x}`);
console.log(`Y 軸æ¹åã®ç£å ´ ${magSensor.y}`);
console.log(`Z 軸æ¹åã®ç£å ´ ${magSensor.z}`);
});
magSensor.addEventListener("error", (event) => {
console.log(event.error.name, event.error.message);
});
magSensor.start();
ã¤ã³ã¿ã¼ãã§ã¤ã¹
AbsoluteOrientationSensor
å°çã®åç §ç¨åº§æ¨ç³»ã«å¯¾ãã端æ«ã®ç©ççãªåãã表ãã¾ãã
Accelerometer
端æ«ã® 3 軸ããããã«ããã£ã¦ããå é度ãæä¾ãã¾ãã
AmbientLightSensor
ç¾å¨ã®å ã¬ãã«ãããªãã¡ãã¹ã端æ«ã®å¨å²ã®ç°å¢å ã®ç §åº¦ãè¿ãã¾ãã
GravitySensor
端æ«ã® 3 軸ããããã«ããã£ã¦ããéåãæä¾ãã¾ãã
Gyroscope
端æ«ã® 3 軸ããããã®è§é度ãæä¾ãã¾ãã
LinearAccelerationSensor
端æ«ã® 3 軸ããããã«ããã£ã¦ããå é度ããéåã®å½±é¿ãé¤ãã¦æä¾ãã¾ãã
Magnetometer
端æ«ã®ãã©ã¤ããªã¼ç£æ°ã»ã³ãµã¼ã§æ¤åºãããç£å ´ã®æ å ±ãæä¾ãã¾ãã
OrientationSensor
AbsoluteOrientationSensor
ã®ãã¼ã¹ã¯ã©ã¹ã§ãããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãç´æ¥ç¨ãããã¨ã¯ã§ãã¾ããããç¶æ¿ããã¤ã³ã¿ã¼ãã§ã¤ã¹ãã¢ã¯ã»ã¹ããããããã£ã¨ã¡ã½ãããæä¾ãã¾ãã
RelativeOrientationSensor
å°çã®åç §ç¨åº§æ¨ç³»ã¯èæ ®ããã端æ«ã®ç©ççãªåãã表ãã¾ãã
Sensor
ä»ã®ã»ã³ãµã¼ã¤ã³ã¿ã¼ãã§ã¤ã¹ãã¹ã¦ã®ãã¼ã¹ã¯ã©ã¹ã§ãããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãç´æ¥ç¨ãããã¨ã¯ã§ãã¾ããããç¶æ¿ããã¤ã³ã¿ã¼ãã§ã¤ã¹ãã¢ã¯ã»ã¹ããããããã£ã»ã¤ãã³ããã³ãã©ã¼ã»ã¡ã½ãããæä¾ãã¾ãã
SensorErrorEvent
Sensor
ãé¢é£ããã¤ã³ã¿ã¼ãã§ã¤ã¹ããæããããã¨ã©ã¼ã®æ
å ±ãæä¾ãã¾ãã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4