android游戏背景音乐
2016-08-16 12:30
459 查看
在“开始”按钮上加事件
说明:面板上有一个“开始”按钮 点击“开始”:游戏开始,音乐开始,按钮value值变为“暂停”; 点击“暂停”:游戏立刻停止,音乐停止,按钮value值变为“继续”; 点击“继续”:游戏继续,音乐继续,按钮value值变为“暂停”。
final Button btnStart=(Button)findViewById(R.id.button_start); btnStart.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { if(btnStart.getText().equals("开始")){ //点开始,程序开始运行,文本变为暂停 tetrisView.setRunDrop(true);//方块开始下落 btnStart.setText("暂停");//按钮值变为"暂停" if(tetrisView!=null) tetrisView.init();//面板初始化 String path="/sdcard/Music/music1.mp3";//加载音乐,路径为自己音乐在手机中的位置 try { player.setDataSource(path); player.prepare(); player.setLooping(true); player.start(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else if(btnStart.getText().equals("暂停")){ //点暂停,程序暂停,文本变为继续 tetrisView.setRunDrop(false);//方块不下落 length=player.getCurrentPosition();//获取音乐的播放位置 player.pause();//音乐停止 btnStart.setText("继续");//按钮值改为"继续" }else if(btnStart.getText().equals("继续")){ //点继续,程序运行 player.seekTo(length);//获取音乐的播放位置 player.start();//开始播放音乐 tetrisView.setRunDrop(true);//方块下落 btnStart.setText("暂停");//按钮值变为"暂停" } } });
参考大神的细致代码讲解(http://blog.csdn.net/ddna/article/details/5176233):
Android MediaPlayer基本使用方式
使用MediaPlayer播放音频或者视频的最简单例子:JAVA代码部分:
public class MediaPlayerStudy extends Activity { private Button bplay,bpause,bstop; private MediaPlayer mp = new MediaPlayer(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bplay = (Button)findViewById(R.id.play); bpause = (Button)findViewById(R.id.pause); bstop = (Button)findViewById(R.id.stop); bplay.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { try { mp.setDataSource("/sdcard/test.mp3"); mp.prepare(); mp.start(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } mp.setOnCompletionListener(new OnCompletionListener(){ @Override public void onCompletion(MediaPlayer mp) { mp.release(); } }); } }); bpause.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if(mp != null){ mp.pause(); } } }); bstop.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if(mp != null){ mp.stop(); } } }); } @Override protected void onDestroy() { if(mp != null) mp.release(); super.onDestroy(); } }
布局文件:main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:text="play" android:id="@+id/play" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <Button android:text="pause" android:id="@+id/pause" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </LinearLayout> ``` 程序说明: 这个例子只是描述了MediaPlayer的基本使用步骤和方式,MediaPlayer还有多种使用方式和方法,并不只局限于例子所介绍的一种。具体来看: 1)如何获得MediaPlayer实例: 可以使用直接new的方式: MediaPlayer mp = new MediaPlayer(); 也可以使用create的方式,如: MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了 2) 如何设置要播放的文件: MediaPlayer要播放的文件主要包括3个来源: a. 用户在应用中事先自带的resource资源 例如:MediaPlayer.create(this, R.raw.test); b. 存储在SD卡或其他文件路径下的媒体文件 例如:mp.setDataSource("/sdcard/test.mp3"); c. 网络上的媒体文件 例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3"); MediaPlayer的setDataSource一共四个方法: setDataSource (String path) setDataSource (FileDescriptor fd) setDataSource (Context context, Uri uri) setDataSource (FileDescriptor fd, long offset, long length) 3)对播放器的主要控制方法: Android通过控制播放器的状态的方式来控制媒体文件的播放,其中: prepare()和prepareAsync() 提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。 start()是真正启动文件播放的方法, pause()和stop()比较简单,起到暂停和停止播放的作用, seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。 release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。 reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。 4)设置播放器的监听器:MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行监听,以期及时处理各种情况,如: ``` setOnCompletionListener(MediaPlayer.OnCompletionListener listener),setOnErrorListener(MediaPlayer.OnErrorListener listener)
等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。
相关文章推荐
- android 游戏开发之背景音乐
- Android游戏开发之处理音乐与音效太鼓达人游戏原理(二十一)
- android 服务的应用,在Activity中实现背景音乐播放
- android游戏中关卡式背景是怎么做出来的
- android 服务的应用,在Activity中实现背景音乐播放
- Android实战打飞机游戏之无限循环的背景图(2)
- Android游戏开发之旅(十六) 异步音乐播放
- Android背景音乐开关示例
- Android背景音乐功能的实现
- android 服务的应用,在Activity中实现背景音乐播放
- Android游戏开发基础part8--游戏音乐与音效
- Android游戏开发---2D游戏中背景的绘制
- Android 应用播放背景音乐
- Android(java)学习笔记181:Android 服务的应用,在Activity中实现背景音乐播放
- Android游戏开发---2D游戏中背景的绘制
- Android游戏开发之处理音乐与音效太鼓达人游戏原理(十一)
- android游戏开发一:背景图片的移动
- Android游戏开发之处理音乐与音效太鼓达人游戏原理
- android 游戏 实战打飞机游戏 实现无限循环的背景图(2)
- Android游戏开发指南<一>背景地图