首页 > 代码库 > Android学习之------SeekBar(控制wav音频的声音)
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 <SeekBar13 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 <TextView22 android:id="@+id/txtProgress"23 android:layout_width="fill_parent"24 android:layout_height="wrap_content" />25 26 27 <Button28 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 @Override101 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 }
Android学习之------SeekBar(控制wav音频的声音)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。