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

📄 playerui.java

📁 简单的MP3播放器
💻 JAVA
字号:
package com.wootion.ui;

import java.io.IOException;
import java.util.Vector;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.media.MediaException;

import com.wootion.control.Parameter;
import com.wootion.mainMidlet.MainMidlet;
import com.wootion.player.MusicPlayer;
import com.wootion.rms.PlayListBean;
import com.wootion.rms.PlayListRMS;

public class PlayerUI extends Canvas implements Runnable {
	Image bgImage, playbut1, playbut2, voice; // 图片

	int x;

	int y;

	int selected = 0;// 被选中的列表下表从0开始

	int index; // 页数

	int position = 43;// 列表初始位置

	int intvol = 0;// 音量图片显示位置

	int showL = 6;// 列表显示字个数

	int showR = 4;// 滚动字显示个数

	int sub = 0; // 控制滚动

	// 快进、退
	long pTime;

	// 播放总时间
	long tTime;

	public int showPlayControl;

	// 初始声音大小
	int volumn = 50;

	// 调节声音间隔
	int flag = 13;

	// 确定之间的数字切换:范围0到1
	public static int confirmflag = 0;

	private String[] list;// = { "1.童话", "2.爱在西元前", "3.一千个伤心的理由", "4.牛仔很忙",

	// "5.青花瓷", "6.雪花" };

