`

j2me工具类:声音播放类SoundUtil

    博客分类:
  • j2me
阅读更多
用法:
将需要播放的音乐都罗列在name,type数组中,需要的时候像下面这样调用:
SoundUtil sound=new SoundUtil();
sound.start(musicIndex);

import java.io.IOException;
import java.io.InputStream;

import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.ToneControl;
import javax.microedition.media.control.VolumeControl;


public class SoundUtil {
	
	String[] name={"rank001.mid","rank002.mid","rank003.mid"};
	String[] type={"audio/midi","audio/midi","audio/midi"};//audio/x-wav
	Player p=null;
	VolumeControl vc;
	int level=50;
	SoundUtil(){
		
	}

	private void init(int index){
		InputStream is=this.getClass().getResourceAsStream("/"+name[index]);
		try {
			p=Manager.createPlayer(is, type[index]);
			p.realize();
			p.prefetch();
			p.setMediaTime(0);
			p.setLoopCount(-1);
			vc=(VolumeControl)p.getControl("VolumeControl");
			if(vc!=null)
				vc.setLevel(getLevel());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MediaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void play(int index){
		close();
		init(index);
		start();
	}
	public void start(){
		if(p!=null){
			try {
				p.start();
			} catch (MediaException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	public void stop(){
		if(p!=null){
			try {
				p.stop();
			} catch (MediaException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	public void rePlay(int index){
		play(index);
	}
	public void close(){
		if(p!=null){
			p.close();
			p=null;
		}
	}
	//增加、减小音量
	public void controlVolume(boolean isHigher) {
		if (vc != null) {
			if (isHigher) {//响
				level += 20;
				if (level > 100)
					level = 100;
			} else {
				level -= 20;
				if (level < 0)
					level = 0;
			}
			vc.setLevel(level);
		}
	}
	
	//静音\非静音
	public void quitVolume(boolean isQuit) {
		if (vc != null){
			if(isQuit){
				vc.setLevel(0);
			}else{
				vc.setLevel(level);
			}
		}
	}
	
	public int getLevel(){
		return level;
	}
	
	//简单的播放一个音调
	public void playTone(){
		try {
			Manager.playTone(ToneControl.C4,1000,100);
		} catch (MediaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

分享到:
评论

相关推荐

    J2ME游戏编程:TP319:G899 W511.iso

    J2ME游戏编程:TP319:G899 W511.iso 随书光盘,欢迎大家下载 大家共享^A^

    J2ME实用教程:从入门到精通的所有ppt

    10. **调试与优化**:掌握使用J2ME的调试工具和技巧,以及如何优化代码以提高性能和电池寿命。 教程中的每个`.rar`文件可能代表不同的章节或主题,例如,日期可能是文件创建或更新的日期。通过逐步学习这些PPT,你...

    郭可华J2ME实战教程:ppt和对应源码

    **J2ME简介** J2ME(Java 2 Micro Edition)是Java平台的一个子集,专为嵌入式设备和移动设备设计。它提供了一种轻量级的、高效的环境来开发应用程序,如手机、电视、冰箱等智能家电以及各种手持设备。J2ME由一组...

    J2ME成品游戏:地心寻宝源码

    这个游戏是基于是男人就下100层的理念,这是本人在j2me开发的学习过程中的一点心得体会。本资源用JBuilder可直接打开,并且注释齐全。其中还有打好的jar包,可直接放入手机运行,分辨率为240*320,提供给大家学习...

    J2ME游戏代码:俄罗斯方块

    /* * 一个简单的俄罗斯方块游戏代码,代码中主要包含3个类: *TerrisMIDlet——MIDlet类 *GameCanvas——游戏界面类 *GameEngine——游戏逻辑类 *已经使用WTK2.5.2运行通过. */

    Android-development.rar_android_game android J2ME_site:en.pudn.c

    "android_game android J2ME site:en.pudn.c"这部分标签揭示了该资源可能包含的内容,即关于Android游戏开发的知识,以及可能与J2ME(Java 2 Micro Edition)平台的迁移或转换相关的指导。 【描述】提到的“$兩小時...

    分享:J2ME游戏代码(代码已经初级优化)

    分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME...

    J2ME学习——如何播放声音

    在Java 2 Micro Edition (J2ME)环境中,开发移动应用时可能会涉及到播放声音的需求。J2ME 提供了 Mobile Media API (MMAPI) 来处理多媒体内容,包括音频。MMAPI 是MIDP (Mobile Information Device Profile) 1.0 的...

    jbuilder 2006 j2me ALERT: java/lang/ClassFormatError: Bad version information.

    这个错误表明Java虚拟机(JVM)遇到了一个它无法识别或者处理的类文件版本。在JBuilder 2006环境下开发J2ME应用时,如果你遇到了这个错误,可能是由于以下原因导致的: 1. **JDK版本不匹配**:JBuilder 2006可能与...

    J2ME工具篇.rar

    **J2ME(Java 2 Micro Edition)工具篇** J2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,如手机、PDA等。开发J2ME应用程序时,选择合适的工具至关重要,这些工具能够提升开发效率,简化调试过程,并...

    J2ME教材:J2ME&Gaming中文版

    3. **MIDP API**:这是J2ME游戏开发的关键,包括Canvas类用于绘制游戏画面,Graphics对象进行图形绘制,以及键盘和触摸事件的处理。 4. **用户界面(UI)设计**:MIDP提供了一些基本的UI组件,如ChoiceGroup、...

    开发中j2me与android的比较.pdf

    - **J2ME**:通过 `Canvas` 类的 `getHeight()` 和 `getWidth()` 方法获取。 - **Android**:通过 `WindowManager.getDefaultDisplay()` 获取屏幕对象,然后调用 `getWidth()` 和 `getHeight()` 方法获取屏幕宽度...

    j2me的一些工具类

    "j2me的一些工具类"这个压缩包可能包含了一些开发者自定义的实用工具类,这些类可以提高代码的复用性和可维护性。 首先,让我们了解一下J2ME的基本结构。J2ME通常由配置(Configuration)、特性(Profile)和包...

    J2ME-Game:简单的J2ME游戏

    1. **Canvas类**:J2ME游戏通常基于Canvas类构建,这是一个可以进行图形绘制的空白画布。开发者可以重写Canvas的`paint()`方法来实现游戏的渲染。 2. **Graphics对象**:在Canvas上绘图使用Graphics对象,它可以...

    J2ME源码:连连看

    - MIDP GUI组件:J2ME中的用户界面主要通过Canvas类构建,Canvas是绘制自定义图形的基础类。此外,可能还会用到Form和Item等组件。 - LCDUI(Limited Conformance Display User Interface):这是MIDP的一部分,...

    j2me大富翁游戏声音

    1. **J2ME音频API**:J2ME提供了两种主要的音频API来处理游戏声音:MIDP的javax.microedition.media.Player类和M3G的javax.microedition.media.control.SoundClipControl类。Player类适用于播放音乐背景,可以支持...

    ToolME-0.2.0.zip j2me开发工具类

    【ToolME-0.2.0.zip】是一个包含J2ME(Java 2 Micro Edition)开发工具类的压缩包。J2ME是Java平台的一个子集,主要用于移动设备、嵌入式系统等资源有限的环境。这个压缩包的版本号为0.2.0,表明这可能是该工具类库...

    J2ME记录库工具类RecordStoreUtil

    实用J2ME记录库工具类,在很多代码中都要用到

    J2ME源码:五子棋

    J2ME中的键盘和触摸事件处理通常基于 MIDP 的Command和GameCanvas类。 3. **游戏逻辑**:实现五子棋的核心算法,包括检查棋局合法性(确保没有棋子在同一位置上)、判断胜负(检查是否有五个连续的棋子)以及AI...

    j2me-engine:J2ME 平台的游戏引擎

    总的来说,j2me-engine是J2ME平台上开发游戏的得力工具,它降低了开发门槛,提高了开发效率,使开发者能够专注于创造有趣且引人入胜的游戏体验。虽然现代移动设备更多地转向了更强大如Android和iOS的平台,但对J2ME...

Global site tag (gtag.js) - Google Analytics