欢迎光临
我们一直在努力

J2ME播放声音的几个问题(nokia).-JSP教程,J2ME开发

建站超值云服务器,限时71元/月

nokia的手机对声音播放支持的好像不太好。

本文根据我做j2me的经验,总结一下nokia三个机型的声音播放方法。

1。nokia s40(7210,3300) 和 s60(3650,7650)

/*

这四款机子不支持midp2.0的media。

我只针对我做过的机型说明,其他的机型没有用真机试验,

不知道是否支持midp2.0中的media

*/

import com.nokia.mid.sound.*;

public class myclass extends canvas

{

……

private sound ksound = null;

private byte[] datakill = {

(byte)0x02, (byte)0x4a, (byte)0x3a, (byte)0x40,

(byte)0x04, (byte)0x00, (byte)0x0b, (byte)0x28,

(byte)0x83, (byte)0x28, (byte)0x28, (byte)0xd2,

(byte)0x28, (byte)0x00

};

private fun()

{

if(ksound != null)

{

ksound.stop();

ksound = null;

}

ksound = new sound(datakill, sound.format_tone);

ksound.setgain(255); //设置音量

ksound.play(1); //播放,循环一次

}

} //end myclass.

/*

注:

1。关于datakill数据怎么得到。

首先,要有一个midi声音文件;

其次,需要nokia的nokia_developers_suite_for_j2me。

用这个工具中的audio converter把midi文件转换成字节数据。

然后把得到的东东copy到你的代码中。

2。关于wtk怎么用nokia的lib。

在nokia的开发工具目录

..\nokia\devices\nokia_7210_midp_sdk_v1_0\lib 或者

..\nokia\devices\series_60_midp_concept_sdk_beta_0_3_nokia_edition\lib

中找到class.zip。打开,找到sound.class,解压,应该可以得到com\nokia\ui\sound\sound.class,

然后把整个目录再打包成一个zip文件,放到你的项目的lib下。就行了。

或者直接一点,把class.zip直接方到lib下也可以。

用wtk编译打好package后,再打开你的jar文件,把包含sound.class的那个com文件夹

删除,最后再把jad中的jar-size根据实际情况改一下。

ok。

反正我就是这么做的,麻烦是很麻烦。但是实在是不想用jbuilder。

不知道还有没有更简单的办法。

*/

2。nokia 7610

/*此机型支持midp2.0*/

import javax.microedition.media.*;

public class myclass extends canvas ……

{

private player player = null;

……

private void fun()

{

……

playsound("kill.mid"); //此处调用播放函数

/*对于wtk2.1,kill.mid文件放在res目录下*/

}

protected void playsound(string source)

{

//创建播放器

try

{

if(player != null)

{

player.close();

player = null;

}

player = manager.createplayer(getclass().getresourceasstream("/"+source), "audio/midi");

player.addplayerlistener(this);

player.setloopcount(1);

player.realize();

player.start();

}

catch(exception pe)

{

pe.printstacktrace();

}

}

public void playerupdate(final player p, final string event, final object eventdata)

{

// queue a call to updateevent in the user interface event queue

display display = display.getdisplay(mycolorball);

display.callserially(new runnable() {

public void run()

{

updateevent(p, event, eventdata);

}

});

}

private void updateevent(player p, string event, object eventdata)

{

if (event == end_of_media)

{

p.close();

}

else if (event == closed)

{

p = null;

}

}

} //end myclass.

===================================================

/*

谈另外一个问题。

当切换出程序,游戏声音仍然继续播放的解决办法。

*/

//myclass里增加一个函数

void stoptone()

{

if(ksound != null)

{

ksound.stop();

}

}

//在midlet里的pauseapp()里添加如下代码

public void pauseapp()

{

if(myclass != null //播放声音的界面存在

&& sound_s == 1) //声音开关打开了

{

myclass.stoptone();

}

}

/*这还只是一个构想,过两天有时间了再上真机实测*/

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » J2ME播放声音的几个问题(nokia).-JSP教程,J2ME开发
分享到: 更多 (0)