我正在为 Samsung Gear S2 (web) 开发应用程序,该应用程序带有一个在时间结束时振动的计时器。我需要做什么才能使我的应用程序即使处于后台模式也可以振动?
问问题
647 次
1 回答
1
一般来说,背景振动(从屏幕关闭状态)不能直接用于 Web 应用程序,除非您使用警报 API 或通知。
但是使用Power API和web workers可以很容易地欺骗定时背景振动。我正在分享一个示例代码:
main.js
window.onload = function() {
document.addEventListener('tizenhwkey', function(e) {
if (e.keyName === "back") {
try {
tizen.application.getCurrentApplication().hide();
}catch (ignore) {}
}
});
var mainPage = document.querySelector('#main');
mainPage.addEventListener("click", function() {
var contentText = document.querySelector('#content-text');
var worker; //web worker
worker = new Worker("js/worker.js"); //load from directory
worker.onmessage = function(event) { //receive data from worker
tizen.power.turnScreenOn(); // forcefully turn the screen on
setTimeout(function (){
contentText.innerHTML = event.data; // time counter
navigator.vibrate(1000);
}, 500); // just being safe (vibrate after screen is on)
};
});
};
worker.js
var i=0;
function timedCount() {
i=i+1;
postMessage(i); //send data
setTimeout("timedCount()",5000); // set vibration interval (or use specific time)
}
timedCount();
在 config.xml 中添加这些行
<tizen:privilege name="http://tizen.org/privilege/power"/>
<tizen:setting background-support="enable" encryption="disable" hwkey-event="enable"/>
启用后台支持后,当您应用网络工作者时,应用程序将在最小化时响应。在返回键事件上使用getCurrentApplication().hide()而不是 getCurrentApplication().exit() 将为您完成任务。
检查振动指南以了解不同类型的振动。
于 2016-11-10T16:26:58.927 回答