2013-01-02 68 views
2

使用方法的代码创建一个播放器后:在J2ME中创建一个音频文件播放器后,是可以通过一个又一个音频文件播放器的同一个实例玩

player = Manager.createPlayer(getClass().getInputStream("/sound.wav"), "audio/x-wav") 

是否有可能将音频文件传递给相同的播放器实例?

我试着这样做:

player = (Player) player.getClass().getInputStream("/sound.wav"); 

但是这一次给我一个例外,这是java.lang.ClassCastException

如果它是可能应该那么怎么办呢?

回答

1

此行

player = (Player) player.getClass().getInputStream("/sound.wav"); 

给你一个ClassCastException因为你试图给InputStream铸造成一个Player。这是错误的。这条线正确分配Playerplayer变量:

player = Manager.createPlayer(getClass().getInputStream("/sound.wav"), "audio/x-wav"); 

如果你愿意,你可以反复使用我的第二线,当它的时间来重放声音。您将只是重新创建播放器。如果你不改变声音文件(.WAV),然后当声音播放完,我只想再次启动它没有创建一个新的播放器:

player.start(); // restart the same sound 

但是,如果要更改其声音文件你使用,它可能是更容易只是再次调用createPlayer

player = Manager.createPlayer(getClass().getInputStream("/another_sound.wav"), "audio/x-wav"); 

这里有一些BlackBerry docs on the Player。即使你可能是在不同的J2ME平台,我认为同样的生命周期大概的规则适用于:

一个玩家五种状态:未实现,实现PREFETCHED,启动 关闭。

这些生命周期状态的目的是为可能耗时的操作提供编程性的 控制。例如,当玩家第一次构建时,它处于UNREALIZED状态。 从未完成状态转变为已实现状态,播放机执行必要的通信,以查找其需要的所有资源(例如与服务器或文件系统进行通信)。实现方法允许应用程序在适当的时间启动这个潜在的耗时过程。

通常,播放器从UNREALIZED状态移动到REALIZED 状态,然后到PREFETCHED状态,最后到STARTED 状态。

播放器在到达媒体结尾时停止;或者当调用方法 时。当发生这种情况时,玩家从 STARTED状态回到PREFETCHED状态。然后准备好重复 这个循环。

要使用播放器,您必须设置参数以管理其在整个生命周期状态中的移动 ,然后使用播放器的状态转换方法将其移动到状态 。

enter image description here

更新:(?)你似乎与代码的复杂性关注,也许重新分配对象,here is a code sample,有希望地说明,它应该不会太困难。你只需要在这个答案中的代码,并使其成为你传递文件名(musicFile)的方法。

+0

这意味着,没有方法可以在不创建播放器的情况下传递另一个音频文件....我必须创建另一个播放器。但在我的应用程序中,我正在使用VolumeControl。如果我创建另一个播放器来播放先前创建的第二个文件VolumeControl将不会与另一个播放器一起工作... 为了克服这个问题,我将为第二个播放器创建另一个VolumeControl或释放第一个VolumeControl并将其重新分配给第二个播放器... 。这会增加代码n努力的复杂性...这就是为什么我想要一种方法来传递音频文件而不创建另一个播放器..... – Rahul

+2

没有额外的*复杂性*需要。你用6-10行代码写一个方法。在该方法中,您使用'createPlayer()'创建一个播放器并获取您的'VolumeControl'。你可以多次调用这个方法。您在第一次播放声音时再次调用它,再次播放时再次播放。没有额外的复杂性。尝试交换声音文件*会增加复杂性。我明白你想要什么,但你可以自己看看API文档。我没有看到任何**改变音频文件的方法。如果有人这样做,希望他们会发布解决方案。 – Nate

+0

Ok Nate .....我明白了&我的问题现在已经解决......:D ... thanx的建议..还有一个问题是我怎么才能知道什么是能力模拟器或设备播放某些媒体文件,虽然它是.mp3或.wav或任何其他文件 – Rahul

相关问题