科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件使用索爱V800开发流媒体应用程序

使用索爱V800开发流媒体应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

索尼爱立信的V800手机可以支持流媒体的播放,使用非常简单。如果你曾经使用MMAPI播放过声音或者做过照相应用的话,那么上手非常快。

作者:mingjava 来源:sonyericsson.com 2007年11月22日

关键字: 索爱V800 开发 流媒体 应用程序

  • 评论
  • 分享微博
  • 分享邮件
 索尼爱立信的V800手机可以支持流媒体的播放,使用非常简单。如果你曾经使用MMAPI播放过声音或者做过照相应用的话,那么上手非常快。

  你要做的就是根据指定的URL来创建一个Player,然后启动这个Player。URL的格式如下:rtsp://MyServer/myVideo.3gp。下面的代码例子演示了如何使用:

private void startStreaming(){
        try{
             myPlayer = Manager.createPlayer("rtsp://MyServer/MyFile.3gp");
             myPlayer.addPlayerListener(this);
             myPlayer.realize();
              // Grab the video control and set it to the current display.
              vc = (VideoControl)myPlayer.getControl("VideoControl");
              if (vc != null) {
                myForm.append((Item)vc.initDisplayMode(vc.USE_GUI_PRIMITIVE, null));
                // sets the display size of the video.
                vc.setDisplaySize(120,160); 
              }         
              myPlayer.start();

         }catch(Exception e){
                log("Exception: " + e.toString());
         }

    } 

  我们需要注意的是进行连接服务器的时候必须在单独线程中处理,而不能在主线程。因为这样会堵塞系统。接下来你要做的就是构建一个支持RTSP的流媒体服务器,放置一个3gp格式的文件在服务器上。下面的代码演示了如何使用V800开发流媒体应用。

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;
import javax.microedition.lcdui.game.*;


/**
 * A simple example of the MMAPI (JSR 135) support for Streaming Video
 * with the Sony Ericsson V800.
 *
 * This code is part of the Tips & Tricks section at
 * www.SonyEricsson.com/developer
 *
 * COPYRIGHT All rights reserved Sony Ericsson Mobile Communications AB 2005.
 * The software is the copyrighted work of Sony Ericsson Mobile Communications AB.
 * The use of the software is subject to the terms of the end-user license
 * agreement which accompanies or is included with the software. The software is
 * provided "as is" and Sony Ericsson specifically disclaim any warranty or
 * condition whatsoever regarding merchantability or fitness for a specific
 * purpose, title or non-infringement. No warranty of any kind is made in
 * relation to the condition, suitability, availability, accuracy, reliability,
 * merchantability and/or non-infringement of the software provided herein.
 *
 * Written by Jöns Weimarck, January 2005
 */
public class StreamingVideo extends MIDlet implements CommandListener, PlayerListener, Runnable{
   
   
    private Display myDisplay;
    private Form myForm;
 
    private Thread streamingThread;
    private Player myPlayer;
    private VideoControl vc;
    private boolean running=false;
   
    public StreamingVideo() {
        myDisplay = Display.getDisplay(this);
        myForm=new Form ("Streaming Test");
        myForm.addCommand(new Command("Exit", Command.EXIT,0));
        myForm.addCommand(new Command("Start", Command.OK,0));
        myForm.setCommandListener(this);
    }
  

    protected void startApp() throws MIDletStateChangeException {
        myDisplay.setCurrent(myForm); 
        streamingThread = new Thread(this);
    }

    protected void pauseApp() {}

    protected void destroyApp(boolean unconditional) {
        try {
            myPlayer.stop();
            myPlayer.close();
        }
        catch( Exception e ) {
            log("Exception: " + e.toString());       
        }
    }
   
   /**
    * Inits and starts the Player for Video Streaming
    */
    private void startStreaming(){
        try{
             myPlayer = Manager.createPlayer("rtsp://MyServer/MyFile.3gp");
             myPlayer.addPlayerListener(this);
             myPlayer.realize();
              // Grab the video control and set it to the current display.
              vc = (VideoControl)myPlayer.getControl("VideoControl");
              if (vc != null) {
                myForm.append((Item)vc.initDisplayMode(vc.USE_GUI_PRIMITIVE, null));
                // sets the display size of the video.
                vc.setDisplaySize(120,160); 
              }         
              myPlayer.start();

         }catch(Exception e){
                log("Exception: " + e.toString());
         }

    }
  
    public void commandAction(Command c, Displayable s){
        if(c.getCommandType()==Command.EXIT){
            running=false;
            notifyDestroyed();
        }else{
            streamingThread.start();
        }
    }
   
   
     /**
      * PlayerListener Interface method, logs all player event.
      */
     public void playerUpdate(Player player, String event, Object eventData){
        log(" ** playerUpdate: " + event + " **");
      
     }

     public void log(String msg){
        System.out.println(msg);
     }
    
     public void run() {
         running=true;
         startStreaming();
         while(running){
             Thread.yield();
         }
     }    
}

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章