# VoiceRipple
**Repository Path**: chinasoft4_ohos/VoiceRipple
## Basic Information
- **Project Name**: VoiceRipple
- **Description**: 一个超级棒的音波语音录制按钮,可以跟随用户的语音大小产生波状动态效果,可以通过转动颜色转盘来更换波纹颜色,可以对语音进行 采样率和衰减率的调整,录音后进行音乐播放。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2021-06-08
- **Last Updated**: 2021-09-27
## Categories & Tags
**Categories**: harmonyos-multimedia
**Tags**: None
## README
# VoiceRipple
#### 项目介绍
- 项目名称:VoiceRipple
- 所属系列:openharmony的第三方组件适配移植
- 功能:一个超级棒的音波语音录制按钮,可以跟随用户的语音大小产生波状动态效果,可以通过转动颜色转盘来更换波纹颜色,可以对语音进行 采样率和衰减率的调整,录音后进行音乐播放。
- 项目移植状态:主功能完成
- 调用差异:无
- 开发版本:sdk6,DevEco Studio2.2 Beta1
- 基线版本:master分支
#### 效果演示
#### 安装教程
1.在项目根目录下的build.gradle文件中,
```
allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}
}
```
2.在entry模块的build.gradle文件中,
```
dependencies {
implementation('com.gitee.chinasoft_ohos:voiceripple:1.0.0')
......
}
```
在sdk6,DevEco Studio2.2 Beta1 下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下
#### 使用说明
Demo中调用ripplelibrary组件库,操作展示组件功能。
1、布局文件中引用界面效果:
```xml
```
其中 自定义颜色选择器 是ColorPicker类:
```xml
```
自定义振幅波纹效果 是VoiceRippleView类。
```xml
```
2、在自定义中 振幅波形图实现
```java
@Override
public void render(Canvas canvas, int xx, int yy, int buttonRadius, int rippleRadius, int rippleBackgroundRadius) {
super.render(canvas, xx, yy, buttonRadius, rippleRadius, rippleBackgroundRadius);
rect = new RectF(xx - buttonRadius, yy - buttonRadius, xx + buttonRadius,
yy + buttonRadius);
canvas.drawArc(rect, new Arc(Constant.NUMBERF90, Constant.NUMBER360, false), timerBackgroundPaint);
canvas.drawArc(rect, new Arc(Constant.NUMBERF90, (float) (Constant.NUMBER360F
* (currentTimeMilliseconds / maxTimeMilliseconds)), false), timerPaint);
if (currentTimeMilliseconds >= maxTimeMilliseconds) {
listener.stopRecording();
}
}
@Override
public void render(Canvas canvas, int x, int y, int buttonRadius, int rippleRadius, int rippleBackgroundRadius) {
super.render(canvas, x, y, buttonRadius, rippleRadius, rippleBackgroundRadius);
canvas.drawCircle(x, y, rippleRadius, ripplePaint);
canvas.drawCircle(x, y, rippleBackgroundRadius, rippleBackgroundPaint);
canvas.drawCircle(x, y, buttonRadius, buttonPaint);
}
```
#### 测试信息
CodeCheck代码测试无异常
CloudTest代码测试无异常
病毒安全检测通过
当前版本demo功能与原组件基本无差异
当前版本demo部分功能暂不支持模拟器运行
#### 版本迭代
- 1.0.0
#### 版权和许可信息
Apache License 2.0