1. 程式人生 > >利用Service打造最簡單的音樂播放器

利用Service打造最簡單的音樂播放器

新建一個moudle,命名為MediaPlayer_ServiceDemo

1.準備素材一首歌,將音樂資源放入res/raw 目錄下,如果沒有raw目錄,就新建一個。

2.準備佈局檔案,一共5個功能,開始、停止、暫停、退出應用繼續播放、退出應用停止播放。
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context="com.soft.qianyu.mediaplayerdemo.MainActivity">
<Button android:id="@+id/kaishi" android:layout_width
="match_parent" android:layout_height="wrap_content" android:text="開始" />
<Button android:id="@+id/tingzhi" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="停止" /> <Button android:id
="@+id/zanting" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="暫停" />
<Button android:id="@+id/finish" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="退出程式並繼續播放" /> <Button android:id="@+id/goonfinish" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="退出程式並停止播放" /> </LinearLayout>

3.在MainActivity.java中初始化按鈕並設定監聽等準備工作
MainActivity.java

public class MainActivity extends Activity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

 private void init() {
        findViewById(R.id.kaishi).setOnClickListener(MainActivity.this);
        findViewById(R.id.tingzhi).setOnClickListener(MainActivity.this);
        findViewById(R.id.zanting).setOnClickListener(MainActivity.this);
        findViewById(R.id.finish).setOnClickListener(MainActivity.this);
        findViewById(R.id.goonfinish).setOnClickListener(MainActivity.this);
    }

    @Override
    public void onClick(View v) {

        switch (v.getId())
        {
            case R.id.kaishi:

                break;

            case R.id.tingzhi:

                break;

            case R.id.zanting:

                break;

            case R.id.finish:

                break;

            case R.id.goonfinish:

                break;
        }
    }
}

4.新建一個Service的包,並新建一個MusicService的類繼承Service。
首先重寫onbind()方法,不管它
然後重寫另外三個重要的方法(onCreat(),onStartComand(),onDestory()),沒有提示的話自己敲(詳細程式碼在後面)。

  • 在onCreate()方法中例項化mp
MediaPlayer mp = MediaPlayer.create(Context c , int resId);
  • 在onStartCommend()方法中去根據Intent傳入的操作標記進行相應的媒體操作
 int flag = intent.getIntExtras("",-1);
     switch(flag){
       case START :
        //ToDo Something
         break ;
    }
  • 在onDestroy()方法中去釋放媒體資源
 if(mp != null && mp.isPlaying){
         mp.stop();
    }
    mp.release();
    mp = null ;

具體程式碼如下:
MusicService.java

public class MusicService extends Service {
    //宣告MediaPlayer媒體播放器操作物件
    MediaPlayer mp;
    //設定服務操作的程式碼號
    private static final int START =1;
    private static final int STOP =2;
    private static final int PAUSE =3;
    private static final int FINISH =5;
    private static final int GOONFINISH =4;

//例項化媒體播放器
    @Override
    public void onCreate() {
        super.onCreate();
        mp=MediaPlayer.create(MusicService.this, R.raw.zxmzf);
    }

//根據Intent傳入的操作標記進行相應的媒體操作
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //獲得intent中攜帶的標記
        int flg = intent.getIntExtra("flg",-1);

        switch (flg){
            case START:
                if (mp!=null){
                    mp.start();

                }else {
                    if (mp==null) {
      mp = MediaPlayer.create(MusicService.this, R.raw.zxmzf);
      mp.start();
                    }
                }

                break;

            case STOP:
                //判斷player != null && 正在播放的時候,才能停止
                if(mp != null && mp.isPlaying())
                {
                    mp.stop();
                    //釋放資源
                    mp.release();
                    mp = null ;
                }

                break;

            case PAUSE:
                    mp.pause();
                break;

            case FINISH:

                break;

            case GOONFINISH:

                break;
        }

        return super.onStartCommand(intent, flags, startId);
    }

