目标效果:
第五个帮助页面改为设置页面,添加switch控件,播放背景音乐。
1.创建SetActivity.java页面和activity_set.xml页面,activity_set.xml页面放置一个switch控件。
activity_set.xml页面:
<RelativeLayout 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"
android:background="@drawable/bg_animal"
tools:context=".SetActivity" >
<Switch
android:id="@+id/switchMusic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="60dp"
android:layout_marginTop="60dp"
android:text="背景音乐"
android:textOff="关"
android:textOn="开" />
</RelativeLayout>
2.创建AndioService.java页面,作为服务页面。
AndioService.java页面:
package com.example.musicservice;
import cn.edu.bztc.happyidion.activity.R;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.IBinder;
public class AndioService extends Service{
//重写onCreate(),onStartCommand(),onDestroy()方法。
private MediaPlayer mediaPlayer;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
//服务第一次创建时调用
@Override
public void onCreate() {
super.onCreate();
mediaPlayer=MediaPlayer.create(this,R.raw.mountainwater);
mediaPlayer.setLooping(true);//是否循环播放
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0) {
stopSelf();
}
});
}
//每次服务启动时调用
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (!mediaPlayer.isPlaying()) {
new Thread(){ //子线程
@Override
public void run() {
super.run();
mediaPlayer.start();
}
}.start();
}
return super.onStartCommand(intent, flags, startId);
}
//服务销毁时调用,回收不再是用的资源
@Override
public void onDestroy() {
super.onDestroy();
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
mediaPlayer.release();
}
}
3.SetActivity.java页面判断switch控件状态进行调用service。
SetActivity.java页面:
package cn.edu.bztc.happyidion.activity;
import com.example.musicservice.AndioService;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Switch;
public class SetActivity extends Activity {
private Switch switchMusic;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_set);
switchMusic=(Switch) findViewById(R.id.switchMusic);
switchMusic.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
if(checked){
//开始服务
startService(new Intent(SetActivity.this,AndioService.class));
}else{
//停止服务
stopService(new Intent(SetActivity.this,AndioService.class));
}
}
});
}
}
4.服务必须在AndroidManifest.xml页面进行注册。
</application>标签内:
<service android:name="com.example.musicservice.AndioService"></service>
5.源码分享:
点击打开链接
6.运行就会有目标效果了。