访问Android媒体流以进行音频可视化

Hen*_*sJr 21 java audio android

基本上,我想制作一个音频可视化器.我知道这是可能的,因为我的手机附带了一些动态壁纸.问题是,我似乎无法弄清楚如何使用Android API执行此操作.

我的应用程序会选择当前播放的媒体流,然后根据当时正在播放的音量,它会在屏幕上显示更多或更少的小节.

我怎样才能做到这一点?看起来我可以使用麦克风做这样的事情,但我希望能够为音乐,播客等做到这一点.

HaM*_*ReD 7

看起来在2.3这里已经改变了,现在有权限

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
Run Code Online (Sandbox Code Playgroud)

并且在aosp中有一个AudioCapture助手类可以帮助动态壁纸正确地完成它. https://android.googlesource.com/platform/packages/wallpapers/MusicVisualization/+/gingerbread-release/src/com/android/musicvis/AudioCapture.java

编辑:

AOSP中的一个进口与公共API不匹配.
import android.media.audiofx.Visualizer;

它是
import android.media.Visualizer;

如果它让人头疼,请确保切换.这都是2.3 api,它显然返回了一个低分辨率的音频流,但不足以录音.

  • 对于2.3+,这是要走的路.请参阅此处获取示例实现:https://github.com/felixpalmer/android-visualizer (2认同)

adi*_*ich 5

MusicVisualization墙纸源可在AOSP.它基本上似乎涉及调用MediaPlayer.snoop(),一个在Eclair中添加的无证方法.