使用meteor / cordova显示电池电量并做出反应

时间:2017-07-19 08:31:37

标签: javascript reactjs meteor

我想使用meteor / cordova在iPhone上显示当前的电池电量并做出反应。

This是我使用的插件。

这就是我想象它的工作方式:

export default class BatteryDetails extends Component {

constructor(props){
    super(props);

    this.currentBatteryLevel = 0;

    function onBatteryStatus(status) {
        this.currentBatteryLevel = status.level;
    }

    window.addEventListener("batterystatus", onBatteryStatus, false);
    window.dispatchEvent(new Event('batterystatus'));
}

render() {
    return (
        <div>
            Remaining: {this.currentBatteryLevel}
        </div>
    );
}
}

2 个答案:

答案 0 :(得分:0)

我会选择更传统的东西,但我现在无法测试它:

export default class BatteryDetails extends Component {

  constructor(props) {
    super(props);

    this.state = {
      currentBatteryLevel: 0
    };

    window.addEventListener("batterystatus", (status) => this.onBatteryStatus(status), false);
    window.dispatchEvent(new Event('batterystatus'));
  }

  onBatteryStatus(status) {
    this.setState({ currentBatteryLevel: status.level });
  }

  render() {
    return ( 
      <div>
        Remaining: { this.state.currentBatteryLevel } 
      </div>
    );
  }
}

答案 1 :(得分:0)

我认为我在PhoneGap项目中使用了该包(而不是Meteor项目),我遇到了batterystatus事件的一些问题。我想是这样的:

第一次订阅活动时,会立即触发。下次订阅时它也会这样工作,但前提是您取消订阅了第一个事件监听器。如果你犯了这个错误(并忘记取消订阅),你需要重新启动应用程序(强制关闭它)。

但是,当您插入/拔下充电器时,事件总会被触发,因此这是测试它是否有效的便捷方式。