目录

闹钟

接口声明

在manifest.json文件的 features属性中增加如下配置。

{"name": "system.alarm"}

导入模块

在调用接口页面的<script>部分增加如下配置。

import alarm from '@system.alarm'

或

var alarm = require("@system.alarm")

使用限制

限制条件

说明

适用终端

手机、平板、智慧屏

适用区域

全球

接口定义

接口

描述

alarm.getProvider()

获取服务提供商,不支持则返回空串。

alarm.setAlarm(OBJECT)

设置闹钟,每次添加弹出提示框,同意后调用接口添加。

[h2]alarm.getProvider()

描述

获取服务提供商,不支持则返回空串。

示例代码

var provider = alarm.getProvider();  // huawei

[h2]alarm.setAlarm(OBJECT)

描述

设置闹钟,每次添加弹出提示框,同意后调用接口添加。

OBJECT参数

参数

类型

是否必填

说明

hour

number

是

设置起闹小时[0,23]。

minute

number

是

设置起闹分钟[0,59]。

message

string

否

闹钟名,字符长度不超过200。

vibrate

boolean

否

是否震动,默认true。

days

array<number>

否

重复周期。

默认是一次性闹钟。

  • [0,1,2,3,4,5,6] 每天
  • [0,1,2,3,4]周一到周五
  • [0,6](0表示周一 6表示周日)

ringtone

string

否

铃声。

默认铃声随系统。

文件路径为数据文件或应用内的资源。

success

function

否

成功的回调函数。

fail

function

否

失败的回调函数。

complete

function

否

接口调用结束的回调函数(调用成功、失败都会执行)。

示例代码

alarm.setAlarm({
        hour: 14,
        minute: 0,
        message: '华为测试闹钟',
        vibrate: false,
        days: [0,1,2,3,4,5],
        ringtone: '/Common/audio/20181211_155437.m4a',
        success: function (res) {
                console.log('handling success')
        },
        fail: function (erromsg, errocode) {
                console.log('handling failed');
                prompt.showToast({
                        message: 'set failed,msg:' +  erromsg + ', code = ' + errocode
                })
        },
        complete: function() {
                console.log('handling complete' )
        }
})

Demo

<template>
  <div class="doc-page">
    <div class="item-container">
      <div class="item-content line">
        <text class="title">service provider:</text>
        <text>{{provider}}</text>
      </div>
      <div class="item-content">
        <text class="title">Time:{{hour}} hours</text>
        <slider class="slider" min="0" max="23" onchange="setAlarmHour"></slider>
      </div>
      <div class="item-content">
        <text class="title">Time:{{minute}} minute</text>
        <slider class="slider" min="0" max="59" onchange="setAlarmMinute"></slider>
      </div>
      <div class="item-content">
        <text class="title">Alarm name</text>
        <input class="message" onchange="setAlarmMsg" value="{{message}}"></input>
      </div>
      <div class="item-content line">
        <text class="title">vibrate</text>
        <switch class="switch" checked="true" onchange="switchAlarmVibrate"></switch>
      </div>
      <div class="item-content line">
        <text class="title">days</text>
        <switch class="switch" checked="false" onchange="switchAlarmRepeat"></switch>
      </div>
      <div class="item-container">
        <input type="button" class="btn-blue" onclick="pickVideo" value="select a Ringtone"/>
      </div>
       <div class="item-container">
      <input type="button" class="btn-blue" onclick="setAlarm" value="Set an Alarm"/>
      </div>
    </div>
  </div>
</template>

<style>
.doc-page{
  flex: 1;
  flex-direction: column;
}
  .item-container {
    flex-direction: column;
    margin-bottom: 50px;
    margin-right: 60px;
    margin-left: 60px;
  }
  .item-content {
    flex-direction: column;
    width: 100%;
    padding: 10px;
  }
  .item-container .line {
    flex-direction: row;
  }
  .item-content .title {
    margin: 30px 0;
    height: 30px;
  }
  .message {
    width: 100%;
    height: 60px;
    border: 1px solid #3ec26a;
    border-left-width: 0;
    border-right-width: 0;
  }
.switch {
        margin-right: 30px;
    }
    .btn-blue {
    background-color: #0faeff;
    width: 100%;
    height: 80px;
    border-radius: 40px;
    color: #fff;
    font-size: 32px;
    font-weight: 500;
  }
</style>

<script>
  import alarm from '@system.alarm'
  import media from '@system.media'
  import prompt from '@system.prompt'

  export default {
    private: {
      componentName: 'Alarm',
      hour: 0,
      minute: 0,
      message: 'quickapp alarm',
      vibrate: true,
      repeat: false,
      days: [],
      provider: '',
      ringtone: ''
    },
    onInit () {
      this.$page.setTitleBar({text: 'alarm'})

      this.provider = alarm.getProvider()
    },
    setAlarm () {
      const day = [new Date().getDay() - 1]

      this.days = this.repeat ? [0, 1, 2, 3, 4, 5, 6] : day

      alarm.setAlarm({
        hour: this.hour,
        minute: this.minute,
        message: this.message,
        vibrate: this.vibrate,
        ringtone: this.ringtone,
        days: this.days,
        success() {
          prompt.showToast({
            message: 'set alarm success!'
          })
        },
        fail(data, code) {
          console.log('set alarm failed:code' + code.code)
        },
      })
    },
    pickVideo () {
      const _this = this

      media.pickFile({
        success(data) {
          prompt.showToast({
            message: 'data.uri:' + data.uri
          })
          _this.ringtone = data.uri
        },
        fail(data, code) {
          prompt.showToast({
            message: 'select ringtone:' + code
          })
        }
      })
    },
    setAlarmHour (e) {
      this.hour = e.progress
    },
    setAlarmMinute (e) {
      this.minute = e.progress
    },
    setAlarmMsg (e) {
      this.message = e.value
    },
    switchAlarmVibrate (e) {
      this.vibrate = e.checked
    },
    switchAlarmRepeat (e) {
      this.repeat = e.checked
    }
  }
</script>

效果图如下:

版本更新说明

版本

发布日期

描述

1040

2019-06-24

第一次正式发布。