android 游戏开发之背景音乐的应用

在前面写到了一个即时音效的应用,主要应用在短了7s的声音,对于背景音乐这种对延时不是很严格的游戏来说,而又对音乐长度有要求的应用我们用的还是地MediaPlayer这个类里的东西。我们现在使用的音乐播放器大多也是用这个来实现的。所以游戏背景音乐对这个来说也是学习一下的。

 

初始代的步骤:

1、用MediaPlayer new一个对象出来

2、设置这个对象要播放的文件路径

3、调用用prepare()方法缓冲

4、调用.start()方法开始播放

5、播放过程可以调用stop()方法停止播放

6、播放过程也可以调用pasued()方法来暂停播放

 

注意:这里如果调用stop()方法停止播放之后,要重新返回到prepare()才能再次播放。

 

简单的播放代码如下:

package com.example.mediaplayer;

import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    // 按钮
    private Button play_music;
    private Button stop_music;
    private Button pasued_music;
    private Button plus;
    private Button dec;
    private MediaPlayer mp; //MediaPlayer引用
    private AudioManager am;//AudioManager引用
    private int max;//最大音量
    private int current;//当前音量
    private int stepVolume;//一次增加的音量

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 按钮的初始化
        play_music = (Button) findViewById(R.id.play_music);
        stop_music = (Button) findViewById(R.id.stop_music);
        pasued_music = (Button) findViewById(R.id.pause_music);
        plus = (Button) findViewById(R.id.plus);
        dec = (Button) findViewById(R.id.dec);
        
        mp=new MediaPlayer();
        try {
            mp.setDataSource("/sdcard/music/test.mp3");//设置路径
            mp.prepare();//缓冲
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //调用声音
        am=(AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
        max=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        
        stepVolume=max/8;
        
        // 按钮监听器
        play_music.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                mp.start();
                Toast.makeText(getApplicationContext(), "音乐开始播放!", Toast.LENGTH_SHORT).show();
            }
        });
        pasued_music.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                mp.pause();
                Toast.makeText(getApplicationContext(), "音乐暂停播放!", Toast.LENGTH_SHORT).show();
                
            }
        });
        stop_music.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                mp.stop();
                Toast.makeText(getApplicationContext(), "音乐停止播放!", Toast.LENGTH_SHORT).show();
                
            }
        });
        plus.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                current=am.getStreamVolume(AudioManager.STREAM_MUSIC);
                int tempVolume=current+stepVolume;
                current=tempVolume<max?tempVolume:max;
                am.setStreamVolume(AudioManager.STREAM_MUSIC, current, AudioManager.FLAG_PLAY_SOUND);
                Toast.makeText(getApplicationContext(), "增加音量!", Toast.LENGTH_SHORT).show();
            }
        });
         dec.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    current=am.getStreamVolume(AudioManager.STREAM_MUSIC);
                    int tempVolume=current-stepVolume;
                    current=tempVolume>0?tempVolume:0;
                    am.setStreamVolume(AudioManager.STREAM_MUSIC, current, AudioManager.FLAG_PLAY_SOUND);
                    Toast.makeText(getApplicationContext(), "减少音量!", Toast.LENGTH_SHORT).show();
                }
            });

    }

}

运行界面如下:

注意:要运行这个代码要先在

/sdcard/music/这个文件夹中放入test.mp3这个文件才能播放成功。还有一个切点就是这个播放音乐时,如果你停止了音乐,然后再点开始播放时就不起作用了,
什么原因在前面已经说过了。就是要重新缓冲一下才能播放。这个程序我还没有改进,先写到这里吧。

 

posted @ 2012-09-08 16:54  春天的故事  阅读(4126)  评论(1编辑  收藏  举报