demo已经上传下载地址
http://download.csdn.net/detail/kongxiuqi/9459516
核心代码:
在录音开始时同事开启如下线程,每隔一段时间获取音量大小。然后根据音量大小刷新UI
new Thread(new Runnable() {
@Override
public void run() {
try {
while (isRecording) {
android.os.Message msg = new android.os.Message();
msg.what = recorder.getMaxAmplitude() * 13 / 0x7FFF;
handler.sendMessage(msg);
SystemClock.sleep(100);
}
} catch (Exception e) {
}
}
}).start();
这里是通过广播实现,发送广播通知相关页面刷新UI
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
Intent it = new Intent("voice_change");
it.putExtra("volumn", msg.what);
sendBroadcast(it);
}
}
};
在Activity中注册广播,收到广播后刷新UI
private class VoiceBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int volumn = intent.getIntExtra("volumn", 0);
if (volumn < micImages.length) {
micImage.setImageDrawable(micImages[volumn]);
}
}
}
如下效果: