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代码:
2.java代码:
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(); } } } }
相关文章推荐
- 笔记60 | Android控制音量与音频播放的学习
- android音频系统音量控制探讨
- Android多媒体学习八:调用Android自带的音频录制程序,实现录制
- Android学习记录--音频视频播放
- 简单的Android音乐播放,解决incall类型不能通过音量按键控制声音大小的问题
- Android学习:SeekBar实现音量调节
- OPhone/Android的学习(2)—从分析Eclipse自动生成的代码到以XML控制UI
- Android 学习笔记(十四): MediaPlayer 播放音频
- Android通过摇晃手机的频率来控制声音的频率
- Android游戏开发学习笔记(二):音频的播放
- 【Android Training - Multimedia】管理音频播放[Lesson 1 - 控制app的音量]
- Android多媒体学习九:利用MediaRecorder类实现自己的音频录制程序
- Android学习之SeekBar控件
- Android学习之SeekBar控件
- android学习——SeekBar和RatingBar
- 在XNA 3.0 项目添加声音——播放并控制简单的.wav声音文件
- Android学习之SeekBar控件
- Android学习之网络APN接入点控制
- Android中自定义SeekBar来控制音量,并与系统音量键的操作保持同步
- Android学习:SeekBar实现音量调节