我正在尝试在J2ME中编写一个简单的媒体播放应用程序.目前我从最简单的事情开始,我只想从jar文件中包含的资源中播放wav文件.我正在使用这个简单的代码:
DataInputStream wav = new DataInputStream(getClass().getResourceAsStream("sample.wav"));
Player player = Manager.createPlayer(wav, "audio/x-wav");
player.addPlayerListener(this);
player.realize();
VolumeControl vc = (VolumeControl) player.getControl("VolumeControl");
if( vc != null )
vc.setLevel(100);
player.start();
Run Code Online (Sandbox Code Playgroud)
我删除了一些日志代码.我在两部手机上运行:带有最新固件的诺基亚E65和带有原始固件的诺基亚3110c.在E65上,我看到播放器已创建,它开始播放,并且没有异常抛出.但是我什么都听不到......同样的波形文件在内置媒体播放器中运行良好.如你所见,我附加了一个玩家监听器,它只收到一条消息:STARTED.没有VOLUME_CHANGED和END_OF_MEDIA事件.
在3110c上运行的相同jar文件播放正常并显示所有预期的玩家事件.
不知道E65可能出了什么问题,或者我做错了什么?提前致谢.
为什么编译?
struct A {};
struct B {
B(A& _a) : a(_a) {}
A &a;
};
void f1(A&) {}
void f2(const B &b) { f1(b.a); }
int main() {
A a;
B b{a};
f2(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在f2()里面是const,所以我的理解是ba也应该是const.但它确实编译,编译器允许调用f1().
替换'A&a;' 在结构B中带'A a;' 它不再有效.现在在f1()ba中确实是const:
invalid initialization of reference of type 'A&' from expression of type 'const A'
Run Code Online (Sandbox Code Playgroud)
请帮我理解这个...谢谢.