资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> JSP编程 >> J2ME >> 文档正文
最近更新
普通文档 移动开发:J2ME中定点库
普通文档 MIDlet生命周期的深入理
普通文档 移动开发:RMS概念解析与
普通文档 在基于MIDP的应用程序上
普通文档 教您如何在MIDP开发中实
普通文档 开发经验谈:贪吃蛇游戏
普通文档 J2ME学习系列之如何将J2
普通文档 教您如何解决J2ME开发中
普通文档 用实例讲解一个定制计数
普通文档 熟练使用J2ME在实际开发
推荐文章
  • 此栏目下没有推荐文档
  • 熟练使用J2ME在实际开发中的可选包MMAPI

    文章作者:佚名 录入时间:2006-7-5 来源:不详
    网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。


    了解J2ME在实际开发中的可选包MMAPI一文向读者介绍了MMAPI的基本知识,掌握MMAPI的灵活性应该是重点。本文将讲述如何在实际开发中使用MMAPI。

    本文的目的是为读者提供处理不同情况的代码,您可以参考MMAPI DOC。

    播放单音

    try 
    
    {
    
        Manager.playTone(ToneControl.C4, 5000 
    
    	/* millisec */, 100 /* max vol */);
    
    } catch (MediaException e) 
    
    { 
    
    }


    简单媒体重放功能实现:

    try 
    
    {
    
        Player p = Manager.createPlayer
    
    	("http://webserver/music.mp3");
    
        p.setLoopCount(5);
    
        p.start();
    
    } catch (IOException ioe) 
    
    {
    
    } catch (MediaException me)
    
    {
    
    }


    详细重放控制:

    static final long SECS_TO_MICROSECS 
    
    = 1000000L;
    
    Player p;
    
    VolumeControl vc;
    
    try {
    
        p = Manager.createPlayer
    
    	("http://webserver/music.mp3");
    
        p.realize();
    
       // Set a listener.
    
       p.addPlayerListener(new Listener());
    
       // Grab volume control for the player.
    
       // Set Volume to max.
    
       vc = (VolumeControl)p.getControl
    
       ("VolumeControl");
    
       if (vc != null)
    
          vc.setLevel(100);
    
       // Set a start time.
    
       p.setMediaTime(5 * SECS_TO_MICROSECS);
    
       // Guarantee that the player 
    
       can start with the smallest latency.
    
       p.prefetch();
    
       // Non-blocking start
    
       p.start();
    
    } catch (IOException ioe) 
    
    {
    
    } catch (MediaException me)
    
    { 
    
    }
    
    class Listener implements PlayerListener 
    
    {
    
        public void playerUpdate(Player p,
    
    	String event, Object eventData)
    
    	{
    
            if (event == END_OF_MEDIA 
    
    		|| event == STOP_AT_TIME) 
    
    		{
    
                System.out.println
    
    			("Done processing");
    
                try {
    
                    p.setMediaTime
    
    				(5 * SECS_TO_MICROSECS);
    
                    p.start();
    
                } catch (MediaException me) 
    
    			{ 
    
    			}
    
                break;
    
            }
    
        }
    
    }


    实现MIDI重放控制:

    Player p;
    
    TempoControl tc;
    
    
    
    try {
    
        p = Manager.createPlayer
    
    	("http://webserver/tune.mid");
    
        p.realize();
    
    
    
        // Grab the tempo control.
    
        tc = (TempoControl)p.getControl
    
    	("TempoControl");
    
        tc.setTempo(120000); 
    
    	// 120 beats/min
    
        p.start();
    
    
    
    } catch (IOException ioe)
    
    {
    
    } catch (MediaException me)
    
    {
    
    }


    视频重放功能实现:

    Player p;
    
    VideoControl vc;
    
    
    
    try {
    
        p = Manager.createPlayer
    
    	("http://webserver/movie.mpg");
    
        p.realize();
    
    
    
        // Grab the video control 
    
    	and set it to the current display.
    
        vc = (VideoControl)p.getControl
    
    	("VideoControl");
    
        if (vc != null) 
    
    	{
    
            Form form = new Form("video");
    
            form.append
    
    		((Item)vc.initDisplayMode
    
    		(vc.USE_GUI_PRIMITIVE, null));
    
            Display.getDisplay(midlet)
    
    		.setCurrent(form);
    
        }
    
    
    
        p.start();
    
    
    
    } catch (IOException ioe)
    
    {
    
    } catch (MediaException me)
    
    {
    
    }


    播放RMS内存储的数据:

    RecordStore rs;
    
    int recordID;
    
       :  // code to set up the record store.
    
    
    
    try {
    
        InputStream is = new
    
        ByteArrayInputStream
    
    	(rs.getRecord(recordID));
    
        Player p = Manager.createPlayer
    
    	(is, "audio/X-wav");
    
        p.start();
    
    } catch (IOException ioe)
    
    {
    
    } catch (MediaException me) 
    
    { 
    
    }


    播放Jar文件中存储的媒体

    /** Notice that in MIDP 2.0, 
    
    the wav format is mandatory only */
    
    /** in the case that the 
    
    device supports sampled audio.  */
    
    
    
    try {
    
        InputStream is = 
    
    	getClass().getResourceAsStream
    
    	("audio.wav");
    
        Player p = Manager.createPlayer
    
    	(is, "audio/X-wav");
    
        p.start();
    
    } catch (IOException ioe)
    
    {
    
    } catch (MediaException me)
    
    { 
    
    }


    不同Player的同步

    Player p1, p2;
    
    
    
    try {
    
        p1 = Manager.createPlayer
    
    	("http://webserver/tune.mid");
    
        p1.realize();
    
        p2 = Manager.createPlayer
    
    	("http://webserver/movie.mpg");
    
        p2.realize();
    
        p2.setTimeBase(p1.getTimeBase());
    
        p1.prefetch();
    
        p2.prefetch();
    
        p1.start();
    
        p2.start();
    
    } catch (IOException ioe)
    
    {
    
    } catch (MediaException me) 
    
    { 
    
    }


    产生单音序列

    byte tempo = 30;
    
    // set tempo to 120 bpm 
    
    byte d = 8;      
    
    // eighth-note 
    
    
    
    byte C4 = ToneControl.C4; 
    
    byte D4 = (byte)(C4 + 2); 
    
    // a whole step 
    
    byte E4 = (byte)(C4 + 4); 
    
    // a major third 
    
    byte G4 = (byte)(C4 + 7);
    
    // a fifth 
    
    byte rest = ToneControl.SILENCE; 
    
    // rest 
    
    
    
    byte[] mySequence = {
    
        ToneControl.VERSION, 1, 
    
    	// version 1
    
        ToneControl.TEMPO, tempo,
    
    	// set tempo
    
        ToneControl.BLOCK_START, 0,
    
    	// start define "A" section
    
        E4,d, D4,d, C4,d, E4,d,  
    
    	// content of "A" section
    
        E4,d, E4,d, E4,d, rest,d,           
    
        ToneControl.BLOCK_END, 0, 
    
    	// end define "A" section
    
        ToneControl.PLAY_BLOCK, 0,
    
    	// play "A" section
    
        D4,d, D4,d, D4,d, rest,d,
    
    	// play "B" section
    
        E4,d, G4,d, G4,d, rest,d,
    
        ToneControl.PLAY_BLOCK, 0,
    
    	// repeat "A" section
    
        D4,d, D4,d, E4,d, D4,d, C4,d 
    
    	// play "C" section
    
    }; 
    
    
    
    try{ 
    
        Player p = Manager.createPlayer
    
    	(Manager.TONE_DEVICE_LOCATOR); 
    
        p.realize(); 
    
        ToneControl c = (ToneControl)
    
    	p.getControl("ToneControl"); 
    
        c.setSequence(mySequence); 
    
        p.start(); 
    
    } catch (IOException ioe)
    
    { 
    
    } catch (MediaException me)
    
    {
    
    }


    语音捕获和录音功能的实现

    try
    
    {
    
    // Create a DataSource that 
    
    captures live audio.
    
    Player p = Manager.createPlayer
    
    ("capture://audio");
    
        p.realize();
    
        // Get the RecordControl,
    
    	set the record location, and 
    
        // start the Player and
    
    	record for 5 seconds.
    
        RecordControl rc = 
    
    	(RecordControl)p.getControl
    
    	("RecordControl");
    
        rc.setRecordLocation
    
    	("file:/tmp/audio.wav");
    
        rc.startRecord();
    
        p.start();
    
        Thread.currentThread()
    
    	.sleep(5000);
    
        p.stop();
    
        rc.stopRecord();
    
        rc.commit();
    
    } catch (IOException ioe)
    
    {
    
    } catch (MediaException me)
    
    {
    
    } catch (InterruptedException e)
    
    {
    
    }


    实现摄像功能

    Player p;
    
    VideoControl vc;
    
    
    
    // initialize camera 
    
    try {
    
        p = Manager.createPlayer
    
    	("capture://video");
    
        p.realize();
    
    
    
        // Grab the video control 
    
    	and set it to the current
    
    	display.
    
        vc = (VideoControl)p.getControl
    
    	("VideoControl");
    
        if (vc != null)
    
    	{
    
            Form form = 
    
    		new Form("video");
    
            form.append((Item)vc.initDisplayMode
    
    		(vc.USE_GUI_PRIMITIVE, null));
    
            Display.getDisplay(midlet).setCurrent(form);
    
        }
    
    
    
        p.start();
    
    
    
    } catch (IOException ioe)
    
    {
    
    } catch (MediaException me)
    
    {
    
    }
    
    
    
    // now take a picture
    
    try {
    
        byte[] pngImage = 
    
    	vc.getSnapshot(null);
    
    
    
        // do something with the image ...
    
    } catch (MediaException me)
    
    { 
    
    }


    在后面的文章中我们将通过完整的实例演示如何使用MMAPI开发应用程序。

  • 上一篇文档:

  • 下一篇文档:
  •     查找更多“熟练使用J2ME在实际开发中的可选包MMAPI”的内容  
    相关连接
  • 移动开发:J2ME中定点库MathFP使用入门

  • MIDlet生命周期的深入理解及游戏死机问题

  • 移动开发:RMS概念解析与使用指南

  • 在基于MIDP的应用程序上使用JDBC

  • 教您如何在MIDP开发中实现图片放缩