最近自己做了一个调用系统音量的demo拿出来给大家分享一下,二话不说了,上码。
/**
* 得到当前值并重绘view
* @param volume
*/
public void updateVolume(int volume) {
this.currentVolume = volume;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// 初始值
offset = 400;
allVolume.clear();
// 设置画笔颜色
mPaint.setColor(Color.GRAY);
for (int i = 0; i < maxVolume; i++) {
// 向上画
offset = offset - 20;
canvas.drawLine(50, offset, 100, offset, mPaint);
allVolume.add(offset);
}
drawLine(canvas);
}
private void drawLine(Canvas canvas) {
temp = currentVolume;
mPaint.setColor(Color.GREEN);
for (int i = 0; i < currentVolume; i++) {
temp--;
canvas.drawLine(50, allVolume.get(temp), 100, allVolume.get(temp),
mPaint);
}
}
private void drawLine(Canvas canvas) {
temp = currentVolume;
mPaint.setColor(Color.GREEN);
for (int i = 0; i < currentVolume; i++) {
temp--;
canvas.drawLine(50, allVolume.get(temp), 100, allVolume.get(temp),
mPaint);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
float index = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
y = event.getY();
break;
case MotionEvent.ACTION_MOVE:
moveY = event.getY();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
index = y - moveY;
int result =(int) (index /20);
int currentVolumn = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
//加音量
if (result>0) {
setVolume(currentVolumn+=result);
//减音量
}else{
setVolume(currentVolumn-=Math.abs(result));
}
break;
default:
break;
}
return true;
}
/**
* 自定义调节音量
* @param currentVolumn 音量值
*/
private void setVolume(int currentVolumn){
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolumn, 0);
if (currentVolumn>15) {
currentVolumn=15;
}
updateVolume(currentVolumn);
}
上面只贴了一些关键代码,需要源码的童鞋可以点击下面的链接
猛拽下载源码