⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yprservice.java

📁 android开发入门与实践源代码
💻 JAVA
字号:
package us.imnet.iceskysl.service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import us.imnet.iceskysl.R;
import us.imnet.iceskysl.YPRSInterface;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.DeadObjectException;
import android.os.IBinder;
import android.util.Log;

public class YPRService extends Service {

	private MediaPlayer mpr = new MediaPlayer();
	private List<String> songs = new ArrayList<String>();
	private int currentPosition;

	private NotificationManager nm;
	private static final int NOTIFY_ID = R.layout.playlist;

	@Override
	public void onCreate() {
		super.onCreate();
		nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
	}

	@Override
	public void onDestroy() {
		mpr.stop();
		mpr.release();
		nm.cancel(NOTIFY_ID);
	}

	public IBinder getBinder() {
		return mBinder;
	}

	private void playSong(String file) {
		Log.i("playSong:", file);
		try {

			Notification notification = new Notification();
			nm.notify(NOTIFY_ID, notification);
			Log.i("playSong:", "------------------------");
			mpr.reset();
			mpr.setDataSource(file);
			mpr.prepare();
			mpr.start();
			mpr.setOnCompletionListener(new OnCompletionListener() {
				public void onCompletion(MediaPlayer arg0) {
					nextSong();
				}
			});
		} catch (IOException e) {
			Log.e(getString(R.string.app_name), e.getMessage());
		}
	}

	private void nextSong() {
		// Check if last song or not
		if (++currentPosition >= songs.size()) {
			currentPosition = 0;
			nm.cancel(NOTIFY_ID);
		} else {
			playSong(songs.get(currentPosition));
		}
	}

	private void prevSong() {
		if (mpr.getCurrentPosition() < 3000 && currentPosition >= 1) {
			playSong(songs.get(--currentPosition));
		} else {
			playSong(songs.get(currentPosition));
		}
	}

	private final YPRSInterface.Stub mBinder = new YPRSInterface.Stub() {
		public void playFile(int position) throws DeadObjectException {
			Log.i("playFile:", Integer.toString(position));
			try {
				currentPosition = position;
				playSong(songs.get(position));
			} catch (IndexOutOfBoundsException e) {
				Log.e(getString(R.string.app_name), e.getMessage());
			}
		}

		public void addSongPlaylist(String song) throws DeadObjectException {
			songs.add(song);
		}

		public void clearPlaylist() throws DeadObjectException {
			songs.clear();
		}

		public void skipBack() throws DeadObjectException {
			prevSong();

		}

		public void skipForward() throws DeadObjectException {
			nextSong();
		}

		public void pause() throws DeadObjectException {
			Notification notification = new Notification();
			nm.notify(NOTIFY_ID, notification);
			mpr.pause();
		}

		public void stop() throws DeadObjectException {
			nm.cancel(NOTIFY_ID);
			mpr.stop();
		}
	};

	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return mBinder;
	}

 



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -