tizen可穿戴隐形/背景应用程序(添加手势)

时间:2014-12-25 19:41:07

标签: background gesture tizen sony-smartwatch

我想知道是否可以添加一些手势来使用tizen可穿戴设备,以便能够使用特定手势激活屏幕。

我已经找到了一些关于手势的javascript代码的教程(比如双击)。但我想要的是:

要么只是将手势添加到操作系统,就可以在设置菜单中选择激活手势(我认为这是不可能的?)或制作一个只在后台运行的应用程序(如android中的服务,我知道tizen不能提供服务,但也许有可能以某种方式在背景中以某种方式运行应用程序)。该应用程序也应该在屏幕关闭时工作,所以我可以用手势激活它。

我已经看到配置行“backround-support = enable”。这会有所帮助吗?该应用程序是否也在屏幕关闭时运行?如果是 - >如何打开屏幕

抱歉这百万个问题。我希望有人可以帮助我:)

感谢您的所有支持

编辑: 好吧,我实现了这个问题。我在config.xml中设置了属性,但每当我重新打开(在任务mgr中)应用程序时,它都从new开始。当屏幕关闭时,它也不会检测到我的手势。 这是我的代码:(我正在使用hammer api来检测双击) config.xml中:

    <?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/DoubleTap" version="1.0.0" viewmodes="maximized">
    <tizen:application id="3orhQYRmuI.DoubleTap" package="3orhQYRmuI" required_version="2.2"/>
    <content src="index.html"/>
    <feature name="http://tizen.org/feature/screen.size.all"/>
    <icon src="icon.png"/>
    <name>DoubleTap</name>
    <tizen:setting background-support="enable" />
</widget>

main.js:

$(window).load(function(){
    document.addEventListener('tizenhwkey', function(e) {
        if(e.keyName == "back")
            tizen.application.getCurrentApplication().exit();
    });

    var element = document.getElementById('content');
    var mc = new Hammer.Manager(element, {tapHighlightColor: "green" , showTouches: true});

    // Tap recognizer with minimal 2 taps
    mc.add( new Hammer.Tap({ event: 'doubletap', taps: 2 }) );

    mc.get('doubletap').recognizeWith('singletap');

    mc.on("doubletap", function(ev) {
        //$('#textbox').html("gay");
        element.textContent += ev.type +" ";
        var isScreenOn = tizen.power.isScreenOn();
        if(!isScreenOn) {
            tizen.power.turnScreenOn();
        }
    });
});

和index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
    <meta name="description" content="A single-page template generated by Tizen Wearable Web IDE"/>

    <title>Tizen Wearable Web IDE - Tizen Wearable - jQuery</title>

    <script type="text/javascript" src="js/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="js/hammer.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <link rel="stylesheet" href="css/style.css" />
</head>
<body>
  <div class=contents id="content">
  </div>
</body>
</html>

双击识别工作完美,并在应用程序屏幕上写入双击。当我重新打开应用程序时,整个屏幕再次变空并开始写新的双击。所以它并没有真正在后台运行:/ 此外,当应用程序在后台时,它无法识别我的双击。当应用程序位于前台并且屏幕关闭时。 我是否需要先以某种方式使用hide()或者我在代码中犯了错误?

1 个答案:

答案 0 :(得分:2)

您可以通过在config.xml文件中设置background-support=enable属性,使您的Web应用程序在后台运行。设置后,即使屏幕关闭,您的应用也会运行,并且可以监听devicemotion事件,这有助于您识别手势。

要设置屏幕,您可以使用tizen power API中的方法。
要控制应用程序(启动或隐藏),请使用Application API

您无法将自定义手势添加到操作系统设置菜单,用户应该记得在每次重启后启动应用程序。

编辑: 隐藏应用时,您无法使用触摸手势唤醒屏幕,因为您无法访问当前触摸的元素。当您的应用程序处于后台时,您的文档将不可见(其他应用程序是专注的,涵盖您的应用程序)。

但您可以使用动作手势激活屏幕,例如。听设备运动事件。

function motionListener (e) {
    var acc = e.acceleration,
        x = Math.abs(Math.round(acc.x)),
        y = Math.abs(Math.round(acc.y)),
        z = Math.abs(Math.round(acc.z)),
        diff;

    if (x >= 5 || y >= 5 || z >= 5) {
        console.log("Shake!");
        tizen.power.turnScreenOn();
    }
}

window.addEventListener("devicemotion", motionListener, true);