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 }
时间: 2024-08-08 05:44:19

Android学习之------SeekBar(控制wav音频的声音)的相关文章

Android 学习笔记多媒体技术之 AsyncTask+实现音频播放...

PS:今天搞了一下如何实现音频播放...结果被坑了,看书上写的代码是挺简单的,但是有个函数就是死活没看懂,这真是受不了...最后才弄明白,原来是一个实现异步任务的一个类...这个类使用java.util.concurrent这个高效框架来管理线程以及任务的执行...可以解决匿名线程存在的问题... 学习内容: 1.理解AsyncTask 2.如何实现音频播放... 1.AsyncTask   AsyncTask的特点就是实现一个任务在另一个线程内执行,而不是在主函数中进行执行,这样就不会导致主线

Android学习笔记18:自定义Seekbar拖动条式样

Android学习笔记18:自定义Seekbar拖动条式样

android学习SeekBar的使用

SeekBar介绍听歌的时候,我们常常想快进或者快退到某一时间段,听歌的时候我们控制音量大小听歌,SeekBar可以通过滑块的位置来标示数值,而且拖动条允许用户拖动滑块来改变进度条的大小 SeekBar的主要属性和方法(1)setMax --- 设置SeekBar的最大数值(2)setProgress --- 设置SeekBar的当前数值(3)setSecondProgress---设置SeekBar的第二数值 即当前拖动条的推荐位置SeekBar的事件由于拖动条可以诶用户控制.所以需要对其事件

Android开发之控制手机音频

本实例通过MediaPlayer播放一首音乐并通过AudioManager控制手机音频,关于AudioManager的详解可参照:Android开发之AudioManager(音频管理器)详解 程序运行效果图: 实例代码: package com.jph.audiomanagerdemo; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import an

android学习---SeekBar和RatingBar

SeekBar 拖动条:拖动条和滚动条类似,当是拖动条可以拖动滑块改变进度 RatingBar 星级评分条:星级评分条与拖动条相似 SeekBar特有的xml属性 android:thumb    指定一个Arawable对象,作为之定义滑块 RatingBar特有的xml属性 android:isIndicator   是否允许用户改变(true为不允许修改) android:numStars   共有多少个星级 android:rating   默认的星级 android:stepSize 

【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout

目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类,所以可以作为view嵌入到其他的layout中.Android的layout有LinearLayout.TableLayout,RelativeLayout.FrameLayout.GridLayout. 线性布局:LinearLayout 这是最常用的,有anroid:orientation来确

【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只含有一个ListView的Activity,并通过setListAdapter()方法来管理adapter.我们可以通过扩展ListActivity来实现. 我们要在整个屏幕上显示ListView,我们直接继承使用ListActivity,不需要在定义自己的layout XML文件,我们在上一学习中

【转】Pro Android学习笔记(十三):用户界面和控制(1):UI开发

目录(?)[-] UI开发 方式一通过XML文件 方式二通过代码 方式三XML代码 UI开发 先理清一些UI概念: view.widget.control:这三个名词其实没有什么区别,都是一个UI元素,例如一个button.Container(容器):包含其他view,例如grid可以认为是容器,它有cell,每个cell可以是一个view.Layout: 对容器们和view们的排版,可以包含其他layout. Android提供常用的UI(例如文字框)以及适合移动设备的控制,基础类为andro

【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续探讨BaseAdapter 我们可以同继承抽象类BaseAdapter来实现自己的Adapter,自己设置子View的UI,不同子View可以由不同的布局,并自己进行数据和子view中数据的对应关系.图是例子的呈现结果,我们有很多图标,对这些图标按一定大小进行缩放,然后布局在GridView中.这个