WaveInApp - 音频可视化视图与波效应。

bruce · 2016-04-29 16:20 · 996次阅读

欢迎WaveApp - 音频可视化视图与波效应。 https://github.com/Cleveroad/WaveInApp

安装和使用

要包含这个库到您的项目中添加的build.gradle文件相关性:

dependencies {
    compile 'com.cleveroad:audiovisualization:0.9.2'
}

音频可视化视图使用的OpenGL ES2.0绘图波。所以,你需要在你的清单这一行:

<uses-feature android:glEsVersion="0x00020000" android:required="true" />

使用可视化DbHandler 这个处理器在展示台对象建立的所有功能,所以你也需要在你的清单此权限:

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

使用SpeechRecognizer DbHandler 这个处理器在SpeechRecognizer对象建立的所有功能,所以你也需要在你的清单此权限:

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

你必须非常小心,用新版本的Android M权限流动。请确保您使用GLAudioVisualizationView之前拥有所有必要的权限。

有两种方法,包括GLAudioVisualizationView在布局:直接在XML布局文件或Java代码中使用生成器。

通过XML:

<com.cleveroad.audiovisualization.GLAudioVisualizationView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/visualizer_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:av_bubble_size="@dimen/bubble_size"
    app:av_randomize_bubble_size="true"
    app:av_wave_height="@dimen/wave_height"
    app:av_footer_height="@dimen/footer_height"
    app:av_waves_count="7"
    app:av_layers_count="4"
    app:av_background_color="@color/color_bg"
    />

通过Java代码:

new GLAudioVisualizationView.Builder(getContext())
    .setBubbleSize(R.dimen.bubble_size)
    .setRandomizeBubbleSize(true)
    .setWaveHeight(R.dimen.wave_height)
    .setFooterHeight(R.dimen.footer_height)
    .setWavesCount(7)
    .setLayersCount(4)
    .setBackgroundColorRes(R.color.color_bg)
    .setLayerColors(R.array.colors)
    .build();

GLAudioVisualization查看实现音频可视化界面。如果你并不需要所有GLSurfaceView公共方法,你可以简单地投你以AudioVisualization接口并使用它。

private AudioVisualization audioVisualization;

...

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    // you can extract AudioVisualization interface for simplifying things
    audioVisualization = (AudioVisualization) glAudioVisualizationView;
}

...

要连接音频可视化视图,您可以使用链接到(DBM处理器)方法音频输出。海DBM Handler.Factory类可用的处理程序的实现的列表。

// set speech recognizer handler
SpeechRecognizerDbmHandler speechRecHandler = DbmHandler.Factory.newSpeechRecognizerHandler(context);
speechRecHandler.innerRecognitionListener(...);
audioVisualization.linkTo(speechRecHandler);

// set audio visualization handler. This will REPLACE previously set speech recognizer handler
VisualizerDbmHandler vizualizerHandler = DbmHandler.Factory.newVisualizerHandler(getContext(), 0);
audioVisualization.linkTo(vizualizerHandler);

你必须始终调用的onPause方法暂停可视化和停止浪费CPU资源白白计算。只要您的视图出现在眼前的用户,请拨打onResume。

@Override
public void onResume() {
    super.onResume();
    audioVisualization.onResume();
}

@Override
public void onPause() {
    audioVisualization.onPause();
    super.onPause();
}

当用户离开屏幕,音频可视化视图,别忘了免费的资源和呼叫释放()方法。

@Override
public void onDestroyView() {
    audioVisualization.release();
    super.onDestroyView();
}

实现自己的DbHandler

为了实现自己的数据转换处理,只是从数据库处理程序类扩展您的类并实现 onDataReceivedImpl(T object, int layersCount, float[] outDbmValues, float[] outAmpValues) 方法,其中:

  • object - 您的自定义数据类型
  • layersCount - 算你在生成器通过层。
  • outDbmValues - 数组大小等于layersCount。你应该在范围[0…1]层标准化dBm的值填充它。
  • outAmpValues - 数组大小等于layersCount。你应该与层振幅值填充它。勾选此方法的JavaDoc以获得更多信息。

然后调用onDataReceived(T对象)方法来显示数据。

您的处理程序也将获得 onResume(), onPause() 和 release() 从音频可视化视图的事件。

收藏

暂无评论

登录后可以进行评论。没有账号?马上注册