安卓用服务做一个简单音乐播放器

来源:互联网 发布:java 射击游戏 编辑:程序博客网 时间:2024/06/05 05:47

xml文件

<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"    tools:context=".PlayActivity" >    <Button        android:id="@+id/btnPause"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBaseline="@+id/btnPlay"        android:layout_alignBottom="@+id/btnPlay"        android:layout_toRightOf="@+id/btnPlay"        android:onClick="MediaPlay"        android:text="@string/pause" />    <Button        android:id="@+id/btnStop"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBaseline="@+id/btnRePlay"        android:layout_alignBottom="@+id/btnRePlay"        android:layout_marginLeft="18dp"        android:layout_toRightOf="@+id/btnRePlay"        android:onClick="MediaPlay"        android:text="@string/stop" />    <Button        android:id="@+id/btnRePlay"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBaseline="@+id/btnPause"        android:layout_alignBottom="@+id/btnPause"        android:layout_marginLeft="18dp"        android:layout_toRightOf="@+id/btnPause"        android:onClick="MediaPlay"        android:text="@string/reset" />    <Button        android:id="@+id/btnPlay"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"        android:layout_marginLeft="16dp"        android:onClick="MediaPlay"        android:text="@string/play" />    </RelativeLayout>
新建一个类MyMusicService.java

package com.example.musicplayerdemo;import android.app.Service;import android.content.Intent;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnPreparedListener;import android.net.Uri;import android.os.IBinder;import android.util.Log;public class MyMusicService extends Service {private MediaPlayer mediaPlayer;// = new MediaPlayer(); //媒体播放器对象private boolean isPause; // 暂停状态@Overridepublic IBinder onBind(Intent arg0) {return null;}@Overridepublic void onCreate() {super.onCreate();mediaPlayer = MediaPlayer.create(this, R.raw.znq);// 此处引用到我们的mp3文件,raw文件夹的。Log.i("Msg", "create");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {int msg = intent.getIntExtra("MSG", 0);Log.i("Msg", msg + "");if (msg == 0) {play(0);} else if (msg == 1) {pause();} else if (msg == 2) {reset();} else if (msg == 3) {stop();}return super.onStartCommand(intent, flags, startId);}/** * 播放音乐 *  * @param position */private void play(int position) {try {mediaPlayer.start(); // 开始播放if (position > 0) { // 如果音乐不是从头播放mediaPlayer.seekTo(position);}} catch (Exception e) {e.printStackTrace();}}/** * 暂停音乐 */private void pause() {if (mediaPlayer != null && mediaPlayer.isPlaying()) {mediaPlayer.pause();isPause = true;} else {if (isPause) {mediaPlayer.start();isPause = false;}}}/** * 停止音乐 */private void reset() {if (mediaPlayer.isPlaying()) {mediaPlayer.seekTo(0);} else {play(0);}}/** * 停止音乐 */private void stop() {if (mediaPlayer != null) {mediaPlayer.stop();try {mediaPlayer.prepare(); // 在调用stop后如果需要再次通过start进行播放,需要之前调用prepare函数} catch (Exception e) {e.printStackTrace();}}}@Overridepublic void onDestroy() {if (mediaPlayer != null) {mediaPlayer.stop();mediaPlayer.release();}}}

Play.Activity

package com.example.musicplayerdemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;public class PlayActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_play);}public void MediaPlay(View v) {switch (v.getId()) {case R.id.btnPlay:StartService(0);break;case R.id.btnPause:StartService(1);break;case R.id.btnRePlay:StartService(2);break;case R.id.btnStop:StartService(3);break;}}private void StartService(int flag) {Intent intent = new Intent();intent.putExtra("MSG", flag);intent.setClass(PlayActivity.this, MyMusicService.class);startService(intent);}}