android - 除了通过音频管理器之外,还有其他方法可以获取当前音量吗?
问题描述
我正在创建一个 android 应用程序来设置和获取音频级别。使用音频管理器我们只得到 15 个音频级别。我需要将这些音频级别映射到百分比,因为用户将以百分比形式给出音频级别并获得百分比。只有 15 级音频无法映射到百分比。除了通过android中的音频管理器之外,还有其他方法可以获取当前音量吗?我需要使用 ndk 方法,因为我需要将它作为 .jar 文件提供。
解决方案
尝试使用Visualizer。
以下是一些可能对您有所帮助的代码:
private Visualizer audioOutput = null;
int rate = Visualizer.getMaxCaptureRate();
audioOutput = new Visualizer(0); // get output audio stream
audioOutput.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
@Override
public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) {
intensity = ((float) waveform[0] + 128f) / 256;
Log.d("vis", String.valueOf(intensity));
}
@Override
public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) {
}
},rate , true, false); // waveform not freq data
Log.d("rate", String.valueOf(Visualizer.getMaxCaptureRate()));
audioOutput.setEnabled(true);
推荐阅读
- python - 11 个具有重复代码行的函数 - 有没有办法减少冗余?
- python - 不能再用 python 2.7 安装 pip 了?
- ionic-framework - Ionic 5-单击重置按钮时清除搜索框文本
- rust - `HashMap 没有实现特征`IntoWasmAbi`
- python-3.x - 有没有办法使用 beam.Pipeline(relational_db) 更新 postgres sql 中的记录
- qt - 构建 openCV 和 Qt 项目和链接错误:未定义的引用和错误的 reloc 地址 0x1 在节
- python - var=fun() 和 var=fun 的区别
- linux - 在 linux 中,stdin、stdout、stderr 表示打开文件描述符?
- xslt-3.0 - 迭代后 XSLT 3.0 断言和异常抛出
- powershell - 在 taskfile.yml 中运行 powershell 脚本