android在service中播放音樂
Android大作業確實挺難的,斷斷續續半個月到現在還有幾個功能沒有完成(中間又去忙了點其他事),到現在為止最強烈的感受是學習安卓是非常需要經驗的活計,而且資料也不像之前學習的演算法,c++之類的非常詳實(像刷oj一搜poj****全是題解,而且都是正確的)我按照網上的部落格一模一樣照打的都能報錯....(巨坑啊)
我個人參考的是《第一行程式碼》這本書,它對於初學者相當友好,不過在背景音樂的播放中出現了些困難.
現在要求是在任意演示頁面都應該播放背景音樂,很明顯如果直接寫在activity中,那麼一旦service停止了(跳轉到其他頁面)就會關閉背景音樂,而且也很難處理在需要的時候關閉音樂(放視訊,退出app)故應將音樂的播放寫在service中.
為了使用者的體驗(毛的使用者啊,估計老師也就隨便瞄兩眼....),我們在開始設定一個提問框,詢問是否開啟音樂
這裡有一個向後面傳值的過程,因為我要知道前面一個activity使用者選擇的值,因為我不知道如何傳遞布林型別的值,所以直接傳了兩種字串過去,是"1"就開啟音樂,是"0"就暫時不開啟音樂import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.widget.ImageView; public class question extends BaseActivity{//question.class @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_question);//佈局檔案叫layout_question AlertDialog.Builder dialog = new AlertDialog.Builder(question.this);//彈出對話方塊,判斷是否需要開啟音樂 dialog.setTitle("注意"); dialog.setMessage("是否播放音樂"); dialog.setCancelable(false); dialog.setPositiveButton("否",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { Intent intent = new Intent(question.this,MainActivity.class); intent.putExtra("extra_data","0");//向MainActivity傳遞值 startActivity(intent); } }); dialog.setNegativeButton("是",new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface arg0, int arg1) { Intent intent = new Intent(question.this,MainActivity.class); intent.putExtra("extra_data","1");//向MainActivity傳遞值 startActivity(intent); } }); dialog.show(); } }
MainActivity.class
public class MainActivity extends BaseActivity { private Button button1;//成長曆程 private Button button2;//興趣愛好 private Button button3;//一鍵關注 private Button button4;//退出 private boolean MusicSwitch;//判斷音樂是否開啟(true為播放,false為不播放) private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = getIntent(); String s=intent.getStringExtra("extra_data");//獲得上一次的是否開啟音樂的值 if (s.equals("1")) MusicSwitch=true; else MusicSwitch=false; imageView = (ImageView) findViewById(R.id.image_view);//例項化對應的插圖 if (MusicSwitch) { Intent intentSV=new Intent(MainActivity.this,MyService.class); startService(intentSV); imageView.setImageResource(R.drawable.music_start); } else imageView.setImageResource(R.drawable.music_off); imageView.setOnClickListener(new OnClickListener() {//當圖示被按時可以開關音樂 @Override public void onClick(View arg0) { if (MusicSwitch) { imageView.setImageResource(R.drawable.music_off); MusicSwitch = false; Intent intentSV=new Intent(MainActivity.this,MyService.class); stopService(intentSV); } else { imageView.setImageResource(R.drawable.music_start); MusicSwitch = true; try{ Intent intentSV=new Intent(MainActivity.this,MyService.class); startService(intentSV); }catch(Exception e){ e.printStackTrace(); } } } }); //後面省略無關程式碼 } } }
這裡我用了兩個個插圖,如果MusicSwitch為真就播放音樂,同時表現音樂開啟的圖示,否則就不播放音樂,展示音樂關閉的圖示,而每一次點選關閉和開啟都會改變MusicSwitch的值.
另外說下插圖一般在res下的draw****的第一個資料夾下,直接將圖片移進去就好.
而本文的重點就是
Intent intentSV=new Intent(MainActivity.this,MyService.class);
startService(intentSV);
Service是什麼,個人感覺說白了就是一些你希望只要在某個頁面開啟後,在後臺默默持續工作,知道某個頁面可以隨時關閉的無名英雄.而音樂就是隻聞其聲不見其人所以兩者絕配啊。
裡面有onCreate,onStartCommand,onDestroy,onBind等方法
一旦知道使用者要開啟音樂,我們可以呼叫startService(),它會呼叫在onStartCommand時建立一個MediaPlayer物件來放音樂,而一旦知道使用者要關閉音樂,我們可以呼叫
stopService,它會呼叫onDestory銷燬MediaPlayer物件,由於我對於Service的操作是隨時隨地的,而且只要不操作這個Service將一直跑下去,那麼就符合我們的要求.
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class MyService extends Service{
private MediaPlayer mp;
@Override
public void onCreate(){
super.onCreate();//繼承onCreate方法
try{
mp= new MediaPlayer();
mp=MediaPlayer.create(MyService.this,R.raw.music);
}catch(IllegalStateException e){
e.printStackTrace();
}
}
@Override
public IBinder onBind(Intent intent){
return null;
}
@Override
public int onStartCommand(Intent intent,int flags,int startId){
mp.start();
mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {
public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
// 釋放資源
try {
mp.release();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
});
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy(){//服務停止時停止播放音樂並釋放資源
mp.stop();
mp.release();
mp=null;
super.onDestroy();
}
}
音樂我是在res下新建一個raw資料夾,將mp3檔案直接放進去即可,用法是
mp=MediaPlayer.create(MyService.this,R.raw.music);
第一個是活動名(這裡是服務名)。
當然不要忘記註冊這個Service.
相關推薦
Android 如何在通話中播放音樂/通話背景音
1.修改AudioService.java,實現通話中播放音樂 private boolean canReassignAudioFocus() { // focus requests are rejected during a phone call or when the phone is r
android在service中播放音樂
Android大作業確實挺難的,斷斷續續半個月到現在還有幾個功能沒有完成(中間又去忙了點其他事),到現在為止最強烈的感受是學習安卓是非常需要經驗的活計,而且資料也不像之前學習的演算法,c++之類的非常詳實(像刷oj一搜poj****全是題解,而且都是正確的)我按照網上的部落
在Service中播放音樂
activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi
PHP中播放音樂程式碼
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>音樂
關於h5中背景音樂的自動播放
code 現象 bin 引導 介紹 src source var tel 音樂的自動播放屬性,這裏也介紹一下: <audio controls="controls" autoplay="autoplay"> <source src="song.ogg"
android webview中的音樂的暫停與播放
前段時間有這樣一個需求,webview顯示一個帶音樂的網頁,在播放音樂的時候進入第三方軟體暫停播放,返回時繼續播放。後來參考了兩篇文章解決了這個問題。 AudioManager audioManager = (AudioManager) mContext.getSyst
Qt中QMediaPlayer播放音樂及問題
環境:VS2015+Qt5.9.0程式碼如下: //1.獲取絕對路徑AP //獲取當前exe所在路徑 QString runPath = QCoreApplication::applicationDirPath(); qDebug() << runPath; QS
iOS後臺持續播放音樂 中斷後持續播放
-(void)applicationWillResignActive:(UIApplication )application { //開啟後臺處理多媒體事件 [[UIApplication sharedApplication] beginReceivingRemoteControlEvents
Android—在Activity中繫結service播放音樂
在Activity中onCreate的方法中建立一個intent物件,表示要繫結到哪個服務中去,然後呼叫 bindService方法繫結MusicService服務(因為我這是在fragment中寫的播放器,所以要用getActivity()方法來獲得Activity,不然的話直接用bindService就行
IOS後臺播放音樂
har highlight 播放器 title ges round eas tro ios IOS後臺播放音樂 博客分類: IOS http://www.apple.com.cn/developer/iphone/library/documentation/
手機影音第十五天,利用service實現後臺播放音樂,在通知欄顯示當前音樂信息等
手機影音 第十五天 利用service實現後臺播放音樂 在通知欄顯示當前音樂信息。 代碼已經托管到碼雲上,有興趣的小夥伴可以下載看看 https://git.oschina.net/joy_yuan/MobilePlayer 先來一張目前的音樂播放器的效果圖,當播
Android使用Service播放音樂
connect stat 生成 bin intent style protected state 最大值 像音樂這種耗時的和適合後臺操作的應當放在Service中進行操作,而不是放在Activity,下面就介紹使用Service的音樂播放器 先創建一個MusicServic
Ubuntu終端命令行播放音樂(mp3)
文件瀏覽器 文件的 命令行 ubuntu exc pla tps 格式 ocp 有很多在終端命令行播放mp3的工具,有的甚至可以生成播放列表。也只有命令行重度使用者有這個需求,下面我們來看一看這些工具。 Sox Sox(Sound eXchange)是操作聲音文件的瑞士軍刀
webview中播放視屏,返回或者退出後,仍然會有聲音。
網頁 one nsh 鏈接 codes 聲音 div 獲得 logs 解決辦法: protected void onPause() { super.onPause(); if (Build.VERSION.SDK_INT >= Build.VERS
在Winform中播放視頻等【DotNet,C#】
視頻格式 數量 ide () ngs 很多 選擇 有一個 void 在項目中遇到過這樣的問題,就是如何在Winform中播放視頻。當時考察了幾種方式,第一種是直接使用Windows Media Player組件,這種最簡單;第二種是利用DirectX直接在窗體或者控件上繪圖
unity 中播放視頻
shader int inpu 包含 assets vid 網絡 拉伸 上下文 Unity視頻播放有很多種實現方式,可根據要求來選擇適當的實現,這裏總結一下: 1. MovieTexture Unity標準接口,支持的播放視頻格式有.mov、.mpg、.mpeg
python寫的定時播放音樂
true ini etime dir post datetime python 時長 分鐘 import datetime import os import time import pygame from pygame import mixer from pygame.l
第二章 LCD液晶顯示屏&聲控裝置&播放音樂&遙控器
sound 下機 當前 default 代碼 pre 顯示器 結構 star 這節我將帶大家了解亮寧機器人編程的基礎部分。 LCD液晶顯示屏 LCD液晶顯示屏是在實現某種功能和調試中不可缺少的部分,接下來我帶大家學習,如何使用LCD液晶顯示屏。 首先我們把LCD液晶顯示屏插
在Linux終端命令行下播放音樂的命令
足夠 mp3 管理 關於 令行 ctrl+alt fmt 終端命令 alt+ 現在的 Linux 桌面已經發展的很好了,在桌面下播放音樂操作起來也很簡單。那麽我們還記得在桌面不是那麽好的時候我們是怎麽播放音樂的麽?哎,我是想不起來了,實在是太難了。不過現在我們可以先安裝一個
如何下載微信文章中的音樂、歌曲伴奏
點擊下載 鏈接 dex 預報 src 電腦 輸入 com == 只需一步即可 用電腦打開網址 https://www.huyahaha.com/index/mp3 然後輸入微信文章鏈接, 點擊下載就可以了 如何下載微信文章中的音樂、歌曲伴奏