SoundManager.java 3.16 KB
package com.lotus.town.sound;

import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.AudioManager;
import android.media.MediaPlayer;

import com.lotus.town.utils.SharedPrefConfig;
import com.sdk.Sdk;

import java.io.IOException;

public class SoundManager {
    private MediaPlayer mPowerCollectPlayer;
    private MediaPlayer mHomePlayer;
    private boolean isHomePlayer = false;
    private boolean isSoundEnable;
    private static SoundManager sManager = new SoundManager();

    public static SoundManager getInstance(){
        if(sManager == null){
            sManager = new SoundManager();
        }
        return sManager;
    }

    private SoundManager(){
        isSoundEnable = SharedPrefConfig.getInstance(Sdk.app()).isSoundEnable();
    }

    public void stopAll(){
        isSoundEnable = false;
        SharedPrefConfig.getInstance(Sdk.app()).soundOff();
        stopPowerCollect();
        homeStop();
    }

    public void start(){
        isSoundEnable = true;
        SharedPrefConfig.getInstance(Sdk.app()).soundOn();
        homePlayer();
    }
    private abstract class CompleteListener{
        public abstract void onComplete();
    }
    private MediaPlayer startPlay(String name, boolean loop, final CompleteListener listener){
        if(!isSoundEnable){
            return null;
        }
        MediaPlayer player = null;
        try {
            player = new MediaPlayer();
            AssetManager assetManager = Sdk.app().getAssets();
            AssetFileDescriptor fileDescriptor = assetManager.openFd(name);
            player.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(),
                    fileDescriptor.getStartOffset());
            player.prepare();
            player.setLooping(loop);
            player.start();
            if(listener != null) {
                player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mediaPlayer) {
                        listener.onComplete();
                    }
                });
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return player;
    }

    public void jumpMoney(){

        startPlay("jump_money.mp3",false,null);
    }

    public void jumpLucky(){

        startPlay("jump_lucky.mp3",false,null);
    }

    public void jumpBomp(){
        startPlay("jump_bomp.mp3",false,null);
    }

    public void homePlayer(){
        if(!isSoundEnable|| isHomePlayer){
            return;
        }
        isHomePlayer = true;
        mHomePlayer = startPlay("home.mp3",true,null);
    }

    public void homeStop(){
        if(mHomePlayer != null) {
            mHomePlayer.stop();
            isHomePlayer = false;
            mHomePlayer = null;
        }
    }

    public void playerPowerCollect(){
        mPowerCollectPlayer = startPlay("power_collect.mp3",true,null);
    }
    public void stopPowerCollect(){
        if(mPowerCollectPlayer != null){
            mPowerCollectPlayer.stop();
            mPowerCollectPlayer = null;
        }
    }
}