1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android简单实现音乐播放器

Android简单实现音乐播放器

时间:2020-05-09 14:07:46

相关推荐

Android简单实现音乐播放器

Android老师的小作业。让使用Android的service实现音乐播放器。话不多说,直接上代码

首先你要有一个主MainActivity

package com.example.musicplayer;import org.w3c.dom.Text;import android.app.Activity;import ponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;import android.widget.SeekBar;import android.widget.Toast;import com.example.musicplayer.MusicSevice.MyBinder;public class MainActivity extends Activity implements OnClickListener {private EditText path;private Intent intent;private myConn conn;MyBinder binder;private SeekBar mSeekBar;private Thread mThread;private Handler handler=new Handler(){public void handleMessage(android.os.Message msg){switch(msg.what){case 100:int currentPosition=(Integer) msg.obj;mSeekBar.setProgress(currentPosition);break;default:break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);path=(EditText) findViewById(R.id.et_inputpath);findViewById(R.id.bt_play).setOnClickListener(this);findViewById(R.id.bt_pause).setOnClickListener(this);findViewById(R.id.bt_replay).setOnClickListener(this);findViewById(R.id.bt_stop).setOnClickListener(this);mSeekBar=(SeekBar) findViewById(R.id.seekBar1);conn=new myConn();intent=new Intent(this,MusicSevice.class);bindService(intent, conn, BIND_AUTO_CREATE);}//初始化进度条长度,获取音乐文件长度private void initSeekBar(){int musicWidth=binder.getMusicWidth();mSeekBar.setMax(musicWidth);}//更新音乐播放进度private void updateProgress(){mThread=new Thread(){public void run(){while(!interrupted()){//调用服务中的获取当前播放进度int currentPosition =binder.getCurrentPosition();Message message=Message.obtain();message.obj=currentPosition;message.what=100;handler.sendMessage(message);}}};mThread.start();}private class myConn implements ServiceConnection{@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {binder=(MyBinder) service;}@Overridepublic void onServiceDisconnected(ComponentName arg0) {// TODO Auto-generated method stub}}@Overridepublic void onClick(View v) {String pathway=path.getText().toString().trim();String path="data/data/com.example.musicplayer/1.mp3";switch (v.getId()) {case R.id.bt_play:if(!TextUtils.isEmpty(path)){binder.palys(path);initSeekBar();updateProgress();}else{Toast.makeText(this, "找不到音乐文件", 0).show();}break;case R.id.bt_pause:binder.pauses();break;case R.id.bt_replay:binder.repalys(pathway);break;case R.id.bt_stop:mThread.interrupt();if(mThread.isInterrupted()){binder.stops();}default:break;}}protected void onDestory(){if(mThread!=null){if(!mThread.isInterrupted()){mThread.interrupt();}}unbindService(conn);super.onDestroy();}}

然后你要有一个service,叫MusicService,

package com.example.musicplayer;import android.annotation.SuppressLint;import android.app.Service;import android.content.Intent;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnPreparedListener;import android.os.Binder;import android.os.IBinder;import android.util.Log;import android.widget.Toast;public class MusicSevice extends Service{private static final String TAG="MusicService";public MediaPlayer mediaPlayer;class MyBinder extends Binder{public void palys(String path){play(path);}public void pauses(){pause();}public void repalys(String path){replay(path);}public void stops(){stop();}public int getCurrentPosition(){return getCurrenProgress();}public int getMusicWidth(){return getMusicLength();}}public void onCreate(){super.onCreate();}@SuppressLint("NewApi")private void play(String path) {try{if(mediaPlayer == null){Log.i(TAG,"开始播放音乐");//创建一个MediaPlayer播放器mediaPlayer=new MediaPlayer();//指定参数为音频文件mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//指定播放路径mediaPlayer.setDataSource(path);//准备播放mediaPlayer.prepare();mediaPlayer.setOnPreparedListener(new OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {mediaPlayer.start();}});}else{int position =getCurrenProgress();mediaPlayer.seekTo(position);try{mediaPlayer.prepare();}catch(Exception e){e.printStackTrace();}mediaPlayer.start();}}catch(Exception e){e.printStackTrace();}}//暂停音乐public void pause(){if(mediaPlayer != null && mediaPlayer.isPlaying()){Log.i(TAG, "暂停播放");mediaPlayer.pause();}else if(mediaPlayer !=null && (!mediaPlayer.isPlaying())){mediaPlayer.start();}}//重新播放public void replay(String path){if(mediaPlayer!=null){Log.i(TAG, "重新开始播放");mediaPlayer.seekTo(0);try{mediaPlayer.prepare();}catch(Exception e){e.printStackTrace();}mediaPlayer.start();}}//停止播放public void stop() {if(mediaPlayer != null){Log.i(TAG, "停止播放");mediaPlayer.stop();mediaPlayer.release();mediaPlayer=null;}else{Toast.makeText(getApplicationContext(), "已停止", 0).show();}}//获取文件资源长度public int getMusicLength(){if(mediaPlayer != null){return mediaPlayer.getDuration();}return 0;}//获取当前进度public int getCurrenProgress(){try{if(mediaPlayer !=null){if(mediaPlayer.isPlaying()){Log.i(TAG, "获取当前进度");return mediaPlayer.getCurrentPosition();}else if(!mediaPlayer.isPlaying()){return mediaPlayer.getCurrentPosition();}}}catch(Exception e){e.printStackTrace();}return 0;}public void onDestroy(){if(mediaPlayer !=null){mediaPlayer.stop();mediaPlayer.release();mediaPlayer=null;}super.onDestroy();}@Overridepublic IBinder onBind(Intent arg0) {return new MyBinder();}}

当然,你至少要有一个主样式文件,activity_main.xml,

下面的1.mp3文件是要播放的音乐文件,自己搞定哦

<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" ><EditText android:id="@+id/et_inputpath"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="data/data/com.example.musicplayer/1.mp3"/><SeekBar android:id="@+id/seekBar1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="10dp"android:layout_marginTop="20dp"/><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_gravity="center_horizontal"android:gravity="center"><TextView android:id="@+id/bt_play"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="播放"android:gravity="center"android:drawableTop="@android:drawable/ic_media_play"android:drawablePadding="3dp"/><TextView android:id="@+id/bt_pause"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:drawableTop="@android:drawable/ic_media_pause"android:drawablePadding="3dp"android:gravity="center"android:text="暂停"/><TextView android:id="@+id/bt_replay"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:drawableTop="@android:drawable/ic_media_play"android:drawablePadding="3dp"android:gravity="center"android:text="重播"/><TextView android:id="@+id/bt_stop"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:drawableTop="@android:drawable/ic_media_pause"android:drawablePadding="3dp"android:gravity="center"android:text="停止"/></LinearLayout><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /></LinearLayout>

最后别忘了注册你的activity和service,注册文件如下

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.example.musicplayer"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.musicplayer.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.example.musicplayer.MusicSevice"></service></application></manifest>

当然还有可能因为Android sdk版本的问题出现点小毛病,这里推荐使用Android 19

以上是本文的全部内容,谢谢观看

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。