背景音乐最常见的要数QQ空间里的了,好多网站等等一登陆就有音乐响起。现在用Service可以在以后的程序里加上,完成android里的背景音乐。
背景音乐嘛,作为背景所以不会讲究什么布局,只要在布局里设置两个按钮(开始播放和停止播放)就ok了:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放音乐" />
<Button
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止播放" />
</LinearLayout>
核心,书写Service:
public class MusicService extends Service {
private MediaPlayer player;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
player=MediaPlayer.create(this, R.raw.sara);
//player=MediaPlayer.create(this, R.raw.qq);
player.start();
}
public void onDestroy(){
super.onDestroy();
player.stop();
}
}
这里我只实现了播放一首曲子,所以先创建了一首,可以尝试添加,做出来再说,临时先弄简单的吧。R.raw.sara为歌曲的位置和名字。
有了这些别忘了,把曲子拷进项目里啊:要在res里新建raw文件夹,然后放上曲子,如图:
注意曲子的命名,不大于7个小写字母或数字,不能是大写字母哦!
接着用Activity实现吧:
public class MainActivity extends Activity {
private Button start;
private Button stop;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initComponents();
}
private void initComponents() {
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(
"w3.dyp.musicplayer.START_AUDIO_SERVICE");
startService(intent);
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(
"w3.dyp.musicplayer.START_AUDIO_SERVICE");
stopService(intent);
//finish();//关闭页面
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
注意里面的finish()方法如果你想关掉音乐的同时退出则需要它实现,如果只是单纯的关掉音乐则不需要这句(特别用在其他程序里当背景音乐时)。
在AndroidManifest.xml中添加Service(<application>中紧跟<Activity>后):
<service android:name="MusicService">
<intent-filter >
<action android:name="w3.dyp.musicplayer.START_AUDIO_SERVICE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
可以通过打开Application然后add选择Service,如右图,选择Service的名字: