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

📄 formmsgreceive.java

📁 J2ME程序实现开机自启动的简单例子源码。
💻 JAVA
字号:
/**
//文档生成日期:2005.11.3
//
//(1)概述:
//类名称:FormMsgReceive
//类说明:
// 显示短信的Form界面
* 
//所在子系统:MIMESMSnotifyPushRegistry
//
//系统总描述:
	    本工程发送一个MIME头的短信给目标手机。MIME头中指明了对方应该如何处理。
	    对方手机收到后,触发注册了PushRegistry的MIDlet应用,并解析短信,
	    按照指明的命令操作。


	 子系统描述:
		注册Push Registry,监听sms://:8341,当然端口可以修改的。
		这样,收到带有MIME头的短信后,解析并按照命令行事.

//(2)历史记录:
//创建人: 郑昀(2005.11.3)
//联系我: Google Talk >> zhengyun@gmail.com
//Blogs:    http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc

//(3)版权声明:
//我这个版本的MIMESMSnotifyPushRegistry,
//j2me客户端代码仅仅允许您借鉴,但不得用于商业用途,除非得到郑昀本人的授权。本人保留所有权利。

////////////////////////////////////////////////////////////////////*/
package com.ultrapower.view;

import java.io.InputStream;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.StringItem;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
import javax.microedition.media.control.VolumeControl;

import com.ultrapower.common.CommandResources;
import com.ultrapower.control.GUIController;
import com.ultrapower.model.NonInteractiveGaugeRunnable;

/**********************************************************
//FormMsgReceive
//
//Class Description:
//	用于显示短信。提供“返回”按钮。
//
//Author:
//zhengyun@ultrapower 2005.11.3
//
**********************************************************/
public class FormMsgReceive extends Form implements PlayerListener{
    private GUIController controller;
	
    private Command BACK_COMMAND;
    private StringItem mobileField;
    private StringItem msgField;
	private static Image m_imageGotIt =
		CommandResources.getImage(CommandResources.IMG_GOTIT);
	private int m_nImageAppendId = -1;
	private NonInteractiveGaugeRunnable m_nonInteractive;
	private int m_nAppendGaugeId = -1;
	
	/*
	 * 下面是为了播放音乐准备的
	 */
	private Player m_player;
	private VolumeControl m_volume;
	private int m_nVolume = 50;
    private static final Command m_cmdStop = 
		new Command("Stop", 
				String.valueOf(
						CommandResources.getChars(CommandResources.TXT_C_STOPMUSIC))
						, 6, 2);
	private static final Command m_cmdPlayAgain
		= new Command("Replay", 
				String.valueOf(
						CommandResources.getChars(CommandResources.TXT_C_PLAYAGAIN))
						, 6, 2);
    
	public FormMsgReceive(String title, GUIController control){
		super(title);
    	controller	=	control;
    	this.setCommandListener(new RssFeedAddListener());
    	
    	BACK_COMMAND	=	new Command("返回",Command.BACK,1);
    	this.addCommand(BACK_COMMAND);
		    	
		mobileField	=	new StringItem("对方手机号码:","");
		msgField	=	new StringItem("接收到的消息内容:",
								"");
    	this.append(mobileField);
    	this.append(msgField);
		
		setTitle(String.valueOf(CommandResources.getChars(
				CommandResources.TXT_T_PARSE_PROGRESS)));
	}
	
	
	/*
	 * 显示短信成功了
	 */
	public final void succReceive(String msg, String mobile)
    {
		stopPlayer();
		System.out.println("/** Enter succSend!");
		setTitle(String.valueOf(CommandResources.getChars(
				CommandResources.TXT_PARSEMMS_SUCC_TITLE)));
		
		mobileField.setText(mobile);
		msgField.setText(msg);
		
		m_nImageAppendId = this.append(m_imageGotIt);
		
		// 添加停止播放音乐的按钮
		StartMusicCommand();
		// 呵呵,开始播放背景音乐
		playMusic();
		// 同时显示进度条
		startGauge();
    }
	
	/*
	 * 受到消息之后就立即播放音乐,如果有任何错误,并不让用户知道
	 */
	private void playMusic()
	{
		try
		{
			// 读入文件流
			InputStream isInputMusic = getClass().getResourceAsStream(
					String.valueOf(CommandResources.getChars(
							CommandResources.TXT_T_DEFAULT_MUSIC_FILENAME)));
			
			if(isInputMusic != null)
			{
				m_player = Manager.createPlayer(isInputMusic,
					"audio/amr");
				// realize the player
				m_player.realize();
				System.out.println("Got player realize!");
			    // Guarantee that the player  can start with the smallest latency.
			    m_player.prefetch();
				System.out.println("Got player prefetch!");
				   
			    // Set a listener.
				//m_player.addPlayerListener(new PlayMusicListener());
			   // Grab volume control for the player.
			   // Set Volume to max.
			   m_volume = (VolumeControl)
			   		m_player.getControl("VolumeControl");
			   if (m_volume != null)
			      m_volume.setLevel(m_nVolume);
			   System.out.println("Got VolumeControl!");
		
			   // 在單音序列播放器中不能使用prefetch()方法,否則會丟出MediaException
			   // Non-blocking start
			   m_player.start();
			}
		}
		catch(Exception exc)
		{
			
		}
	}

