1,单例类的实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
package
tools;
import
android.annotation.SuppressLint;
import
android.content.Context;
import
android.media.AudioManager;
import
android.media.MediaPlayer;
/**
* 单例类之背景音乐播放
*
* @author sl
*
*/
public
class
BackgroundMusicPlay {
private
static
BackgroundMusicPlay backgroundmusic;
// 单例类对象
private
MediaPlayer mp;
// MediaPlayer引用
private
AudioManager am;
// AudioManager引用
private
boolean
pauseFlag =
false
;
// 暂停标记,true暂停态,false非暂停态
/**
* 私有的构造器
*
* @param context
*/
private
BackgroundMusicPlay(Context context) {
mp =
new
MediaPlayer();
// 得到mediaPlayer对象
am = (AudioManager) context.getSystemService(context.AUDIO_SERVICE);
try
{
mp.setDataSource(
"/sdcard/newgalactic.mp3"
);
// 加载声音文件,进入Initialized状态。
}
catch
(Exception e) {
e.printStackTrace();
}
}
/**
* 得到单例类对象
*
* @param context
* @return
*/
public
static
BackgroundMusicPlay getBackgroundMusicPlay(Context context) {
if
(backgroundmusic ==
null
) {
backgroundmusic =
new
BackgroundMusicPlay(context);
}
return
backgroundmusic;
}
@SuppressLint
(
"SdCardPath"
)
public
void
musicPlay() {
// 播放音乐
try
{
mp.prepare();
// 进入prepared状态。
}
catch
(Exception e) {
e.printStackTrace();
}
mp.start();
// 播放音乐
}
public
void
musicPause() {
// 暂停播放
if
(mp.isPlaying()) {
// 如果是在播放态
mp.pause();
// 调用暂停方法
pauseFlag =
true
;
// 设置暂停标记
}
else
if
(pauseFlag) {
mp.start();
// 播放音乐
pauseFlag =
false
;
// 设置暂停标记
}
}
@SuppressLint
(
"SdCardPath"
)
public
void
musicStop() {
// 停止播放
mp.stop();
// 停止播放
mp.reset();
// 重置状态到uninitialized态
try
{
mp.setDataSource(
"/sdcard/newgalactic.mp3"
);
// 加载声音,进入Initialized状态。
}
catch
(Exception e) {
e.printStackTrace();
}
try
{
mp.prepare();
// 进入prepared状态。
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
|
注意:在加载声音资源时(mp.setDataSource("/sdcard/newgalactic.mp3"); // 加载声音,进入Initialized状态。
),应先在/sdcard下放入资源文件。
方法:在eclipse中,选择模拟器,window --> show view --> other --> file explorer --> ok ,找到 mnt 目录下的sdcard ,选中,点击file explorer 右上角的 push a file onto the device 导入声音资源到sdcard中。
2,在activity中调用单例类:
1
2
3
4
|
BackgroundMusicPlay bgmp=BackgroundMusicPlay.getBackgroundMusicPlay(
this
);
//创建单例类对象
bgmp.musicPlay();
//播放音乐
bgmp.musicStop();
//停止播放
bgmp.musicPause();
//暂停播放
|