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(); //暫停播放 |