	/*
	 * 显示短信失败了
	 */
	public final void failSend()
    {		
		System.out.println("/** Enter failSend!");
		setTitle(String.valueOf(CommandResources.getChars(
				CommandResources.TXT_PARSEMMS_ERROR_TITLE)));
		clear();
		stopPlayer();
		resetPlayer();
    }
	
	public void clear(){
		mobileField.setText("");
		msgField.setText("");
		if(m_nImageAppendId != -1)
			this.delete(m_nImageAppendId);
		if(m_nAppendGaugeId != -1)
			this.delete(m_nAppendGaugeId);
	}
	
	/*
	 * 播放音乐的一系列函数
	 */
	public void playAgain()
	{
		System.out.println("/** PlayAgain!");
		
		try
		{			
			if(m_player != null)
			{
				if(m_player != null && m_player.getState() == Player.PREFETCHED)
				{
					m_player.start();
				}
			}
			
			startGauge();
			
			removeCommand(m_cmdPlayAgain);
	        addCommand(m_cmdStop);
		}
		catch(Exception exc)
		{
			exc.printStackTrace();
		}
	}
	/*
	 * 在本界面关闭的时候,将Player关闭
	 */
	public void destroyPlayer(){
		
		try{
			stopPlayer();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	/*
	 * 本类实现了PlayerListener接口。通过这个事件来告知媒体已经播放完毕
	 */
	public void playerUpdate(Player player, String event, Object data){
		if(event == PlayerListener.END_OF_MEDIA){
			try{
				stopPlayer();
				StopMusicCommand();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}
	
	void stopPlayer(){
		try{
			defplayer(false);
			stopGauge();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	/*
	 * 暂时停止播放
	 */
	public void pausePlayer(){
		try{
			defplayer(true);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void resetPlayer(){
		m_player = null;
	}
	
	/*
	 * defplayer的功能就是:
	 * 如果输入参数pause为true,那么,如果播放中,则先停止播放;
	 * 
	 * 如果输入参数pause为false,那么,如果播放中,则先停止播放;如果player是在预载入中,则清除player占用的内存;
	 */
	void defplayer(boolean pause) throws MediaException{
		if (m_player != null){
			if(m_player.getState() == Player.STARTED){
				m_player.stop();
			}
			if(m_player.getState() == Player.PREFETCHED && !pause){
				m_player.deallocate();
			}
			if((m_player.getState() == Player.REALIZED || m_player.getState() == Player.UNREALIZED) && !pause){
				m_player.close();
			}
		}
		if(!pause){
			m_player = null;
		}
	}
	/*
	 * 
	 */
	public final void StartMusicCommand()
    {	
		System.out.println("/** Enter StartMusicCommand!");
		
        addCommand(m_cmdStop);
    }
	/*
	 * 删除停止命令,添加重放命令
	 */
	public final void StopMusicCommand()
    {	
		System.out.println("/** Enter StartMusicCommand!");
		
		removeCommand(m_cmdStop);
        addCommand(m_cmdPlayAgain);
    }
	
	
	/*
	 * 进度条的函数
	 */
	public void startGauge()
	{
		if(m_nonInteractive == null)
		{
			m_nonInteractive = new NonInteractiveGaugeRunnable(
	                "播放中...", 10, 0);
			new Thread(m_nonInteractive).start();
			m_nAppendGaugeId = this.append(m_nonInteractive);
		}
		else
		{
			m_nonInteractive.setValue(0);
			m_nonInteractive.setStart();
		}
	}	
	public void stopGauge()
	{
		m_nonInteractive.setDone();
		if(m_nAppendGaugeId != -1)
			this.delete(m_nAppendGaugeId);
	}
	
    /*
     * 内部监听器,监听器监听所有Command事件,并把事件响应推出来让控制器处理
     */
    private class RssFeedAddListener implements CommandListener{ 
		public void commandAction(Command command, Displayable disp){
			if(command == BACK_COMMAND){
				controller.handleEvent(GUIController.EventID.EVENT_DISPLAYMMS_BACK, null);
	        }
			else if(command == m_cmdStop)
			{
				// 停止播放音乐
				StopMusicCommand();
				pausePlayer();
			}
			else if(command == m_cmdPlayAgain)
			{
				// 重新播放音乐
				playAgain();
			}
		}
    }//end inner class
    
}

⌨️ 快捷键说明

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