使用net方式,实现在线播发器

 

package com.test;

import java.io.IOException;
import java.io.InputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

/**
 * 使用net方式可以在线播放
 * @author gx_jin
 *
 * @time:  2011-11-7
 */
public class MusicTest extends MIDlet implements Runnable
{
 private Command play;
 private Command exit;
 private Form ui;
 private TextField input;
 private Display dis;

 public MusicTest()
 {
  dis = Display.getDisplay(this);
  play = new Command("play", Command.OK, 1);
  exit = new Command("exit", Command.EXIT, 1);

  ui = new Form("音乐测试程序");
  input = new TextField("enter address", "http://59.151.36.12/gddemo/A8.aac", 300, TextField.URL);
  ui.append(input);

  ui.addCommand(play);
  ui.addCommand(exit);
  ui.setCommandListener(new CommandListener() {

   public void commandAction(Command c, Displayable arg1)
   {
    if (c == play)
    {
     System.out.println(input.getString());
     Thread thread = new Thread(MusicTest.this);
     thread.start();

    } else if (c == exit)
    {
     try
     {
      destroyApp(false);
     } catch (MIDletStateChangeException e)
     {
      e.printStackTrace();
     }
     notifyDestroyed();
    }

   }

  });
  dis.setCurrent(ui);

 }

 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

 }

 private static final String STREAMABLE = "?streamable=true";

 public void playSound(String url)
 {
  Player s_player = null;

  try
  {
   InputStream is = getInputStream(url+STREAMABLE);
   if (is == null)
   {
    input.setString("is==null");
   }
   s_player = Manager.createPlayer(is, "audio/aac");
   if (s_player == null)
   {
    input.setString("s_player==null");
   }
   s_player.addPlayerListener(new PlayerListener() {

    public void playerUpdate(Player arg0, String arg1, Object arg2)
    {
    }

   });

   s_player.realize();

   s_player.prefetch();
   s_player.start();
  } catch (Exception e)
  {
   e.printStackTrace();

   // input.setString(e.getMessage()+"---end--");

  }
 }

 private InputStream getInputStream(String url) throws IOException
 {
  HttpConnection conn = null;

  if (Valuse.netWork == Valuse.cmwap)
  {
   String remainUrl = url.substring("http://".length());
   int index = remainUrl.indexOf("/");
   String path = "";
   if (index != -1)
   {
    path = remainUrl.substring(index);
    remainUrl = remainUrl.substring(0, index);
   }
   String host = "";
   String port = "";
   index = remainUrl.indexOf(":");
   if (index != -1)
   {
    host = remainUrl.substring(0, index);
    port = remainUrl.substring(index + 1);
   } else
   {
    host = remainUrl;
    port = null;
   }
   String proxyHost = "10.0.0.172";
   String proxyPort = "80";
   String cnwapUrl = "http://" + proxyHost + ":" + proxyPort + path;
   conn = (HttpConnection) Connector.open(cnwapUrl, Connector.READ_WRITE, true);
   if (port == null)
   {
    conn.setRequestProperty("X-Online-Host", host + ":80");
   } else
   {
    conn.setRequestProperty("X-Online-Host", host + ":" + port);
   }
   conn.setRequestMethod(HttpConnection.POST);
   String contentType = conn.getHeaderField("Content-Type");
   input.setString("contentType="+contentType);
   if (contentType != null && contentType.indexOf("text/vnd.wap.wml") != -1)
   {
                 conn.close();
                
                 conn = (HttpConnection) Connector.open(cnwapUrl, Connector.READ_WRITE, true);
        if (port == null)
        {
         conn.setRequestProperty("X-Online-Host", host + ":80");
        } else
        {
         conn.setRequestProperty("X-Online-Host", host + ":" + port);
        }
        conn.setRequestMethod(HttpConnection.POST);
                
   }
  } else
  {
   conn = (HttpConnection) Connector.open(url, Connector.READ_WRITE, true);
  }
  InputStream is=conn.openInputStream();

  return is;
 }

 public void run()
 {
  String url = input.getString();
  playSound(url);

 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值