英特尔XDK HTML5+Cordova调整亮度



我在调整英特尔XDK HTML5+Cordova的亮度时遇到问题。我已经导入了一个phonegap/cordova插件@https://github.com/fiscal-cliff/phonegap-plugin-brightness但它仍然不会有任何作用。任何建议都将不胜感激!这是我的代码:

<script src="intelxdk.js"></script>
<script src="cordova.js"></script>
<script src="xhr.js"></script>
<script src="xdk/init-dev.js"></script>
<script type="application/javascript" src="lib/jquery.min.js"></script>
<script type="application/javascript" src="jqm/jquery.mobile-min.js" data-ver="0"></script>
<script type="application/javascript" src="js/app.js"></script>
<script type="application/javascript" src="js/init-app.js"></script>
<link rel="stylesheet" media="screen" type="text/css" href="css/colorpicker.css">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<script type="text/javascript" src="js/colorpicker.js"></script>
<script type="text/javascript" src="js/eye.js"></script>
<script type="text/javascript" src="js/utils.js"></script>
<script type="text/javascript" src="js/layout.js?ver=1.0.2"></script>
<script type="application/javascript" src="sidebar/js/hammer.js"></script>
<script type="application/javascript" src="sidebar/js/jquery.hammer.js"></script>
<script type="application/javascript" src="sidebar/js/swipe-hammer.js"></script>
<script type="application/javascript" src="sidebar/js/sidebar.js"></script>
<script type="application/javascript" src="js/index_user_scripts.js"></script>
<script type="application/javascript" src="xdk/ad/jqm_subpage.js"></script>
<script type="application/javascript">
    document.addEventListener('deviceready', onDeviceReady);
    function onDeviceReady() {
        window.brightness = cordova.require("cordova.plugin.Brightness.Brightness");
    }
    function setBrightness(value) {
        brightness.setBrightness(value, win, fail);
        alert(value);
    }
    function getBrightness() {
        brightness.getBrightness( win, fail);
        alert(brightness.getBrightness( win, fail));
    }
    function win(status) {
        alert('Message: ' + status);
    }
    function fail(status) {
        alert('Error: ' + status);
    }
    getBrightness();
</script>

  <div class="upage-outer">
    <div class="upage-content" id="page_54_58">
        <a class="widget uib_w_4 d-margins settings-button" data-uib="jquery_mobile/button" data-ver="0" data-role="button" data-icon="gear" data-iconpos="notext" id="settings_button">Settings Button</a>
    </div>
    <div class="inner-element uib_w_3 uib_sidebar leftbar bar-bg thumb-bg bar-gutter" data-uib="layout/left_sidebar" data-ver="1" data-anim="{'style':'overlap', 'v':200, 'side':'left', 'dur':200}">
      <div class="sidebar-content content-area vertical-col">
        <div class="widget uib_w_1 no_wrap no_swipe-x with-label d-margins brightness" data-uib="jquery_mobile/slider" data-ver="0">
          <label class="narrow-control label-inline"><i class="fa fa-adjust font-icons"> </i>
          </label>
          <div class="wide-control">
            <input type="range" value="50" min="0" max="100" step="1" name="brightness" style="display:none;" onchange="setBrightness(this.value)" data-highlight="true">
          </div>
        </div>
        <div class="table-thing with-label widget uib_w_2 d-margins screencolor" data-uib="jquery_mobile/input" data-ver="0">
          <label class="narrow-control"><i class="fa fa-eyedropper font-icons"> Screen Color</i>
          </label>
          <input class="wide-control" type="hidden" name="screencolor" id="screencolor">
          <p id="colorpickerHolder"></p>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="upage vertical-col left" id="settings" data-role="page">
  <div class="upage-outer">
    <div class="upage-content content-area vertical-col left" id="page_69_80">
    </div>
  </div>
</div>

在设备就绪事件触发之前,您正在调用getBrightness();。此时可能无法加载cordova插件。此外,您正在引用在设备就绪事件期间设置的窗口变量的亮度。

快速解决方法是将getBrightness()调用移到onDeviceReady()函数中。

    function onDeviceReady() {
        window.brightness = cordova.require("cordova.plugin.Brightness.Brightness");
        getBrightness();
    }

现在,我们在cordova设置好插件后调用该方法。您可以采取的另一种方法是将每个插件调用封装在设备就绪处理程序中,或者将函数范围界定为设备就绪上调用的函数。

最新更新