	final Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
			Font.SIZE_SMALL); // 字体

	// 歌曲vector
	Vector vector = new Vector();

	// 数字vector
	Vector vc = new Vector();

	PlayListRMS plrms = new PlayListRMS();

	PlayListBean[] playlist = {};

	// 选择皮肤
	int skin;

	public MusicPlayer musicPlayer = new MusicPlayer();

	public int getShowPlayControl() {
		return showPlayControl;
	}

	public void setShowPlayControl(int showPlayControl) {
		this.showPlayControl = showPlayControl;
	}

	public PlayerUI() {
		musicPlayer.setDis(this);
		this.setFullScreenMode(true);
		x = getWidth();
		y = getHeight();
		//读取参数设置 播放顺序、皮肤
		int pc = plrms.getPRecordValue(Parameter.pRms, Parameter.pcid);
		if(pc != -1){
			Parameter.playControl = pc;
		}
		int sk = plrms.getPRecordValue(Parameter.pRms, Parameter.skid);
		if(sk != -1){
			Parameter.skin = sk;
		}
		initialize();
		new Thread(this).start();
	}

	/**
	 * 
	 * <b>方法描述:</b></br>&nbsp&nbsp&nbsp&nbsp 初始化播放列表</br>
	 */
	public void initialize() {
		skin = Parameter.skin;
		try {
			bgImage = Image.createImage("/res/player" + skin + ".png");
			playbut1 = Image.createImage("/res/but1.png");
			playbut2 = Image.createImage("/res/but2.png");
			voice = Image.createImage("/res/2.png");
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		playlist = plrms.getRecords("playlistdb");
		plrms.openRS("playlistdb");
		int total = plrms.getNumOfRecords();
		if (total == index) {
			index = total - 1;
		}
		if (selected <= 0) {
			selected = 0;
		}
		musicPlayer.setMTotal(total);
		musicPlayer.setVTotal(total);
		if (vc != null) {
			vc.removeAllElements();
		}
		for (int i = 1; i < total + 1; i++) {
			vc.addElement(String.valueOf(i));
		}
		musicPlayer.setVector(vc);
		plrms.closeRS();
		if (vector != null) {
			vector.removeAllElements();
		}
		for (int i = 0; i < playlist.length; i++) {

			PlayListBean plb = playlist[i];
			Integer x = new Integer(plb.getIndex());
			String strindex = x.toString();
			String dot = ".";
			String musicName = plb.getMusicName();
			String a = strindex.concat(dot);
			a = a.concat(musicName);
			vector.addElement(a);
		}
		list = new String[vector.size()];
		if (vector.size() != 0) {
			for (int i = 0; i < vector.size(); i++) {
				list[i] = (String) vector.elementAt(i);

			}
		}
	}

	private void paintList(Graphics g) {
		if (vector.size() != 0) {
			int it = list.length - 6;
			if (it <= 0) {
				g.setColor(250, 90, 150);
				g.fillRect(3, position + font.getHeight() * selected,
						84, font.getHeight());
				for (int i = 0; i < list.length; i++) {
						g.setColor(255, 255, 255);
						if (list[i].length() > showL) {
							g.drawSubstring(list[i], 0, showL, 5, position
									+ font.getHeight() * i, Graphics.LEFT
									| Graphics.TOP);
						}
						else {
							g.drawString(list[i], 5, position
									+ font.getHeight() * i, Graphics.LEFT
									| Graphics.TOP);
						}
				}
//				 下拉条
				g.setColor(121, 122, 123);
				g.fillRect(92, position + selected * 6 * font.getHeight()
						/ list.length, 6, 6 * font.getHeight() / list.length);
			}
			if (it > 0) {
				int page = index - selected;
				g.setColor(250, 90, 150);
				g.fillRect(3, position + font.getHeight() * selected,
						84, font.getHeight());
				for (int i = page; i < page + 6; i++) {
						g.setColor(255, 255, 255);
						if (list[i].length() > showL) {
							g.drawSubstring(list[i], 0, showL, 5, position
									+ font.getHeight() * (i - page),
									Graphics.LEFT | Graphics.TOP);
						}
						else {
							g.drawString(list[i], 5, position
									+ font.getHeight() * (i - page),
									Graphics.LEFT | Graphics.TOP);
						}
				}
				// 下拉条
				g.setColor(121, 122, 123);
				g.fillRect(92, position + index * 6 * font.getHeight()
						/ list.length, 6, 6 * font.getHeight() / list.length);
			}
		}
	}

	protected void paint(Graphics g) {
		g.setFont(font);
		g.fillRect(0, 0, x, y);
		g.drawImage(bgImage, 0, 0, Graphics.LEFT | Graphics.TOP);
		if (confirmflag == 0) {
			g.drawImage(playbut1, 101, 110, Graphics.LEFT | Graphics.TOP);
		}
		if (confirmflag == 1) {
			g.drawImage(playbut2, 101, 110, Graphics.LEFT | Graphics.TOP);
		}
		g.drawImage(voice, 40 + intvol, 165, Graphics.LEFT | Graphics.TOP);
		g.setColor(255, 255, 255);
		paintList(g);
		g.setColor(250, 90, 150);
		String str = Parameter.songName;
		if (str.length() > showR) {
			if (str.length() - sub < showR) {
				showR = str.length() - sub + 1;
				showR -= 1;
				if (showR <= 0) {
					showR = 4;
					sub = 0;
				}
			}
			g.drawSubstring(str, sub, showR, 105, position + 5, Graphics.LEFT
					| Graphics.TOP);
		}
		else {
			g.drawString(str, 105, position + 5, Graphics.LEFT | Graphics.TOP);
		}
		g.drawString("模式:", 105, position + font.getHeight() + 10,
				Graphics.LEFT | Graphics.TOP);
		g.drawString(Parameter.showPC(Parameter.playControl), 105, position
				+ font.getHeight() * 2 + 10, Graphics.LEFT | Graphics.TOP);
		g.setColor(255, 255, 255);
		if (musicPlayer.player != null) {
			long ptime = musicPlayer.player.getMediaTime();
			pTime = ptime;
			long ttime = musicPlayer.player.getDuration();
			tTime = ttime;
			g.drawString(timeFM(ptime) + "/" + timeFM(ttime), 105, 160,
					Graphics.LEFT | Graphics.TOP);
			g.setColor(32, 128, 216);
			g.fillRect(4, 184, (int) ((getWidth() - 7) * ptime / ttime), 6);
		}
		else {
			g.drawString("00:00/00:00", 105, 160, Graphics.LEFT | Graphics.TOP);
		}

	}

	// 保持按键状态
	public void keyRepeated(int key) {
		if (key == 52 || key == 54) {
			keyPressed(key);
		}
	}

	public void keyReleased(int key) {
		if (key == 52 || key == 54) {
			musicPlayer.playSound();
		}
	}

	public void keyPressed(int key) {
		switch (key) {
			// Canvas.UP
			case -1:
				if (vector.size() != 0) {
					if (--index < 0) {
						index += list.length;
					}
					if (--selected < 0) {
						selected = 0;
					}
					if(index == list.length -1 ){
						if(list.length < 6){
							selected += list.length - 1; 
						}else{
							selected = 5;  
						}
					}
				}
				break;

			// Canvas.DOWN
			case -2:
				if (vector.size() != 0) {
					index = (index + 1) % list.length;
					selected = (selected + 1) % 6;
					if (index > 5) {
						selected = 5;
					}
					if (index == 0) {
						selected = 0;
					}
					// selected = (selected + 1) % list.length;
				}
				break;

			// Canvas.LEFT
			case -3:
				intvol -= 4;
				if (intvol < -16) {
					intvol = -16;
				}
				volumn -= flag;
				if (volumn < 0) {
					volumn = 0;
				}
				musicPlayer.setVolumn(volumn);
				if (musicPlayer.control != null) {
					musicPlayer.control.setLevel(volumn);
				}
				break;

			// Canvas.RIGHT
			case -4:
				intvol += 4;
				if (intvol > 16) {
					intvol = 16;
				}
				volumn += flag;
				if (volumn > 100) {
					volumn = 100;
				}
				musicPlayer.setVolumn(volumn);
				if (musicPlayer.control != null) {
					musicPlayer.control.setLevel(volumn);
				}
				break;

			// Canvas.FIRE
			case -5:
				musicPlayer.stopPlay();
				if (vector.size() != 0) {
					musicPlayer.setSelected(index + 1);
					musicPlayer.playSound();
				}
				confirmflag = 1;
				break;

			// 左软键盘
			case -6:
				Display.getDisplay(MainMidlet.getInstance()).setCurrent(
						new OptionCanvas(this, index + 1));
				break;

			// 右软键盘
			case -7:
				Display.getDisplay(MainMidlet.getInstance()).setCurrent(
						new ExitForm(this));
				break;
			case 50:
				if (vector.size() != 0) {
					if (confirmflag == 1) {
						musicPlayer.pauseSound();
					}
					else {
						musicPlayer.playSound();
					}
					confirmflag = (confirmflag + 1) % 2;
				}
				break;
			case 52:
				musicPlayer.pauseSound();
				if (pTime > 0) {
					pTime -= 5000000;
				}
				if (pTime < 0) {
					pTime = 0;
				}
				try {
					musicPlayer.player.setMediaTime(pTime);
				}
				catch (MediaException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				break;
			case 54:
				musicPlayer.pauseSound();
				if (pTime < tTime) {
					pTime += 5000000;
				}
				if (pTime > tTime) {
					pTime = tTime;
				}
				try {
					musicPlayer.player.setMediaTime(pTime);
				}
				catch (MediaException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				break;
			case 56:
				confirmflag = 0;
				musicPlayer.stopPlay();
				break;
		}

		repaint();
	}

	private String timeFM(long val) {
		String ret = "";
		int mval = (int) (val / 1000);
		int sec = mval / 1000;
		int min = sec / 60;

		if (min >= 10) {
			ret = ret + min + ":";
		}
		else if (min > 0) {
			ret = "0" + min + ":";
		}
		else {
			ret = "00:";
		}
		if (sec >= 60) {
			sec = sec % 60;
		}
		if (sec >= 10) {
			ret = ret + sec;
		}
		else if (sec > 0) {
			ret = ret + "0" + sec;
		}
		else {
			ret = ret + "00";
		}
		return (ret);
	}

	public void run() {
		while (true) {
			try {
				Thread.sleep(500);
				sub += 1;
				repaint();
			}
			catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

}

⌨️ 快捷键说明

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