鸿蒙5.0&next开发【ringtone(铃声服务)】 铃声服务

ringtone提供铃声设置的功能。

起始版本: 5.0.0(12)

导入模块

import { ringtone } from '@kit.RingtoneKit'

RingtoneType

描述铃声的类型枚举。

系统能力:SystemCapability.Ringtone.Core

起始版本: 5.0.0(12)

名称说明
CALL0来电铃声。
MESSAGE1信息铃声。
NOTIFICATION2通知铃声。
ALARM3闹钟铃声。

RingtoneErrors

该枚举为设置铃声,获取铃声支持类型和获取铃声支持文件类型等接口的错误码。

系统能力: SystemCapability.Ringtone.Core

起始版本: 5.0.0(12)

名称说明
ERROR_INVALID_PARAM401参数非法。
ERROR_USER_CANCELED1011600001用户取消。
ERROR_FILE_NOT_FOUND1011600002文件不存在。
ERROR_SHOW_FAILED1011600003铃声弹框失败。
ERROR_CALL_SYSTEM_API_FAILED1011600004调用系统接口失败。
ERROR_SYSTEM1011699999系统内部错误。

ringtone.getSupportedRingtoneTypes

getSupportedRingtoneTypes(): Array

查询当前系统支持自定义的铃声类型。

系统能力: SystemCapability.Ringtone.Core

起始版本: 5.0.0(12)

返回值:

类型说明
Array<[RingtoneType]>当前系统支持自定义的铃声类型。

示例:

import { ringtone } from '@kit.RingtoneKit'
import { JSON } from '@kit.ArkTS';
import { hilog } from '@kit.PerformanceAnalysisKit';

const APP_TAG = "Msc_Demo"
const DOMAIN = 0x0001

@Entry
@Component
struct Index {
  build() {
    Stack() {
      Column() {
        Button("查询当前系统支持自定义的铃声类型")
          .width(200)
          .height(50)
          .onClick(() => {
            let typeList: Array<ringtone.RingtoneType> = ringtone.getSupportedRingtoneTypes()
            hilog.info(DOMAIN, APP_TAG, 'getSupportedRingtoneTypes : ' + JSON.stringify(typeList));
          })
      }
      .width('100%')
      .height('100%')
      .backgroundColor(Color.Pink)
    }
    .height('100%')
    .width('100%')
  }
}

ringtone.getSupportedDataTypes

getSupportedDataTypes(ringtoneType: RingtoneType): Array<uniformTypeDescriptor.UniformDataType>

查询对应铃声类型支持的文件类型。

系统能力:SystemCapability.Ringtone.Core

起始版本: 5.0.0(12)

参数:

参数名类型必填说明
ringtoneType[RingtoneType]待查询的铃声类型。

返回值:

类型说明
Array<[uniformTypeDescriptor.UniformDataType]>返回对应铃声类型支持的文件类型。
错误码ID错误信息
401Parameter invalid.

示例:

import { ringtone } from '@kit.RingtoneKit'
import { BusinessError } from '@kit.BasicServicesKit';
import { uniformTypeDescriptor } from '@kit.ArkData';
import { JSON } from '@kit.ArkTS';
import { hilog } from '@kit.PerformanceAnalysisKit';

const APP_TAG = "Msc_Demo"
const DOMAIN = 0x0001

@Entry
@Component
struct Index {
  build() {
    Stack() {
      Column() {
        Button("查询支持的文件类型")
          .width(200)
          .height(50)
          .onClick(() => {
            try {
              let typeList: Array<uniformTypeDescriptor.UniformDataType> =
                ringtone.getSupportedDataTypes(ringtone.RingtoneType.NOTIFICATION)
              hilog.info(DOMAIN, APP_TAG, 'getSupportedDataTypes3----- : ' + JSON.stringify(typeList));
            } catch (error) {
              let err: BusinessError = error as BusinessError;
              hilog.error(DOMAIN, APP_TAG,
                'getSupportedDataType error message: ' + err.message + ', error code: ' + err.code);
            }
          })
      }
      .width('100%')
      .height('100%')
      .backgroundColor(Color.Pink)
    }
    .height('100%')
    .width('100%')
  }
}

ringtone.getSupportedMaxDuration

getSupportedMaxDuration(ringtoneType: RingtoneType, dataType: uniformTypeDescriptor.UniformDataType): number

查询对应铃声类型以及文件类型支持的时长。

系统能力:SystemCapability.Ringtone.Core

起始版本: 5.0.0(12)

参数:

参数名类型必填说明
ringtoneType[RingtoneType]待查询的铃声类型。
dataType[uniformTypeDescriptor.UniformDataType]待查询的文件类型。

返回值:

类型说明
number返回对应类型的铃声和文件支持的最大时长(单位:秒),其中闹钟铃声时长为300s,短信铃声和通知铃声时长为7s,来电铃声时长为60s。
错误码ID错误信息
401Parameter invalid.

示例:

import { ringtone } from '@kit.RingtoneKit'
import { BusinessError } from '@kit.BasicServicesKit';
import { uniformTypeDescriptor } from '@kit.ArkData';
import { hilog } from '@kit.PerformanceAnalysisKit';

const APP_TAG = "Msc_Demo"
const DOMAIN = 0x0001

