service这个东西。。。其实当时讲的时候还不是特别理解,比较理解的主要就是那几个函数的调用以及调用的顺序。
首先布局,我还是喜欢用绝对布局,然后也很简单的弄了个背景,然后添加了播放、暂停、停止、退出四个按钮,布局非常之简单。。。。
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/back"
android:gravity="center"
>
<Button
android:id="@+id/play"
android:layout_x="190dip"
android:layout_y="40dip"
android:layout_width="130dip"
android:layout_height="80dip"
android:background="@drawable/c"
/>
<Button
android:id="@+id/pause"
android:layout_x="190dip"
android:layout_y="240dip"
android:layout_width="130dip"
android:layout_height="80dip"
android:background="@drawable/c"
/>
<Button
android:id="@+id/stop"
android:layout_x="190dip"
android:layout_y="320dip"
android:layout_width="130dip"
android:layout_height="80dip"
android:background="@drawable/c"
/>
<Button
android:id="@+id/exit"
android:layout_x="190dip"
android:layout_y="400dip"
android:layout_width="130dip"
android:layout_height="80dip"
android:background="@drawable/c"
/>
</AbsoluteLayout>
然后是后台播放的Service:
package com.zyn.localityservice;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import android.app.Service;
import android.content.Intent;
import android.content.res.Configuration;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import com.zyn.R;
public class MusicPlayerService extends Service {
private MediaPlayer mediaPlayer = null;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
mediaPlayer = MediaPlayer.create(this, R.raw.tmp);
mediaPlayer.setLooping(false);
}
}
@Override
protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
super.dump(fd, writer, args);
}
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
super.finalize();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
}
@Override
public void onLowMemory() {
super.onLowMemory();
}
@Override
public void onRebind(Intent intent) {
super.onRebind(intent);
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
@Override
public void onDestroy() {
if(mediaPlayer!=null){
mediaPlayer.stop();
mediaPlayer.release();
}
}
@Override
public void onStart(Intent intent, int startId) {
if (intent != null) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
int op = bundle.getInt("op");
switch (op) {
case 1:
play();
break;
case 2:
puase();
break;
case 3:
stop();
break;
case 4:
stop();
stopService(intent);
break;
}
}
}
}
private void play() {
if (mediaPlayer!=null&&!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
}
private void puase() {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
}
private void stop() {
if (mediaPlayer != null) {
mediaPlayer.stop();
try {
mediaPlayer.prepare();
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
service添加之后要在AndroidManifest.xml里面予以声明:
<service android:name=".localityservice.MusicPlayerService">
<intent-filter>
<action android:name="com.yang.music" />
</intent-filter>
</service>
其他就没有什么了。。。。还是挺丑- -