日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android第三次作业

發布時間:2025/3/20 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android第三次作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、實現的功能

1.實現播放,暫停,停止,播放上一首,下一首功能

2.實現了進度條與歌曲的匹配

3.實現了播放時候的專輯旋轉效果

4.實現了播放列表

二、項目截圖

播放界面

歌曲界面

?

?三、主要代碼

相關service的配置

package com.example.yc.musicbox;import android.app.Activity; import android.app.Service; import android.content.Intent; import android.content.pm.PackageManager; import android.media.MediaPlayer; import android.os.Binder; import android.os.Environment; import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; //import android.support.v4.app.ActivityCompat; import android.widget.Toast;import java.io.File;import static android.os.Environment.DIRECTORY_MUSIC;public class MusicService extends Service {public static MediaPlayer mp = new MediaPlayer();//音樂File myfile=new File(Environment.getExternalStorageDirectory(),"Jony J - Team Work.mp3");public MusicService() {try {mp.setDataSource(myfile.getPath());mp.prepare();mp.setLooping(true);} catch (Exception e) {e.printStackTrace();}}private IBinder mBinder = new MyBinder();@Overridepublic IBinder onBind(Intent intent) {// 必須實現的接口return mBinder;}public class MyBinder extends Binder{@Overrideprotected boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {switch (code) {case 101://“還未播放”狀態,點擊開始播放 mp.start();break;case 102://“正在播放”狀態,點擊暫停 mp.pause();break;case 103://“正在暫停”狀態,點擊繼續播放 mp.start();break;case 104://點擊停止,進度條歸零 mp.stop();try {mp.prepare();mp.seekTo(0);} catch (Exception e) {e.printStackTrace();}break;}return super.onTransact(code, data, reply, flags);}}}

service與activity的綁定,實現歌曲的讀取

public void service_connection() {mConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {mBinder = service;}@Overridepublic void onServiceDisconnected(ComponentName name) {mConnection = null;}};Intent intent = new Intent(this, MusicService.class);startService(intent);bindService(intent, mConnection, Context.BIND_AUTO_CREATE);}

利用handle進行UI界面的更行,實現相應進度條的變化以及碟片的轉動

public void update() {new Thread(new Runnable() {@Overridepublic void run() {while (true) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}handler.obtainMessage(123).sendToTarget();}}}).start();handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 123://UI更新 progressTime.setText(t.format(MusicService.mp.getCurrentPosition()));seekBar.setProgress(MusicService.mp.getCurrentPosition());break;default:break;}}};}

拖動進度條改變歌曲進度

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {if (fromUser) {MusicService.mp.seekTo(seekBar.getProgress());}}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}});}

四、代碼鏈接

?https://git.coding.net/insist_shen/musicplay.git

五、APK鏈接

https://git.coding.net/insist_shen/music_apk.git

六、演示展示

https://pan.baidu.com/s/1iZ_B5ccXk4EK2RwLO0sISg

轉載于:https://www.cnblogs.com/insist666/p/10100144.html

總結

以上是生活随笔為你收集整理的android第三次作业的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。