//在onDestroy()方法中去釋放媒體資源
    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mp!=null&&mp.isPlaying()){
            mp.stop();
        }
        if (mp!=null){
            mp.release();
        }
        mp=null;
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

5.在主MainActivity.java中進行相應的操作,主要是點選監聽裡面。
MainActivity.java中的 public void onClick(View v) {}


    @Override
    public void onClick(View v) {
        //建立Intent物件向service傳參
        Intent intent = new Intent();
        //設定class
        intent.setClass(MainActivity.this, MusicService.class);
        switch (v.getId()){
            case R.id.kaishi:
                System.out.println("start");
                //設定攜帶的資料
                intent.putExtra("flg",1);
                //啟動服務
                startService(intent);
                break;

            case R.id.tingzhi:
                intent.putExtra("flg",2);
                //啟動服務
                startService(intent);
                break;

            case R.id.zanting:
                intent.putExtra("flg",3);
                //啟動服務
                startService(intent);
                break;

            case R.id.finish:
                finish();
                break;

            case R.id.goonfinish:
                //停止服務
                stopService(intent);
                //退出當前Activity
                finish();
                break;
        }
    }
}

6.最重要而且經常最容易忘記的事情,在manifest.xml檔案中為MusicService進行註冊

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.soft.qianyu.mediaplayerdemo">
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" 
android:supportsRtl="true" 
android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
       <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

        <service
            android:name=".service.MusicService"
            android:enabled="true"
            android:exported="true">
        </service>
    </application>

有用的是這一塊

        <service
            android:name=".service.MusicService"
            android:enabled="true"
            android:exported="true">
        </service>

啟動測試即可。

相關推薦

利用Service打造簡單音樂播放

新建一個moudle,命名為MediaPlayer_ServiceDemo 1.準備素材一首歌,將音樂資源放入res/raw 目錄下,如果沒有raw目錄,就新建一個。 2.準備佈局檔案,一共5個功能,開始、停止、暫停、退出應用繼續播放、退出應用停止播放。

簡單音樂播放,還有歌詞

不是來說播放器的(前面我有一篇VLC的,可以倒回去看),這篇是來分享 這個顯示歌詞的,還是用了前一篇的PickerView的原理進行放大歌詞 使用知識點 歌詞動態放大

Android開發6:Service的使用(簡單音樂播放的實現)

閱讀目錄前言基礎知識實驗內容實驗過程注意事項實驗截圖原始碼下載注回到頂部前言   啦啦啦~各位好久不見啦~博主最近比較忙,而且最近一次實驗也是剛剛結束~   好了不廢話了,直接進入我們這次的內容~   在這篇博文裡我們將學習Service(服務)的相關知識,學會使用 Service 進行後臺工作, 學會使用

Android實現簡單音樂播放(MediaPlayer)

工程內容 實現一個簡單的音樂播放器,要求功能有: 播放、暫停功能;進度條顯示播放進度功能拖動進度條改變進度功能;後臺播放功能;停止功能;退出功能; 程式碼實現 匯入歌曲到手機SD卡的Music目錄中,這裡我匯入了4首歌曲:仙劍六裡面的《誓言成暉》、《劍客不能說》、《鏡

Android Service使用方法--簡單音樂播放例項

Service翻譯成中文是服務,熟悉Windows 系統的同學一定很熟悉了。Android裡的Service跟Windows裡的Service功能差不多,就是一個不可見的程序在後臺執行。       Android中的服務,它與Activity不同,它是不能與使用者互動

Android Service的使用方法 音樂播放例項

Service翻譯成中文是服務,熟悉Windows 系統的同學一定知道很熟悉了。Android裡的Service跟Windows裡的Service功能差不多,就是一個不可見的程序在後臺執行,避免被使

Android 超簡單音樂播放(十)歌詞的實現

關於歌詞 有下面這些: 歌詞的獲取 歌詞的解析 自定義View 歌詞的獲取 歌詞的獲取分為兩種,一種是從本地一種是通過網路上提供的API獲取。我選擇的是歌詞迷的API http://api.geci.me/en/latest/ 說實話,這

