`
wangxc
  • 浏览: 213017 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2ME视频播放实现的简单代码

    博客分类:
  • J2ME
阅读更多
在J2ME中有关视频播放的步骤:
1.加载视频资源;
2.创建Player;
3.将视频到"以实现"状态(player.realize());
4.vidc.initDisplayMode(参数1,参数2);由于参数2需要Canvas对象,所以编写的类需要继承Canvas类;
5.视频播放并显示.




package com.mopietek;

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class MediaPlayerApp extends MIDlet{

	public Display display;
	public static MediaPlayerApp midlet;
	public VideoCanvas videoCanvas;
	
	public MediaPlayerApp(){
	  	midlet = this;
	  	display = Display.getDisplay(this);
	  	videoCanvas = new VideoCanvas(display);
	  	videoCanvas.open("/up1.mpg");
	  	display.setCurrent(videoCanvas);
	}
	
	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
		// TODO Auto-generated method stub
		
	}

	protected void pauseApp() {
		// TODO Auto-generated method stub
		
	}

	protected void startApp() throws MIDletStateChangeException {
		// TODO Auto-generated method stub
		
	}

}




package com.mopietek;

import java.io.InputStream;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.media.Control;
import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
import javax.microedition.media.control.FramePositioningControl;
import javax.microedition.media.control.RateControl;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.control.VolumeControl;

public class VideoCanvas extends Canvas implements Runnable,CommandListener,PlayerListener{

	
	private Display videodisplay;
	private  int screenWidth;
	private  int screenHeight;
	
	public static Command exitCommand = new Command("退出",Command.EXIT,1);
	public static Command playCommand = new Command("播放",Command.OK,1);
	public static Command pauseCommand = new Command("暂停",Command.ITEM,10);
	
	private VolumeControl vc;
	private Player player;
	private VideoControl vidc;
	private RateControl rc;
	private FramePositioningControl fpc;
	
	public VideoCanvas(){
		
	}
	
	public VideoCanvas(Display display){
		 this.videodisplay = display;
		 screenWidth = this.getWidth();
		 screenHeight = this.getHeight();
	     initialize();
	}
	
	//添加命令
	public void initialize(){
		addCommand(exitCommand);
		addCommand(playCommand);
		addCommand(pauseCommand);
		setCommandListener(this);
	}
	
	protected void paint(Graphics g) {
		//可以编写视频的外框,进度条等
	}
	
	
	public void open(String url){
		try{
				if(player == null){
					InputStream is = getClass().getResourceAsStream(url);
					player = Manager.createPlayer(is,"video/mpeg");
					//可以添加player的监听,实现视频的暂停、快放、快退等功能
					player.addPlayerListener(this);
				}
				player.realize(); //player的“以实现”状态
				if((vidc = (VideoControl) player.getControl("VideoControl")) != null){
					vidc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,this);
					vidc.setDisplayFullScreen(true);
					vidc.setVisible(true);
				}
				
				Control [] controls = player.getControls();
				for(int i=0; i<controls.length;i++){
					if(controls[i] instanceof VolumeControl)
						vc = (VolumeControl) controls[i];
					if(controls[i] instanceof RateControl)
						rc = (RateControl) controls[i];
					if(controls[i] instanceof FramePositioningControl)
						fpc = (FramePositioningControl) controls[i];
				}
				
				player.prefetch(); //"预抓取"状态
				
			if(vidc == null) addCommand(pauseCommand);
			if(player == null){
				return;
			}else{
				player.start();  //开始播放视频
			}
			
		}catch(Exception e){System.err.println(e.toString());}
	}

	public void run() {
		// TODO Auto-generated method stub
		
	}

	public void commandAction(Command c, Displayable d) {
		// TODO Auto-generated method stub
		
	}

	public void playerUpdate(Player arg0, String arg1, Object arg2) {
		// TODO Auto-generated method stub
		
	}

}


注意:播放的视频不要过大,否则会报java.lang.outofMemaryError异常。 目前只是在模拟器上可以运行,在真机上还不能运行,待完善。欢迎大家一块探讨学习!

测试的视频在附件中
  • up1.rar (215.6 KB)
  • 下载次数: 122
分享到:
评论

相关推荐

    J2ME视频播放程序

    在“J2ME视频播放程序”这个项目中,我们看到的是一个专门为小型设备开发的简单视频播放应用。这样的程序通常包含以下几个关键组件: 1. **用户界面**:J2ME应用程序通常使用MIDP(Mobile Information Device ...

    郭克华J2me视频教学源代码

    【标题】"郭克华J2ME视频教学源代码"涉及的是Java的一种移动开发平台——Java Micro Edition(J2ME)的学习资源。J2ME是Java技术在嵌入式设备和移动设备上的应用版本,主要用于开发手机、智能电视、游戏机等小型设备...

    郭克华j2me 教学视频里的 代码 和两个游戏

    同时,理解如何实现简单的物理规则,如重力和速度,是创建这类游戏的关键。 4. **贪吃蛇游戏开发** 贪吃蛇游戏是一个经典的J2ME编程练习。它包括蛇的移动逻辑、食物生成、边界处理、碰撞检测等部分。蛇的身体由多...

    郭克华 J2ME 视频 源码

    这个资源包括了视频教程和源代码,旨在帮助学习者深入理解和实践J2ME的开发技术。 J2ME技术基础: 1. **架构与配置**:J2ME由配置和 profiles 组成,配置定义了Java虚拟机(JVM)和核心类库,而profiles则增加了...

    j2me手机开发视频入门教程

    **J2ME手机开发视频入门教程** J2ME(Java 2 Micro Edition)是Java平台的一个子集,专为资源有限的嵌入式设备,包括移动电话和掌上设备而设计。这个视频教程针对初学者,旨在帮助他们快速掌握J2ME手机应用的开发...

    j2me开发文档和J2me源代码

    本文将详细介绍J2ME开发中的关键知识点,并结合提供的"郭克华J2me视频教学源代码"进行深入解析。 **J2ME架构与配置** J2ME的架构主要由两部分组成:Connected Limited Device Configuration (CLDC) 和 Mobile ...

    手机游戏开发全书--J2ME完整实例精解 源代码

    此外,书中还会涵盖如何使用J2ME处理键盘和触摸事件,实现游戏的动画效果,以及如何优化性能以适应移动设备的限制。 通过实例精解的方式,读者可以逐步理解并实践游戏开发的各个环节,从设计游戏机制到调试代码,再...

    基于J2ME的手机视频播放系统的开发

    - "SimpleVideoDemo":这可能是项目的源代码示例,演示了如何在J2ME环境下实现简单的视频播放功能。开发者可能使用它作为起点,然后扩展为完整的视频播放系统。 **知识点详细说明** 1. **J2ME基础**:了解J2ME的...

    郭克华J2ME移动开发实战教学视频源代码

    《郭克华J2ME移动开发实战教学视频源代码》是一个专注于Java Micro Edition(J2ME)技术的教育资源,由知名讲师郭克华提供。J2ME是Java平台的一个子集,专门用于嵌入式设备和移动设备的开发,如早期的智能手机、功能...

    郭克华j2me视频教程PPT

    郭克华老师是一位在IT领域有深厚造诣的教育者,他的J2ME视频教程深受学习者欢迎。这个教程可能涵盖了J2ME的基础概念、核心组件、开发环境的搭建、应用程序的生命周期管理、用户界面设计以及网络通信等内容。通过PPT...

    J2ME开发的手机视频播放

    在J2ME中实现视频播放的关键挑战在于处理视频解码。由于资源限制,J2ME通常不支持硬件加速的视频解码。开发者可能需要寻找轻量级的软件解码库,如J2ME VideoPlayer库,或者使用M3G(Mobile 3D Graphics)标准进行...

    J2ME移动开发视频讲义2入门教程

    **J2ME移动开发视频讲义2入门教程** J2ME,全称为Java 2 Micro Edition,是Java平台的一个子集,专为资源有限的移动设备如手机、PDA等设计。这个“J2ME移动开发视频讲义2入门教程”是由郭克华教授提供的,旨在帮助...

    widget_analyzer_j2me_flutter_flutter代码实现相机_源码

    在本文中,我们将深入探讨如何使用Flutter框架来实现在J2ME平台上开发相机功能。Flutter是一种流行的、跨平台的移动应用程序开发工具,它允许开发者使用单一的代码库为iOS和Android构建高性能的应用。J2ME(Java ...

    j2me 简单 实例

    5. **图形与动画**: 利用Graphics类进行绘图操作,包括绘制图像、线条、形状等,甚至实现简单的动画效果。 6. **多媒体支持**: 如果包含,可能涉及到音频和视频的播放,如JSR 135多媒体API。 7. **游戏开发**: 可能...

    j2me使用udp的简单连接

    本篇将深入讲解如何在J2ME环境中实现一个简单的UDP连接,包括服务器端(Server)和客户端(Client)的编程。 首先,我们来看`Server.java`。服务器端通常负责监听特定的端口,接收客户端发送的数据,并可能向客户端...

    郭克华老师的J2ME源代码

    他的J2ME视频教程深受学习者欢迎,不仅讲解了J2ME的基本概念,还深入剖析了实际开发中的关键技术和技巧。这些源代码正是郭克华老师教学实践的一部分,它们可以帮助学生和开发者更直观地理解J2ME的编程逻辑和实践应用...

    J2ME中文版教程 J2ME教程

    5. **图形与多媒体**:J2ME支持丰富的图形和多媒体处理,教程会讲解如何使用Graphics类进行绘图,以及如何播放音频和视频。 6. **存储管理**:由于移动设备的存储资源有限,教程会讲述如何有效地使用RecordStore...

Global site tag (gtag.js) - Google Analytics