2014-12-25 2 views
0

Мне интересно, можно ли добавить жестом к тизену, пригодной для использования, чтобы активировать экран с помощью определенного жестов.tizen wearable invisible/background app (добавление жестов)

Я уже нашел несколько руководств для кода javascript с жестами (например, двойным нажатием). но я хочу:

либо просто добавьте жест в os, чтобы выбрать способ активации в меню настроек (я думаю, что это невозможно) или сделать приложение, которое работает только в background (как сервис в android, я знаю, что tizen can not имеет службы, но, возможно, возможно каким-то образом запустить приложение на заднем плане). Это приложение также должно работать, когда экран выключен, поэтому я могу активировать его с помощью жеста.

Я уже видел строку конфигурации «backround-support = enable». это поможет? приложение также запускается во время выключения экрана? если да -> как включить экран затем

извините за эти миллионы вопросов. я надеюсь, что кто-то может помочь мне :)

спасибо за все ваши effords

EDIT: нормально, я получил проблему, реализующее это. Я устанавливаю свойство в свой config.xml, но всякий раз, когда я снова открываю (в задаче mgr) приложение, оно начинается с нового. Также он не обнаруживает мой жест, когда экран выключен. вот мой код: (я использую 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> 

распознавание двойного крана прекрасно работает и записывает дуплекс на экране приложения. когда я снова открываю приложение, весь экран снова пуст и начинает писать новые двойные точки. поэтому его не работает в фоновом режиме:/ также, он не распознает мои двойные точки, когда приложение находится в фоновом режиме. ни когда приложение находится на переднем плане, а экран выключен. Мне нужно сначала скрыть(), или я сделал ошибку в коде?

+0

Вы пробовали код на своем устройстве? SO - скорее место для решения проблем с программированием;) Также вы говорите о носителях на основе Tizen или смартфонах Sony, я спрашиваю, потому что это два разных продукта – veritas

+0

во-первых, спасибо за ваш ответ :) Я говорю о tizen wearable watch, samsung gear S. до сих пор я не пытался использовать какой-либо код на своем устройстве. это был более общий вопрос, если можно сделать такое приложение или нет. tizen имеет множество ограничений и, как правило, я программирую на устройствах Android, поэтому это новая тема для меня. вот почему я хотел попросить возможности. – sreel

ответ

2

Вы можете сделать свое веб-приложение для работы в фоновом режиме, установив background-support=enable в файле config.xml. Когда вы его установите, ваше приложение будет запущено даже при выключенном экране и сможет прослушать событие devicemotion, что поможет вам распознать жесты.

Для установки экрана вы можете использовать метод от tizen power API.
Для управления приложениями (для запуска или скрытия) вы используете Application API.

Вы не можете добавить свои собственные жесты в меню настроек ОС, и вы не должны забывать запускать приложение после каждой перезагрузки.

EDIT: Вы не можете проснуться с помощью сенсорных жестов, когда приложение скрыто, потому что у вас нет доступа к элементу, который вы в данный момент касаетесь. Когда ваше приложение находится в фоновом режиме, ваш документ не отображается (другое приложение сосредоточено и покрывает ваши).

Но вы можете активировать свой экран, используя motion gesture, f.e. прислушиваясь к событиям девизмы.

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); 
+0

большое спасибо :) эта информация была именно то, что я хотел :) спасибо за вашу помощь. – sreel

+0

хорошо, мне нужна ваша помощь еще раз. Я отправил код в свой первый пост и все мои проблемы. он не распознает мой жест, когда приложение находится в фоновом режиме или даже когда экран выключен. Что я делаю не так? – sreel

+0

Вы не можете получать события касания от элемента, который не отображается, это происходит, когда приложение помещается в фоновый режим. Однако, когда приложение находится в фоновом режиме (скрыто), любые изменения DOM не работают. Вам нужно обновить макет, когда приложение будет перенесено на передний план (событие фокуса). Чтобы проверить, что вы получили события, распечатайте что-то на консоль, используя метод console.log. –

 Смежные вопросы

  • Нет связанных вопросов^_^