Android如何實現簡單音樂播放的程式碼

想必大家在學Android的音樂播放器時肯定會遇到很多困難,不怕,在這裡我給大家分享一個很簡單的音樂播放器,絕對會對你的學習有所幫助。本例子不難,但是也確能給你帶來柳暗花明又一村的感覺。閒話少說,馬上來看看這個播放器有

Android Studio:服務與多執行緒--簡單音樂播放

一、 實驗題目   服務與多執行緒--簡單音樂播放器 【目的】 1. 學會使用 MediaPlayer; 2. 學會簡單的多執行緒程式設計,使用 Handle 更新 UI; 3. 學會使用 Service 進行後臺工作; 4. 學會使用 Service 與 Activit

Android 超簡單音樂播放(七)拖動歌曲進度條~音量控制~

音量控制 通過接收廣播進行改變 設定全域性變數 private AudioManager mAudioManager; private ContentObserver mVoiceObserver; private MyVolum

Swift 3 :基於 AVAudioPlayer 的簡單音樂播放

vat content 控制器 ets 而已 rand init pla pause 2017.05.22 17:46* 字數 1585 閱讀 5095評論 0喜歡 8贊賞 2 https://www.jianshu.com/p/4d5c257428a1 學習ios以來差不

Android開發---MediaPlayer簡單音樂播放

功能介紹 實現一個簡單的播放器,類似網易雲音樂形式,功能包括: 播放、暫停,停止,退出功能;後臺播放功能;進度條顯示播放進度、拖動進度條改變進度功能;播放時圖片旋轉,顯示當前播放時間功能; 介面樣式  功能實現 1.

Android 超簡單音樂播放(九)搜尋網路歌曲,獲得熱門榜單(GridView)(易源api的使用)(JSON的解析)(重新整理)

首先感謝易源API! 提供了QQ音樂的介面~ 咳咳... 明天要寫文件..看來..哎..我的歌詞要等假期了? 迴歸正題~ 首先上一下我的介面啊實現啊啥的~ 點選榜單會出現對應的歌曲~ 可以搜尋網路歌曲~ 可以重新整理~ 先寫榜單的實現~ 首先是net這個Frag

使用Service組件實現簡單音樂播放功能 --Android基礎

area direct start 獲取 點擊 btn src c函數 extern 1、本例利用Service實現簡單的音樂播放功能,下面是效果圖。(點擊開始播放開啟服務,音樂播放,點擊“停止播放”關閉服務,音樂停止播放。) 2、核心代碼:

android 音樂播放簡單的實現

package com.example.mouse.laymen; import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import androi

Service Broadcast簡單音樂播放功能

listen 參數 extra pau eth log new pause borde 在Activity上有兩個ImageButton,分別控制播放/暫停、停止。 @Override public void onCreate(Bundle savedInstan

酷斃了!python用37行代碼打造屬於自己的音樂播放,附源碼

python 爬蟲 音樂 代碼想不想手動打造一款專屬於你的播放器,同時練練Python編程? 如果想,那就立即行動吧! 所需庫pygametkintermutagen 至於它們的使用,可以瀏覽一下文檔,如果你想做更功能強大的播放器,那必須好好看看哦! 設計思路作為版本0,我們並不想做太復雜的項目。只需實現以下

[Android]結合MediaPlayer和Service音樂播放

通過參照網上其他人的MP3播放器,自己也在這些基礎上小試牛刀,製作的了一個MP3的播放器,先上個介面先: 接下來就上程式碼: 首先是.mp3格式的音樂檔案的過濾類單獨在一個java檔案中: package com.example.mediaplayer; import

簡單實現音樂播放

package com.example.music; import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Environment; im

Android應用開發 MP3音樂播放Service實現

package com.wwj.sb.service;import java.util.List;import android.annotation.SuppressLint;import android.app.Service;import android.content.BroadcastReceiver