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

使用SeekBar调节声音

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

SeekBar常用属性:

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

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

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

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

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

1.XML代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <TextView
 8         android:layout_width="fill_parent"
 9         android:layout_height="wrap_content"
10         android:text="SeekBar声音控制" />
11 
12     <SeekBar
13         android:id="@+id/seekbar"
14         android:layout_width="620px"
15         android:layout_height="wrap_content"
16         android:max="100"
17         android:progress="20"
18         android:progressDrawable="@drawable/soundbar"
19         android:thumb="@drawable/soundbutton" />
20 
21     <TextView
22         android:id="@+id/txtProgress"
23         android:layout_width="fill_parent"
24         android:layout_height="wrap_content" />
25 
26     
27     <Button
28         android:id="@+id/btnStart"
29         android:layout_width="match_parent"
30         android:layout_height="wrap_content"
31         android:text="播放" >
32     </Button>
33 
34 </LinearLayout>

2.java代码:

  1 package com.example.seekbar;
  2 
  3 import java.io.File;
  4 import java.io.IOException;
  5 import android.app.Activity;
  6 import android.content.Context;
  7 import android.media.AudioManager;
  8 import android.media.MediaPlayer;
  9 import android.os.Bundle;
 10 import android.os.Environment;
 11 import android.util.Log;
 12 import android.view.KeyEvent;
 13 import android.view.View;
 14 import android.view.View.OnClickListener;
 15 import android.widget.Button;
 16 import android.widget.SeekBar;
 17 import android.widget.SeekBar.OnSeekBarChangeListener;
 18 import android.widget.TextView;
 19 
 20 public class MainActivity extends Activity implements OnClickListener,
 21         OnSeekBarChangeListener {
 22     // 定义一个SeekBar和一个TextView
 23     private SeekBar seekBar;
 24     private TextView textView;
 25     private Button btn;
 26     private MediaPlayer mMediaPlayer;
 27 
 28     @Override
 29     public void onCreate(Bundle savedInstanceState) {
 30         super.onCreate(savedInstanceState);
 31         setContentView(R.layout.activity_main);
 32 
 33         /** 创建MediaPlayer对象 **/
 34         mMediaPlayer = new MediaPlayer();
 35         initView();
 36     }
 37     
 38     // 初始化
 39     private void initView() {
 40         textView = (TextView) findViewById(R.id.txtProgress);
 41         seekBar = (SeekBar) findViewById(R.id.seekbar);
 42         btn = (Button) findViewById(R.id.btnStart);
 43         seekBar.setMax(100);
 44         seekBar.setOnSeekBarChangeListener(this);
 45         btn.setOnClickListener(this);
 46     }
 47 
 48     private void play() throws IOException {
 49         // 获取文件路径 ,放在SD卡下
 50         File audioFile = new File(Environment.getExternalStorageDirectory(),
 51                 "welcome.wav");
 52         Log.i("PATH", audioFile.getAbsolutePath());
 53         mMediaPlayer.reset();
 54         mMediaPlayer.setDataSource(audioFile.getAbsolutePath());
 55         mMediaPlayer.prepare();
 56         mMediaPlayer.start();
 57         mMediaPlayer.setVolume(1f, 2f);
 58     }
 59 
 60     @Override
 61     public boolean onKeyDown(int keyCode, KeyEvent event) {
 62         if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
 63                 || keyCode == KeyEvent.KEYCODE_1) {
 64             AudioManager audioMa = (AudioManager) MainActivity.this
 65                     .getSystemService(Context.AUDIO_SERVICE);
 66             audioMa.adjustStreamVolume(AudioManager.STREAM_MUSIC,
 67                     AudioManager.ADJUST_LOWER,
 68                     AudioManager.FX_FOCUS_NAVIGATION_UP);
 69         } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP
 70                 || keyCode == KeyEvent.KEYCODE_2) {
 71             AudioManager audioMa = (AudioManager) MainActivity.this
 72                     .getSystemService(Context.AUDIO_SERVICE);
 73             audioMa.adjustStreamVolume(AudioManager.STREAM_MUSIC,
 74                     AudioManager.ADJUST_RAISE,
 75                     AudioManager.FX_FOCUS_NAVIGATION_UP);
 76         }
 77         return true;
 78     }
 79 
 80     @Override
 81     public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
 82         int i = seekBar.getProgress();
 83         textView.setText("" + i);
 84 
 85     }
 86 
 87     @Override
 88     public void onStartTrackingTouch(SeekBar arg0) {
 89         // TODO Auto-generated method stub
 90 
 91     }
 92 
 93     @Override
 94     public void onStopTrackingTouch(SeekBar arg0) {
 95         int i = seekBar.getProgress();
 96         mMediaPlayer.setVolume(i / 100f, i / 100f);
 97 
 98     }
 99 
100     @Override
101     public void onClick(View v) {
102         if (v.getId() == R.id.btnStart) {
103             try {
104                 mMediaPlayer.prepare();
105             } catch (Exception e) {
106                 e.printStackTrace();
107             }
108             try {
109                 // 播放音效
110                 if (!mMediaPlayer.isPlaying()) {
111                     play();
112                 } else {
113                     mMediaPlayer.stop();
114                 }
115             } catch (Exception e) {
116                 e.printStackTrace();
117             }
118         }
119     }
120 }

 

posted @ 2014-11-07 16:01  Summers  阅读(2170)  评论(0编辑  收藏  举报