您的位置:首页 > 移动开发 > Android开发

Android学习之SeekBar(控制wav音频的声音)

2014-11-07 16:01 246 查看
使用SeekBar调节声音

SeekBar控件其实就是一个高级点的进度条,就像我们在听歌,看电影用的播放器上的进度条一样,是可以拖动的,可以改变进度的一个进度条控件!

SeekBar常用属性:

android:max[integer]//设置拖动条的最大值

android:progress[integer]//设置当前的进度值

android:secondaryProgress[integer]//设置第二进度,通常用做显示视频等的缓冲效果

android:thumb[drawable]//设置滑块的图样

android:progressDrawable[drawable]//设置进度条的图样

1.XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SeekBar声音控制" />

<SeekBar
android:id="@+id/seekbar"
android:layout_width="620px"
android:layout_height="wrap_content"
android:max="100"
android:progress="20"
android:progressDrawable="@drawable/soundbar"
android:thumb="@drawable/soundbutton" />

<TextView
android:id="@+id/txtProgress"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

<Button
android:id="@+id/btnStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="播放" >
</Button>

</LinearLayout>


2.java代码:

package com.example.seekbar;

import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener,
OnSeekBarChangeListener {
// 定义一个SeekBar和一个TextView
private SeekBar seekBar;
private TextView textView;
private Button btn;
private MediaPlayer mMediaPlayer;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

/** 创建MediaPlayer对象 **/
mMediaPlayer = new MediaPlayer();
initView();
}

// 初始化
private void initView() {
textView = (TextView) findViewById(R.id.txtProgress);
seekBar = (SeekBar) findViewById(R.id.seekbar);
btn = (Button) findViewById(R.id.btnStart);
seekBar.setMax(100);
seekBar.setOnSeekBarChangeListener(this);
btn.setOnClickListener(this);
}

private void play() throws IOException {
// 获取文件路径 ,放在SD卡下
File audioFile = new File(Environment.getExternalStorageDirectory(),
"welcome.wav");
Log.i("PATH", audioFile.getAbsolutePath());
mMediaPlayer.reset();
mMediaPlayer.setDataSource(audioFile.getAbsolutePath());
mMediaPlayer.prepare();
mMediaPlayer.start();
mMediaPlayer.setVolume(1f, 2f);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|| keyCode == KeyEvent.KEYCODE_1) {
AudioManager audioMa = (AudioManager) MainActivity.this
.getSystemService(Context.AUDIO_SERVICE);
audioMa.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER,
AudioManager.FX_FOCUS_NAVIGATION_UP);
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP
|| keyCode == KeyEvent.KEYCODE_2) {
AudioManager audioMa = (AudioManager) MainActivity.this
.getSystemService(Context.AUDIO_SERVICE);
audioMa.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE,
AudioManager.FX_FOCUS_NAVIGATION_UP);
}
return true;
}

@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
int i = seekBar.getProgress();
textView.setText("" + i);

}

@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub

}

@Override
public void onStopTrackingTouch(SeekBar arg0) {
int i = seekBar.getProgress();
mMediaPlayer.setVolume(i / 100f, i / 100f);

}

@Override
public void onClick(View v) {
if (v.getId() == R.id.btnStart) {
try {
mMediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
try {
// 播放音效
if (!mMediaPlayer.isPlaying()) {
play();
} else {
mMediaPlayer.stop();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: