如何判断当前的移动设备所支持的多媒体类型

不同的移动设备支持不同的多媒体类型,例如:Motorola/A1000支持midi, wav, amr,但是Motorola/E1000支持midi, mp3, wav, amr, wb-amr, aac, wma.
因此在编程时,为了防止程序抛出异常,我们经常需要首先判断是否当前的移动设备是否支持此媒体类型,如果不支持,则显示警告信息。

下边的代码显示了如何判断当前的移动设备所支持的多媒体类型:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.Manager;

public class MultiMediaDeviceMidlet extends MIDlet
  implements CommandListener
{
  private static final Command exit = new Command(
    "Exit", Command.EXIT,1);
  private static final Command detail = new Command(
    "Details", Command.ITEM,1);
  private static final Command audio = new Command(
    "Audio", Command.ITEM,1);
  private static final Command vedio = new Command(
    "Video", Command.ITEM,1);
  private static final Command polyphonic = new Command(
    "Polyphonic sound", Command.ITEM,1);
  private Display display;
  private List list;

  public void startApp()
  {
    if (display == null)
    {
      display = Display.getDisplay(this);
      list = new List(
        "MultiMedia Device Capabilities", List.IMPLICIT,
        Manager.getSupportedContentTypes(null),null);

      list.setCommandListener(this);
      list.addCommand(exit);
      list.addCommand(detail);
      list.addCommand(audio);
      list.addCommand(vedio);
      list.addCommand(polyphonic);

      deviceCapabilities();

    }
    display.setCurrent(list);
  }

  public void pauseApp() {}

  public void destroyApp(boolean unconditional) {}

  public void commandAction(Command c, Displayable d)
  {
    if (c == exit)
    {
      destroyApp(true);
      notifyDestroyed();
    }
    if (c == detail)
    {
      showDetails();
    }
    if (c == audio)
    {
      display.setCurrent(new Alert("audio",
        getCaptureSupport("audio"),null,AlertType.INFO));
    }
    if (c == vedio)
    {
      display.setCurrent(new Alert("video",
        getCaptureSupport("video"),null,AlertType.INFO));
    }
    if (c == polyphonic)
    {
      display.setCurrent(new Alert("Polyphony",
        getPolyphonySupport(),null,AlertType.INFO));
    }
  }

  private void showDetails()
  {
    int index = list.getSelectedIndex();
    String type = list.getString(index);
    String protocols[] = Manager.getSupportedProtocols(type);
    Alert alert = new Alert(type, arrayToString(protocols),
      null, AlertType.INFO);
    display.setCurrent(alert);
  }

  private String arrayToString(String[] items)
  {
    if ((items == null) || (items.length == 0))
    {
      return "";
    }
    else
    {
      StringBuffer buffer = new StringBuffer(items[0]);
      for (int i=1; i<items.length; i++)
      {
        buffer.append(", ");
        buffer.append(items[i]);
      }
      return buffer.toString();
    }
  }

  private void deviceCapabilities()
  {
    String types[] = Manager.getSupportedContentTypes(null);
    for (int i=0; i<types.length; i++)
    {
      String protocols[] =
        Manager.getSupportedProtocols(types[i]);
    }
  }

  private String getCaptureSupport(String media)
  {
    StringBuffer sbuf = new StringBuffer(media);
    String support = System.getProperty(
      "supports."+media+".capture");
     
    if ((support !=null) && (! support.trim().equals("")))
    {
      sbuf.append(" capture supported");
      String supportRecording =System.getProperty(
        "supports.recording");
      if ((supportRecording !=null) &&
        (! supportRecording.trim().equals("")))
      {
        String recordingEncodings =
          System.getProperty(media+".encodings");
        if ((recordingEncodings != null) &&
          (! recordingEncodings.trim().equals("")))
        {
          sbuf.append(", recording supported to ");
          sbuf.append(recordingEncodings);
        }
        else
        {
          sbuf.append(", recording not supported for this media format");
        }
      }
      else
      {
        sbuf.append(", recording not supported");
      }

      String snapshotEncodings = System.getProperty(
        media+".snapshot.encodings");
       
      if (snapshotEncodings != null)
      {
        sbuf.append(", snapshots supported to ");
        sbuf.append(snapshotEncodings);
      }
    }
    else
    {
      sbuf.append(" capture not supported");
    }
    return sbuf.toString();
  }

  private String getPolyphonySupport()
  {
    String mixing = System.getProperty("supports.mixing");
    if (mixing !=null)
    {
      return "Polyphonic sound supported";
    }
    else
    {
      return "Polyphonic sound not supported";
    }
  }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值