大多时候使用的player接口的时候,都是先声明player,然后用manager来createplayer,然后通过用player接口的start和stop来控制.当然这个是最简单的控制.但是其实真正的状态转化比这个还是要复杂那么一点点的.特别是在一些声音有问题的设备,了解状态的转化能够对排除问题和了解机器的bug有一定的帮助,特别是在移植的时候经常会碰的声音的问题的.

一个player总共有5个状态,可以说player的状态就是这之间互相转化的.
这五个状态分别是:
unrealized(没有实现), realized(实现), prefetched(缓冲读取), started(播放状态), closed(关闭状态).

首先声明一个player后,这个player的状态首先是unrealized(没有实现)状态,一般情况下这个时候会先用createplayer创建这个player,然后使用realize()方法将这个player的状态转化为realized(实现).

这个时候其实已经可以播放了,但是这个时候播放的话,在播放刚启动的时候或多或少会出现的问题就是刚开始的时候会卡一下(读取音乐资源的io操作的后果),因此这个时候最好能够让player进入prefetched(缓冲读取)的状态,这样无论在什么时候播放的话,中间的卡的停顿感就会消失.

这样的话,可以说一个player在播放之前已经准备完毕了.这个时候就能够随时播放了(或者说随时可以进入started(播放状态)了),这时候随时播放任何邪恶的触手的声音都没有问题.-_-特别是一些特殊的游戏对音效和音乐要求的播放时间的精准度比较高的,最好都要prefetched(缓冲读取)的状态比较好.
还有就是所谓的stop的使用,其实是返回prefetched(缓冲读取)的状态,因此并没有所谓的stopped的状态(这个名词的确念起来很顺口).一般如果播放完毕后会自动回到prefetched(缓冲读取)的状态.
关于关闭方面其实我想说的是,很多人关闭音乐都要有一个所谓的顺序之类的,其实没有必要,无论处于怎样的状态(除了closed本身),只要运行close()就能够直接返回closed状态的.其他的很多行为本身是不需要的,不过返回了closed状态本身就是相当于这个player已经关闭了.不能再进行任何别的使用操作了.如果还需要的话,重新创建一个吧.

可能这样说有点笼统,也许划线的话更好理解就是了

unrealized(没有实现)----->realized(实现)----->prefetched(缓冲读取)----->started(播放状态)   
                  realize()            prefetch()                 start()

started(播放状态)----->prefetched(缓冲读取)-----realized(实现)----->unrealized(没有实现)
                 stop()                deallocate()

以上4个状态随时都可以用close()返回到closed状态.

不过......以上只是理想状态的状态转化而已..有些机型还是有一些问题的,之所以想写这个的原因就是可以利用这个原理来从中分析问题的出处,比如上周碰到的一款国外产品的6230i的移植的问题(208*208屏幕的一款机型),在setloopcount(-1)的情况下,当曲目播放第一遍的时候,状态转化都很正常,当播放第二遍以上的话,即使使用stop()将状态转化为prefetched(缓冲读取)背景也会在播放的.然后就只能针对这样的问题进行修改了.

