中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > J2ME
熟练使用J2ME在实际开发中的可选包MMAPI
作者:佚名 时间:2006-09-22 09:17 出处:mingjava 责编:月夜寒箫
              摘要:熟练使用J2ME在实际开发中的可选包MMAPI
了解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开发应用程序。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有