@Entry
@Component
struct Index {
  build() {
    Stack() {
      Column() {
        Button("查询最大时长")
          .width(200)
          .height(50)
          .onClick(() => {
            try {
              let maxDuration: number =
                ringtone.getSupportedMaxDuration(ringtone.RingtoneType.MESSAGE,
                  uniformTypeDescriptor.UniformDataType.MP3)
              hilog.info(DOMAIN, APP_TAG, 'getSupportedMaxDuration: ' + maxDuration);
            } catch (error) {
              let err: BusinessError = error as BusinessError;
              hilog.error(DOMAIN, APP_TAG,
                'getSupportedMaxDuration error message: ' + err.message + ', error code: ' + err.code);
            }
          })
      }
      .width('100%')
      .height('100%')
      .backgroundColor(Color.Pink)
    }
    .height('100%')
    .width('100%')
  }
}

ringtone.startRingtoneSetting

startRingtoneSetting(context: common.UIAbilityContext, path: string, name: string, callback: AsyncCallback): void

拉起设置铃声弹窗,并返回点击的铃声类型,使用Callback异步回调。

系统能力:SystemCapability.Ringtone.Core

起始版本: 5.0.0(12)

参数:

参数名类型必填说明
contextcommon.[UIAbilityContext]UIAbility上下文。
pathstring应用沙箱内的文件相对路径。
namestring文件名,限制长度1000。
callbackAsyncCallback<[RingtoneType]>Callback对象。返回用户选择设置的铃声类型。
错误码ID错误信息
401Parameter invalid.
1011600001User canceled.
1011600002The media file is not found.
1011600003Failed to show the dialog box.
1011600004Failed to call the system API.
1011699999System exception.
import { common } from '@kit.AbilityKit';
import { ringtone } from '@kit.RingtoneKit'
import { BusinessError } from '@kit.BasicServicesKit';
import { JSON } from '@kit.ArkTS';
import { hilog } from '@kit.PerformanceAnalysisKit';

const APP_TAG = "Msc_Demo"
const DOMAIN = 0x0001

@Entry
@Component
struct Index {
  private context = getContext(this) as common.UIAbilityContext;

  build() {
    Stack() {
      Column() {
        Button("设为铃声OGG格式")
          .width(200)
          .height(50)
          .onClick(async () => {
            let audioPath: string = this.context.filesDir + '/test.ogg'
            let splitList = audioPath.split('/')
            let fileName = splitList[splitList.length - 1]
            hilog.info(DOMAIN, APP_TAG, 'audioPath:' + audioPath)
            hilog.info(DOMAIN, APP_TAG, 'fileName:' + fileName)

            try {
              ringtone.startRingtoneSetting(this.context, audioPath, fileName, (err, res) => {
                hilog.info(DOMAIN, APP_TAG, '返回值:' + JSON.stringify(res))
              })
            } catch (error) {
              let err: BusinessError = error as BusinessError;
              hilog.error(DOMAIN, APP_TAG,
                'accessSync failed with error message: ' + err.message + ', error code: ' + err.code);
            }
          })
      }
      .width('100%')
      .height('100%')
      .backgroundColor(Color.Pink)
    }
    .height('100%')
    .width('100%')
  }
}

ringtone.startRingtoneSetting

startRingtoneSetting(context: common.UIAbilityContext, path: string, name: string): Promise

拉起设置铃声弹窗,并返回点击的铃声类型,使用Promise异步回调。

系统能力:SystemCapability.Ringtone.Core

起始版本: 5.0.0(12)

参数:

参数名类型必填说明
contextcommon.[UIAbilityContext]UIAbility上下文。
pathstring应用沙箱内的文件相对路径。
namestring文件名。

返回值:

类型说明
Promise<[RingtoneType]>Promise对象。返回用户选择设置的铃声类型。
错误码ID错误信息
401Parameter invalid.
1011600001User canceled.
1011600002The media file is not found.
1011600003Failed to show the dialog box.
1011600004Failed to call the system API.
1011699999System exception.

示例:

import { common } from '@kit.AbilityKit';
import { ringtone } from '@kit.RingtoneKit'
import { BusinessError } from '@kit.BasicServicesKit';
import { JSON } from '@kit.ArkTS';
import { hilog } from '@kit.PerformanceAnalysisKit';

const APP_TAG = "Msc_Demo"
const DOMAIN = 0x0001

@Entry
@Component
struct Index {
  private context = getContext(this) as common.UIAbilityContext;

  build() {
    Stack() {
      Column() {
        Button("设为铃声OGG格式")
          .width(200)
          .height(50)
          .onClick(async () => {
            let audioPath: string = this.context.filesDir + '/test.ogg'
            let splitList = audioPath.split('/')
            let fileName = splitList[splitList.length - 1]
            hilog.info(DOMAIN, APP_TAG, 'audioPath:' + audioPath)
            hilog.info(DOMAIN, APP_TAG, 'fileName:' + fileName)
            try {
              await ringtone.startRingtoneSetting(this.context, audioPath, fileName).then(res => {
                hilog.info(DOMAIN, APP_TAG, '返回值:' + JSON.stringify(res))
              })
            } catch (error) {
              let err: BusinessError = error as BusinessError;
              hilog.error(DOMAIN, APP_TAG,
                'accessSync failed with error message: ' + err.message + ', error code: ' + err.code);
            }
          })
      }
      .width('100%')
      .height('100%')
      .backgroundColor(Color.Pink)
    }
    .height('100%')
    .width('100%')
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值