关于j2me mmapi的player接口的一些理解.相关推荐

  1. Windows Media Player接口

    http://msdn.microsoft.com/en-us/library/dd564034%28VS.85%29.aspx

  2. java的接口理解_原来Java的接口可以这样理解

    为什么写这篇文章 今天有人问了我这样一个问题 Java中为什么要使用接口呢? 还要先定义了一个接口,类还要实现接口的方法,还不如直接在这个类中写实现方法呢,根本没必要定义接口啊. 大概就是这样一个问题 ...

  3. 关于面象接口编程的理解

    从开始编程以来,我就一直在试着一种通用各种语言的开发模式(非编程模式)化的开发手段,类库,动态加载等其它方法,我都试过,但一直不尽如人意.知道面象接口编程是最好的一种方法,并且这种方法在C#中得到了很 ...

  4. java接口import_深入理解Java架构师在组件注册@Import导入容器(ImportSelector接口)的神操作!...

    ImportSelector:返回需要导入的组件的全类名数组 创建一个实现了ImportSelector接口的类,然后让入Import中.ImportSelector的实现类包含了所有需要导入到容器中 ...

  5. typescript 接口 interface 的理解

    在学习typescript的时候,经常发现别人写了好多接口(interface),那问题来了,我们自己写代码,应该在什么情况下写接口才比较合适呢.于是我就找了找资料,整理一下. 接口运行时的影响为 0 ...

  6. java 关注公众号没有调接口_深入理解Java继承、封装、多态的实现原理

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 作者:黄小斜 文章来源:微信公众号[Java技术江湖] 目录 从JVM结构开始谈多 ...

  7. golang 切片 接口_如何理解Golang中的接口?

    个人认为,要理解 Go 的接口,一定先了解下鸭子模型. 鸭子模型 那什么鸭子模型? 鸭子模型的解释,通常会用了一个非常有趣的例子,一个东西究竟是不是鸭子,取决于它的能力.游泳起来像鸭子.叫起来也像鸭子 ...

  8. 对java中接口的简单理解

    接口属于一个特殊的抽象类,继承的时候用 implements 实现,接口的继承不叫继承,叫做实现 接口的实现和类的继承有些类似,但是类的继承是单继承,接口可以多实现(多继承) 类的继承是对共性的继承, ...

  9. java中的高内聚和低耦合和接口的简单理解

    ## *浅谈java编程语言中高内聚和低耦合**先说低耦合中一个例子: 假设你的一个web应用包含50个函数<或者说方法> 你改动一个函数,其他函数正常运行工作...这就是低耦合.高内聚: ...

  10. java接口的一些理解(未完待续)

    接口有2种:①是程序层面的接口     ②java中用来解决java不能多继承的问题,还有接口可以做到:不用修改实例名和调用,只修改实现类,提到代码复用. 一.接口测试的理解: 首先别人是写的网络接口 ...

最新文章

  1. struts启动时加载_iOS优化篇之App启动时间优化
  2. linux做单臂路由实现trunk 使vlan之间通信
  3. hexo博客生成博文,当生成的文章数量超过1000时,耗尽所有内存资源后出现out of memory
  4. Java 容器之Hashset 详解.
  5. 常用的富文本编辑器推荐
  6. 【转】设计模式 ( 十七) 状态模式State(对象行为型)
  7. python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...
  8. requestmapping配置页面后_第004课:Spring Boot 项目属性配置
  9. python生成html表格_如何使用Python生成html目录列表
  10. 耐思尼克域名注册:通过icann之后和之前的那些小故事
  11. 【储留香系列】如何构建一个拖垮公司的备份系统
  12. IEEE Access的模板的问题
  13. 高维数据可视化之t-SNE算法
  14. 如何安装虚拟光驱大学计算机考试,用虚拟光驱安装win10专业版的方法
  15. 三阶段最小二乘法 回归分析 3SLS stata实现
  16. 强智教务管理系统爬虫难关1
  17. 输入存款金额并选择存款种类,计算出利息(不计利息税)和本息合计
  18. 计算机寸出,电脑显示器长31cm宽23cm是多少寸?
  19. FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted)的坑
  20. 吐故“钠”新,看钠离子电池如何引导行业新风向

热门文章

  1. Markdown缩进控制
  2. python中plot是什么意思_讲述python中ubplot的详细用法
  3. 解决双击.jar包无法运行
  4. 一文读懂authorized_keys和known_hosts
  5. 测试经验 --- 那些躲在角落的缺陷
  6. css3效果隔两秒旋转然后停两秒再继续旋转,无限循环
  7. Compilation failure: Compilation failure
  8. Region Proposal by Guided Anchoring
  9. win10打开Android模拟器后电脑重启问题
  10. 2022年劳务员-通用基础(劳务员)考试题库及答案