日期:2014-05-20  浏览次数:20987 次

郁闷了一整天的怪问题 有人能解答吗 播放声音
package   as;

import   javax.microedition.midlet.MIDlet;
import   javax.microedition.midlet.MIDletStateChangeException;
//import   javax.microedition.lcdui.*;
import   javax.microedition.media.*;
import   java.io.*;


public   class   play   extends   MIDlet   {

public   static   Player   mc=null;
public   play()   {
//   TODO   Auto-generated   constructor   stub
try
{
InputStream   ins=this.getClass().getResourceAsStream( "/bb.wav ");
mc=Manager.createPlayer(ins, "audio/x-wav ");

}
catch(IOException   e)
{}
catch(MediaException   e)
{}
catch(Exception   e)
{}
}

protected   void   destroyApp(boolean   arg0)   throws   MIDletStateChangeException   {
//   TODO   Auto-generated   method   stub

}

protected   void   pauseApp()   {
//   TODO   Auto-generated   method   stub

}

protected   void   startApp()   throws   MIDletStateChangeException   {
//   TODO   Auto-generated   method   stub
if(mc!=null)
{
try
{
mc.start();
System.out.println( "start.... ");
}
catch(MediaException   e   )
{
System.out.println(e);
}
}
else
{
System.out.println( "null...... ");
}

}

}


------解决方案--------------------
问题到底是什么?
连描述都没有,上帝也解决不了
------解决方案--------------------
上面程序bb.wav 可以播放出来
但是放在同样目录下的bbq.wav 就不能播放了 source not found
为什么?
===========================================
先确定bbq.wav的资源是可用的,如果已经可以打到包中的话,就看路径对不对,基本就是这两种情况了

把bb.wav 放res文件夹下 应该改成( "/res/bb.wav ")或者( "./res/bb.wav ")对吗?

=============================================
看具体情况,如果你的根目录指向res所在的目录,就应该是/res/bb.wav,如果根目录指向了res目录,就应该是/bb.wav
------解决方案--------------------
看什么机子了,wav位速要> =64Kbps,这样就都能播了,看看两个wav位速是不是不一样
------解决方案--------------------
bb.wav 未必只有一份,可能能够打开的那份不在你以为的这个目录中。
搜索一下bb.wav,看有几份,都在什么位置,如果有其它位置,则把bbq.wav拷到那里,就完事了。
------解决方案--------------------
bb.wav 可以播放;
copy bb.wav to bbq.wav 不可以播放;相同目录;

lz是不是想同时播放2个声音啊,很多机器不行的,包括N70,但是SecK系列的手机可以;
------解决方案--------------------
既然出错的原因是source not found,那么就看看资源文件是否在jar中了,或者是加载文件的地方路径没有写对,不可能是还有其他原因了。