Audio 未在Blackberry中播放音频文件
我正试着播放一个录制的波形文件。播放时,在以下语句中引发异常:Audio 未在Blackberry中播放音频文件,audio,blackberry,java-me,mmapi,Audio,Blackberry,Java Me,Mmapi,我正试着播放一个录制的波形文件。播放时,在以下语句中引发异常: Player player = Manager.createPlayer(is, "audio/mpeg"); 我播放wave文件的全部代码如下: if (types[cnt].equals("audio/x-wav")) { Class clazz = Class.forName("RecordAudio"); InputStream is = clazz.getResourceAsStrea
Player player = Manager.createPlayer(is, "audio/mpeg");
我播放wave文件的全部代码如下:
if (types[cnt].equals("audio/x-wav")) {
Class clazz = Class.forName("RecordAudio");
InputStream is =
clazz.getResourceAsStream("file:///SDCard/BlackBerry/original.wav");
//create an instance of the player from the InputStream
Player player = Manager.createPlayer(is, "audio/mpeg");
player.realize();
player.prefetch();
//start the player
player.start();
}
有什么问题吗?我认为是因为MIME类型错误。试试这个:
String fileName = "file:///SDCard/BlackBerry/original.wav";
String mimeType = "audio/x-wav";
String types[] = javax.microedition.media.Manager
.getSupportedContentTypes(null);
for (int cnt = types.length - 1; cnt >= 0; --cnt) {
if (types[cnt].equals(mimeType)) {
InputStream is = null;
FileConnection fconn = null;
try {
fconn = (FileConnection) Connector.open(
fileName, Connector.READ);
} catch (IOException e) {
System.out.println("Error reading file");
}
try {
is = fconn.openInputStream();
} catch (IOException e) {
System.out.println("Error opening stream");
}
Player player = null;
try {
player =
javax.microedition.media.Manager.createPlayer(
is, mimeType);
} catch (IOException e) {
System.out.println("Error creating player");
} catch (MediaException e) {
System.out.println("Error media type");
}
try {
player.realize();
} catch (MediaException e) {
System.out.println("Player cannot be released");
}
try {
player.prefetch();
} catch (MediaException e) {
System.out.println("Player cannot be prefetched");
}
// start the player
try {
player.start();
} catch (MediaException e) {
System.out.println("Player cannot be started");
}
}
}
还可以在控制台中查看引发了何种异常。函数getResourceAsStream用于从JAR/COD文件而不是文件系统中提取资源。另外,这比你做的要简单。只需将文件名和路径传递给createPlayer,如下所示:
try {
String filename = "file:///SDCard/BlackBerry/original.wav";
Player player = javax.microedition.media.Manager.Manager.createPlayer( filename );
} catch (IOException e) {
System.out.println("Error creating player");
} catch (MediaException e) {
System.out.println("Error media type");
}
如果你能在问题中提供更多的信息(rim操作系统版本,bb型号),并格式化你的代码,这将是很有帮助的。谢谢你好,Coldice,很抱歉代码格式错误。我正在使用BB Pearl 8100设备和o.s.version 4.5.0.81感谢Marc对代码进行格式化…执行已在以下位置停止:InputStream is=clazz.getResourceAsStream(“file:///SDCard/BlackBerry/original.wav");在调试器控制台上,显示FRIDG:找不到文件:/SDCard/BlackBerry/original.wav。但该文件存在于指定位置。我还尝试播放其他文件,但没有播放任何文件…请帮助。根据Fostah回答更新。别忘了模拟SD卡;)嗨,我试过上面的代码,没有抛出异常…但是媒体播放器没有被激活。调试器控制台打印的东西是:MN:GetPlayableS0(0)=1 MN:getLength0(0)=0 MN:GetPlayableS0(0)=1 MN:isSeekable0(0)=1 AR:add source 10 AR:setAudioMode 32 MN:play0(0)是音频,没有检查活动暂停MN:play0(0)=0 MN:MEDIA_STOPPED received MN:handle=0 staticsHandle=7fffffff AUDIOMANAGER:IOException MN:unload0(0)=2 pauseHandle=7fffffff AR:remove source 10 AR:setAudioMode 32