1. 程式人生 > >音樂播放器中Service的使用

音樂播放器中Service的使用

1、Android中常用的Service

第一種是startService(),第二種是bindService()。
這兩種的區別?
startService本身的設計上不利於互動,它的引數和使用startActivity時很相似,僅僅兩個引數,第一個引數是intent,第二個引數是啟動哪個Service。一旦啟動了service就像是跟service說去完成這件事,就沒有其他的互動了。對於音樂播放器這種讓service去播放音樂,暫停,下一曲,上一曲這些都需要和service互動,顯然使用startService是不太合適的。
bindService在設計上就很適合用於音樂播放器這種需要互動的情況下。因為它會提供一個介面給Activity,通過這個介面IBinder可以去控制service的行為。

2、使用方法:

service中最重要的部分是通過onBind()這個函式返回一個介面IBinder。

    @Override
    public IBinder onBind(Intent intent) {
        //這個MyBinder類是繼承Binder類所寫的,在該類中可以寫自己的業務邏輯函式
        myIBinder = new MyBinder();
        Bundle bundle = intent.getExtras();
        serviceMusicList=(ArrayList)bundle.getSerializable("musiclist"
); return myIBinder; } class MyBinder extends Binder{ public void play() { // } }

Activity這邊啟動bindService的方法。
bindService()有三個引數,第一個是一個intent,第二個是ServiceConnection,這個物件需要自己去實現一些介面,這裡使用的是在onServiceConnected()中獲得Service的介面IBinder,強轉成MyBinder便可使用其中的方法,間接控制service。第三個引數通常寫BIND_AUTO_CREATE,官方文件的說明是 automatically create the service as long as the binding exists意思是當繫結它的activity還存在service就存在。

bindService(Intent service,ServiceConnection conn,int flags)
        //初始化服務,從服務獲取到一個IBinder介面,從而控制服務端的業務邏輯
        public void initservice()
        {
            Intent service =new Intent(this,MusicService.class);
            Bundle musiclistBundle = new Bundle();
            musiclistBundle.putSerializable("musiclist", musiclist);
            service.putExtras(musiclistBundle);
            ServiceConnection conn = new ServiceConnection() {

                @Override
                public void onServiceDisconnected(ComponentName name) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onServiceConnected(ComponentName name, IBinder service) {
                    // TODO Auto-generated method stub
                    musicManager = (MyBinder) service;
                }
            };
            bindService(service, conn, Service.BIND_AUTO_CREATE);
        }

3、註冊service

這個步驟比較容易忽略,而且比較難排查,編譯器不會報錯,但是執行時會有問題。
註冊方法,在AndroidManifest.xml檔案中application標籤內寫如

<service  android:name = ".MusicService"/>

相關推薦

音樂播放Service的使用

1、Android中常用的Service 第一種是startService(),第二種是bindService()。 這兩種的區別? startService本身的設計上不利於互動,它的引數和使用startActivity時很相似,僅僅兩個引數,第一個引數

求助Android進度條在音樂播放的使用方法

MainAvctivity.java ` package com.example.shinelon.myapplication; import android.app.Activity; import android.content.ComponentName; import and

實現音樂播放後臺Service服務一直存在的解決思路

最近實現一個音樂播放器的小專案,實現後臺播放歌曲的功能,即使退出程式也可以一直播放歌曲,服務不被停止。 實現這個功能的過程中遇到了有兩個問題: 問題1、退出程式之後,service播放歌曲的服務在後臺執行,但是當螢幕鎖屏之後,播放一段時間後,服務被停止,歌曲

Android音樂播放的歌詞同步學習分析

在網上查了一下資料,感謝 http://www.cr173.com/html/20184_1.html 給了我思路,可以說他提供了最基本的歌詞同步的功能,我在其上面添加了自己的修改的程式碼。 主要是自己為了實現歌詞同步,並且通過移動seekbar,改變歌曲的歌詞位置。當然還

android----極其簡易的音樂播放service的使用)

俱樂部的作業已經拖了一週了,實在不好意思再不弄了。。。前天晚上開了個頭,總是因為資源太大執行不了,導致一直沒法繼續編下去。。今天偶然發現居然刪掉了之前工程裡的音樂資源就又能加進去一個音樂了~為了避免再次執行不了,我就加了兩個音樂,來回切換,也算能夠完成基本要求啦~表示資源太

【android】音樂播放service服務設計

       學習Android有一個多月,看完了《第一行程式碼》以及mars老師的第一期視訊通過音樂播放器小專案加深對知識點的理解。從本文開始,將詳細的介紹簡單仿多米音樂播放器的實現,以及網路解析資料獲取百度音樂最新排行音樂以及下載功能。         功能介紹如下

關於音樂播放歌詞同步顯示的實現

做專案,用到顯示歌詞,現在一般聽歌MP3是最普遍的,歌詞檔案就是對應的lrc檔案,有的MP3檔案包含歌詞,但說實話還真沒碰到,我就是在播放MP3檔案時收索對應的lrc檔案,然後把歌詞讀出來,分離處時間標籤和歌詞,根據時間標籤來顯示歌詞,我用到的directshow介面播放的音

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

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

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

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

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

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

android 四大元件service 音樂播放的實現

新建立一個Android工程《音樂播放器》,包名:com.itheima.musicPlayer。 在res目錄下新建一個資料夾raw(名字必須為raw,約定大於配置的原則),然後在raw目錄中拷貝進一個音樂檔案,注意檔名必須遵循Android資原始檔的命名

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

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

22_Android的本地音樂播放和網路音樂播放的編寫,本地視訊播放和網路視訊播放,照相機案例,偷拍案例實現

1 編寫以下案例:當點選了”播放”之後,在手機上的/mnt/sdcard2/natural.mp3就會播放。2 編寫佈局檔案activity_main.xml<LinearLayout xmlns

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

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

Android開發 本地與線上音樂播放(基於Service實現)

專案裡需要做一個類似於QQ音樂,網易雲音樂一樣的實現本地與線上播放的音樂播發器。 本地的好做,查詢安卓自己的媒體庫ContentProvidre返回Cursor,一個個讀出來就好了。 關鍵是線上播放。 一開始在網上搜了搜Demo.找到一個線上播放的Demo.但看了看原始碼,

iOS開發——單例模式(singleton)解決音樂播放等開發問題

開發中很多時候需要一個全域性的東西,保證全域性僅有一份即可,這個時候單例是最佳的選擇。 單例模式:在程式執行過程,一個類只有一個例項,無論如何程式執行過程中只有一份例項。 音樂播放器中就需要這種單例

從一個音樂播放來了解android的Service元件和BroadcastReceiver

從一個音樂播放器來理解android的Service元件和BroadcastReceiver 前言:很久以前寫過一個音樂播放器,採用Service元件實現後臺播放,BroadcastReceiver實現訊息傳遞。播放器原始碼在此:簡陋音樂播放器。 Music

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

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

Asp.Net MVCAplayer.js音樂播放的使用

1、前言: Aplater.js是一款可愛、漂亮的Js音樂播放器,以前就瞭解過也弄過一些,現在就用mp3的格式來在.Net裡面開發。管網 https://aplayer.js.org/ 2、入手: 在專案裡面只要新增一個jQuery.js跟APlayer.min.js 跟APlayer.min

【Blazor】在ASP.NET Core使用Blazor元件 - 建立一個音樂播放

前言 Blazor正式版的釋出已經有一段時間了,.NET社群的各路高手也建立了一個又一個的Blazor元件庫,其中就包括了我和其他小夥伴一起參與的AntDesign元件庫,於上週終於釋出了第一個版本0.1.0,共計完成了59個常用元件,那麼今天就來聊一聊如何在ASP.NET Core MVC專案中使用這些Bl