大多时候使用的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. 看职场老人教你如何平稳度过职场“更年期”
  2. ngDialog 点击窗口以外不允许关闭弹窗
  3. python爬虫学习(一)
  4. 2 Oracle用户和表空间
  5. pytorch教程龙曲良16-20
  6. 制作一个让客户满意的软件
  7. 身陷 Bug 时,优秀的开发工程师是如何寻求帮助的?
  8. iOS实现模拟定位功能
  9. 高铁检测试验软件,高铁规划要点及测试情况分析
  10. VMware 设置虚拟机全屏
  11. CSS,文本溢出显示省略号
  12. OpenCvSharp工作学习笔记5-图片缩放
  13. 炫酷粒子表白,双十一脱单靠它了!
  14. excel统计类别个数
  15. matlab 在二次函数图像,二次函数图像(二次函数图像图片)
  16. spring boot mybatis-plus 相同事务中同一个查询返回结果一样问题
  17. [WinBinder]让PHP调用windows原生能力的扩展
  18. WPF自学手册-读书笔记(二)心法
  19. 基辛格和张忠谋对骂,源于Intel已到生死关头
  20. CelebA数据集下载|HTTPSConnectionPool(host=‘drive.google.com‘, port=443)|RuntimeError:Dataset not found

热门文章

  1. 微信发红包测试点整理
  2. Android ContentObserver使用实现GPRS快捷开关
  3. beamer插入图片_在beamer中插入动画
  4. 教程 | win7环境下MySQL详细安装过程
  5. 毕业设计开题报告撰写方法
  6. 虚拟局域网VLAN,trunk的各种使用
  7. C++的protected
  8. (六)【模电】(基本放大电路)静态工作点的稳定
  9. 【Web安全笔记】之【6.0 内网渗透】
  10. uniapp获取当前经纬度 地图 支持搜索