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這個文件才能播放成功。還有一個切點就是這個播放音樂時,如果你停止了音樂,然后再點開始播放時就不起作用了,
什么原因在前面已經說過了。就是要重新緩沖一下才能播放。這個程序我還沒有改進,先寫到這里吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM