易网时代-编程资源站
Welcome
微信登录
首页
/
操作系统
/
Linux
/
Android应用实例之调节播放器音量——AudioManager的应用
实现的功能:
调节播放器音量。
实现的思路:
1)用ProgressBar显示当前音量大小; 2)在Button单击事件中改变音量大小; 3)关键是用什么控制音量,百度了一下可以用AudioManager调节各类型声音的音量(比如:通话声音、铃声声音、音乐声音等),本文调节的是音乐的声音。
关键技术点:MediaPlayer播放MP3音乐、
ProgressBar应用、AudioManager应用
参考及相关文章
:http://www.linuxidc.com/Linux/2011-10/44660.htm
第一步:
新建一个工程,命名为AudioManagerVolume,Activity命名为AdjustVolumeActivity。修改布局文件main.xml,代码后如下:
<?xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<LinearLayout
xmlns:Android
=
"http://schemas.android.com/apk/res/android"
android:orientation
=
"vertical"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:background
=
"#FFFFFF"
>
<Button
android:id
=
"@+id/play"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"播放MP3音乐"
/>
<LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:orientation
=
"horizontal"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
<Button
android:id
=
"@+id/down"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"减小"
/>
<ProgressBar
android:id
=
"@+id/progress"
style
=
"?android:attr/progressBarStyleHorizontal"
android:layout_width
=
"150dip"
android:layout_height
=
"wrap_content"
/>
<Button
android:id
=
"@+id/up"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"增大"
/>
</LinearLayout>
</LinearLayout>
第二步:修改AdjustVolumeActivity类,修改后代码如下:
package
com.zyg.demo.adjustvolume;
import
java.io.IOException;
import
android.app.Activity;
import
android.content.Context;
import
android.content.res.AssetFileDescriptor;
import
android.content.res.AssetManager;
import
android.media.AudioManager;
import
android.media.MediaPlayer;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.ProgressBar;
import
com.zyg.demo.progressbar.R;
public
class
AdjustVolumeActivity
extends
Activity
implements
OnClickListener {
private
Button play =
null
;
private
Button down =
null
;
private
Button up =
null
;
private
ProgressBar pb =
null
;
private
int
maxVolume =
50
;
// 最大音量值
private
int
curVolume =
20
;
// 当前音量值
private
int
stepVolume =
0
;
// 每次调整的音量幅度
private
MediaPlayer mediaPlayer =
null
;
// 播放器
private
AudioManager audioMgr =
null
;
// Audio管理器,用了控制音量
private
AssetManager assetMgr =
null
;
// 资源管理器
private
final
String musicName =
"hehe.mp3"
;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 初始化播放器、音量数据等相关工作
initPlayWork();
// 初始化视图
initUI();
}
/**
* 初始化UI
*/
private
void
initUI() {
play = (Button) findViewById(R.id.play);
down = (Button) findViewById(R.id.down);
up = (Button) findViewById(R.id.up);
play.setOnClickListener(
this
);
down.setOnClickListener(
this
);
up.setOnClickListener(
this
);
// 设置进度条
pb = (ProgressBar) findViewById(R.id.progress);
pb.setMax(maxVolume);
pb.setProgress(curVolume);
}
/**
* 初始化播放器、音量数据等相关工作
*/
private
void
initPlayWork() {
audioMgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// 获取最大音乐音量
maxVolume = audioMgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
// 初始化音量大概为最大音量的1/2
curVolume = maxVolume /
2
;
// 每次调整的音量大概为最大音量的1/6
stepVolume = maxVolume /
6
;
mediaPlayer =
new
MediaPlayer();
assetMgr =
this
.getAssets();
}
/**
* 准备播放音乐
*
* @param music
*/
private
void
prepareAndPlay() {
try
{
// 打开指定音乐文件
AssetFileDescriptor afd = assetMgr.openFd(musicName);
mediaPlayer.reset();
// 使用MediaPlayer加载指定的声音文件。
mediaPlayer.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength());
// 准备声音
mediaPlayer.prepare();
// 播放
mediaPlayer.start();
}
catch
(IOException e) {
e.printStackTrace();
}
}
/**
* 调整音量
*/
private
void
adjustVolume() {
audioMgr.setStreamVolume(AudioManager.STREAM_MUSIC, curVolume,
AudioManager.FLAG_PLAY_SOUND);
}
@Override
public
void
onClick(View v) {
int
id = v.getId();
switch
(id) {
case
R.id.play:
//按下播放按钮
prepareAndPlay();
break
;
case
R.id.up:
//按下增大音量按钮
curVolume += stepVolume;
if
(curVolume >= maxVolume) {
curVolume = maxVolume;
}
pb.setProgress(curVolume);
break
;
case
R.id.down:
//按下减小音量按钮
curVolume -= stepVolume;
if
(curVolume <=
0
) {
curVolume =
0
;
}
pb.setProgress(curVolume);
break
;
default
:
break
;
}
// 调整音量
adjustVolume();
}
}
备注:
有的文章中提到需要添加权限<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> ,我这里并没有添加,可以正常运行。
第三步:
运行程序,效果如下:
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图