first look example:
MusiceService code
package mm.shandong.com.testsimplemedia.service; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.media.MediaPlayer; import android.os.IBinder; public class MusicService extends Service { int currentMusic = 0;//0 means no music playing, 1 means paused, 2 means playing, int status; MediaPlayer mp; String[] musics = new String[]{"first.mp3", "second.mp3", "third.mp3"}; AssetManager am; public MusicService() { } @Override public void onCreate() { am = getAssets(); mp = new MediaPlayer(); mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { currentMusic++; currentMusic = currentMusic % musics.length; playMusic (); status = 2; Intent intentTemp = new Intent("Update_Music_State"); intentTemp.putExtra("status", status); intentTemp.putExtra("currentMusic", currentMusic); sendBroadcast (intentTemp); } }); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("Get_Music_Control"); ///Dynamic registration of broadcast receivers for player changes MusicServiceReceiver musicServiceReceiver = new MusicServiceReceiver(); registerReceiver(musicServiceReceiver, intentFilter); super.onCreate(); } public class MusicServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int control = intent.getIntExtra("control", 0); switch (control) { case 0: //pause if (status == 2) { mp.pause(); status = 1; } break; case 1: ///Play if (status == 0) { playMusic (); status = 2; } else if (status == 1) { mp.start(); status = 2; } break; case 3: break; case 4: //previous song if (status == 0) { if (currentMusic == 0) { currentMusic = 2; } else { currentMusic--; } } else if (status == 1) { if (currentMusic == 0) { currentMusic = 2; } else { currentMusic--; } status = 0; } else if (status == 2) { if (currentMusic == 0) { currentMusic = 2; } else { currentMusic--; } playMusic (); } break; case 5: //next song if (status == 0) { if (currentMusic == 2) { currentMusic = 0; } else { currentMusic++; } } else if (status == 1) { if (currentMusic == 2) { currentMusic = 0; } else { currentMusic++; } status = 0; } else if (status == 2) { if (currentMusic == 2) { currentMusic = 0; } else { currentMusic++; } playMusic (); } break; } Intent intentTemp = new Intent("Update_Music_State"); intentTemp.putExtra("status", status); intentTemp.putExtra("currentMusic", currentMusic); sendBroadcast (intentTemp); } } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } public void playMusic() { try { AssetFileDescriptor ad = am.openFd(musics[currentMusic]); mp.reset(); mp.setDataSource(ad.getFileDescriptor(), ad.getStartOffset(), ad.getLength()); // mp.create(this,musics[currentMusic]); mp.prepare(); mp.start(); } catch (Exception e) { e.printStackTrace (); } } }
TestSimpleMediaActivity code
package mm.shandong.com.testsimplemedia; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.TextView; import mm.shandong.com.testsimplemedia.service.MusicService; public class TestSimpleMediaActivity extends AppCompatActivity { ImageButton imageButton; TextView textViewMp3Name; TextView textViewMp3Author; int status = 0; String[] authors = new String[]{"Zhang San", "Li Si", "Wang Er"}; String[] names = new String[]{"first", "second", "thrid"}; int currentMusic = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_test_simple_media); imageButton = (ImageButton) findViewById(R.id.imageButton); textViewMp3Name = (TextView) findViewById(R.id.textViewMp3Name); textViewMp3Author = (TextView) findViewById(R.id.textViewMp3Author); imageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent("Get_Music_Control"); if (status == 2) { intent.putExtra("control", 0); } else { intent.putExtra("control", 1); } sendBroadcast (intent); } }); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("Update_Music_State"); MusicStatusReceiver musicStatusReceiver = new MusicStatusReceiver(); / / Dynamically register the broadcast receiver of activity changes registerReceiver(musicStatusReceiver, intentFilter); Intent intent = new Intent(this, MusicService.class); startService(intent); Intent intentMusicReceiver = new Intent("Get_Music_Control"); intentMusicReceiver.putExtra("control", 3); sendBroadcast (intentMusicReceiver); } ///Previous song public void preMusic(View view) { Intent intentMusicReceiver = new Intent("Get_Music_Control"); intentMusicReceiver.putExtra("control", 4); sendBroadcast (intentMusicReceiver); } ///next song public void nextMusic(View view) { Intent intentMusicReceiver = new Intent("Get_Music_Control"); intentMusicReceiver.putExtra("control", 5); sendBroadcast (intentMusicReceiver); } ///Define the broadcast receiver that manipulates the music public class MusicStatusReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { status = intent.getIntExtra("status", 0); currentMusic = intent.getIntExtra("currentMusic", 0); switch (status) { case 0: textViewMp3Name.setText(names[currentMusic]); textViewMp3Author.setText(authors[currentMusic]); imageButton.setBackgroundResource(R.drawable.play32); break; case 1: textViewMp3Name.setText(names[currentMusic]); textViewMp3Author.setText(authors[currentMusic]); imageButton.setBackgroundResource(R.drawable.play32); break; case 2: imageButton.setBackgroundResource(R.drawable.pause32); textViewMp3Name.setText(names[currentMusic]); textViewMp3Author.setText(authors[currentMusic]); break; } } } }
Layout file code:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <ImageButton android:id="@+id/imageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textViewMp3Author" android:layout_alignStart="@+id/textViewMp3Author" android:layout_below="@+id/textViewMp3Author" android:background="@drawable/play32" /> <TextView android:id="@+id/textViewMp3Name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="song name" android:textSize="30sp" /> <TextView android:id="@+id/textViewMp3Author" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textViewMp3Name" android:layout_centerHorizontal="true" android:text="author" android:textSize="15sp" /> <Button android:id="@+id/button10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageButton" android:layout_toLeftOf="@+id/textViewMp3Name" android:layout_toStartOf="@+id/textViewMp3Name" android:onClick="preMusic" android:text="previous song" /> <Button android:id="@+id/button11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageButton" android:layout_toEndOf="@+id/textViewMp3Name" android:layout_toRightOf="@+id/textViewMp3Name" android:onClick="nextMusic" android:text="Next" /> </RelativeLayout>
[color=red]If you want the source code, please leave your email. [/color]
Demo download
Finally , the above examples are all sourced from Android worry-free, please go to the application treasure or pea pod to download: http://android.myapp.com/myapp/detail.htm?apkName=com.shandong.mm. androidstudy , the source code example document is exhausted.