John Do
- Forum-Beiträge: 36
23.02.2012, 14:54:06 via Website
23.02.2012 14:54:06 via Website
Hallo liebe Mitglieder,
im Folgenden präsentiere ich Lösungsvorschläge für die Implementierung von Hintergrundmusik in einer App. Es gibt drei Möglichkeiten mittels einer statischen Klasse, mittels Singelton und mittels Service.
Ein lauffähiges Programm unter Verwendung eines Services habe ich bisher noch nicht hinbekommen. Werde es ab nachliefern, wenn ich es geschafft habe. Meine Frage ist, wo Vor- und Nachteile der unterschiedlichen Lösungen liegen und auf welche Fehlerquellen man achten sollte.
static solution
im Folgenden präsentiere ich Lösungsvorschläge für die Implementierung von Hintergrundmusik in einer App. Es gibt drei Möglichkeiten mittels einer statischen Klasse, mittels Singelton und mittels Service.
Ein lauffähiges Programm unter Verwendung eines Services habe ich bisher noch nicht hinbekommen. Werde es ab nachliefern, wenn ich es geschafft habe. Meine Frage ist, wo Vor- und Nachteile der unterschiedlichen Lösungen liegen und auf welche Fehlerquellen man achten sollte.
static solution
1public class MyStaticMusicPlayerClass {
2 static MediaPlayer player = new MediaPlayer();
3 private static int currentsong;
4 private static int[] song = { R.raw.blendergameengine, R.raw.uffiewordy };
5 static Context mContext;
6
7 public static void playSong(int res) {
8 player = MediaPlayer.create(mContext, song[res]);
9 player.start();
10
11 player.setOnCompletionListener(new OnCompletionListener() {
12 public void onCompletion(MediaPlayer arg0) {
13 player.release();
14 nextSong();
15 }});}
16
17 private static void nextSong() {
18 if (++currentsong >= song.length) {
19 currentsong = 0;
20 playSong(currentsong);
21 } else {
22 playSong(currentsong);
23 }}
24
25 public static void stopSong() {
26 if (player != null) {
27 player.stop();}}
28
29 public static void startSong() {
30 if (player != null) {
31 player.start();}
32 }
33 public static void setContext(Context context) {
34 mContext = context;
35 }
36 public static void destroyPlayer() {
37 // TODO Auto-generated method stub
38 if (player != null) {
39 player.stop();
40 player.release();
41 player = null;
42 }
43 }
44 public static void pauseSong() {
45 // TODO Auto-generated method stub
46 if (player != null) {
47 player.pause();}
48 }
49}
2 static MediaPlayer player = new MediaPlayer();
3 private static int currentsong;
4 private static int[] song = { R.raw.blendergameengine, R.raw.uffiewordy };
5 static Context mContext;
6
7 public static void playSong(int res) {
8 player = MediaPlayer.create(mContext, song[res]);
9 player.start();
10
11 player.setOnCompletionListener(new OnCompletionListener() {
12 public void onCompletion(MediaPlayer arg0) {
13 player.release();
14 nextSong();
15 }});}
16
17 private static void nextSong() {
18 if (++currentsong >= song.length) {
19 currentsong = 0;
20 playSong(currentsong);
21 } else {
22 playSong(currentsong);
23 }}
24
25 public static void stopSong() {
26 if (player != null) {
27 player.stop();}}
28
29 public static void startSong() {
30 if (player != null) {
31 player.start();}
32 }
33 public static void setContext(Context context) {
34 mContext = context;
35 }
36 public static void destroyPlayer() {
37 // TODO Auto-generated method stub
38 if (player != null) {
39 player.stop();
40 player.release();
41 player = null;
42 }
43 }
44 public static void pauseSong() {
45 // TODO Auto-generated method stub
46 if (player != null) {
47 player.pause();}
48 }
49}
1public class StaticMusicplayerActivity extends Activity {
2 Button buttonStart, buttonStop,buttonActivty;
3 /** Called when the activity is first created. */
4 @Override
5 public void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.main);
8 MyStaticMusicPlayerClass.setContext(this);
9 buttonActivty = (Button) findViewById(R.id.buttonActivity);
10 buttonStart = (Button) findViewById(R.id.buttonStart);
11 buttonStop = (Button) findViewById(R.id.buttonStop);
12 buttonActivty.setOnClickListener(StartActivtyOnClickListener);
13 buttonStart.setOnClickListener(StartOnClickListener);
14 buttonStop.setOnClickListener(EndOnClickListener);
15 }
16 OnClickListener StartActivtyOnClickListener = new OnClickListener() {
17 public void onClick(View arg0) {
18 Intent gamefield = new Intent(StaticMusicplayerActivity.this, zweiteActivity.class);
19 startActivity(gamefield);
20 }
21 };
22 OnClickListener StartOnClickListener = new OnClickListener() {
23 public void onClick(View arg0) {
24 MyStaticMusicPlayerClass.playSong(0);
25 }
26 };
27 OnClickListener EndOnClickListener = new OnClickListener() {
28 public void onClick(View arg0) {
29
30 }
31 };
32protected void onPause() {
33 super.onPause();
34 MyStaticMusicPlayerClass.pauseSong();
35 };
36 protected void onDestroy(){
37 super.onDestroy();
38 MyStaticMusicPlayerClass.destroyPlayer();
39 };
40}
2 Button buttonStart, buttonStop,buttonActivty;
3 /** Called when the activity is first created. */
4 @Override
5 public void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.main);
8 MyStaticMusicPlayerClass.setContext(this);
9 buttonActivty = (Button) findViewById(R.id.buttonActivity);
10 buttonStart = (Button) findViewById(R.id.buttonStart);
11 buttonStop = (Button) findViewById(R.id.buttonStop);
12 buttonActivty.setOnClickListener(StartActivtyOnClickListener);
13 buttonStart.setOnClickListener(StartOnClickListener);
14 buttonStop.setOnClickListener(EndOnClickListener);
15 }
16 OnClickListener StartActivtyOnClickListener = new OnClickListener() {
17 public void onClick(View arg0) {
18 Intent gamefield = new Intent(StaticMusicplayerActivity.this, zweiteActivity.class);
19 startActivity(gamefield);
20 }
21 };
22 OnClickListener StartOnClickListener = new OnClickListener() {
23 public void onClick(View arg0) {
24 MyStaticMusicPlayerClass.playSong(0);
25 }
26 };
27 OnClickListener EndOnClickListener = new OnClickListener() {
28 public void onClick(View arg0) {
29
30 }
31 };
32protected void onPause() {
33 super.onPause();
34 MyStaticMusicPlayerClass.pauseSong();
35 };
36 protected void onDestroy(){
37 super.onDestroy();
38 MyStaticMusicPlayerClass.destroyPlayer();
39 };
40}
1public class zweiteActivity extends Activity{
2
3 Button buttonStop;
4
5 protected void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.zweitemain);
8 buttonStop = (Button) findViewById(R.id.buttonStop);
9 buttonStop.setOnClickListener(AtoptheMusicClickListener);
10 }
11
12 OnClickListener AtoptheMusicClickListener = new OnClickListener() {
13 public void onClick(View arg0) {
14 MyStaticMusicPlayerClass.stopSong();
15 }
16 };
17
18 protected void onResume() {
19 super.onResume();
20 MyStaticMusicPlayerClass.startSong();
21 }
22
23 protected void onPause() {
24 super.onPause();
25 }
26
27 protected void onDestroy(){
28 super.onDestroy();
29 MyStaticMusicPlayerClass.destroyPlayer();
30 };
31}
2
3 Button buttonStop;
4
5 protected void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.zweitemain);
8 buttonStop = (Button) findViewById(R.id.buttonStop);
9 buttonStop.setOnClickListener(AtoptheMusicClickListener);
10 }
11
12 OnClickListener AtoptheMusicClickListener = new OnClickListener() {
13 public void onClick(View arg0) {
14 MyStaticMusicPlayerClass.stopSong();
15 }
16 };
17
18 protected void onResume() {
19 super.onResume();
20 MyStaticMusicPlayerClass.startSong();
21 }
22
23 protected void onPause() {
24 super.onPause();
25 }
26
27 protected void onDestroy(){
28 super.onDestroy();
29 MyStaticMusicPlayerClass.destroyPlayer();
30 };
31}
— geändert am 23.02.2012, 14:55:09
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.