Android实现播放音频

在Android平台上实现一个播放音频文件还是比较简单的,本文将使用Android权威指南的hellomoon例子来介绍下如何构建播放音频项目。首先新建一个Android项目,本例中使用Android studio为例。在向导结束后,会创建一个默认的activity,将此类 HelloMoonActivity,并修改集成基类 FragmentActivity,创建后并修改代码如下:

package com.example.hehao.hellomoon;

import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

public class HelloMoonActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_moon);
    }
}
通过这段代码,系统会载入activity_hello_moon布局文件,在这个布局文件中,我们只声名一个fragment,并制定name属性,这个属性实例化的fragment,此布局文件如下:





通过上面的布局文件,可以看出实例化了HelloMoonFragment类,接下来我们来编写此类文件,并创建此文件的布局类,由于要实现播放音频文件,所以布局文件应该有播放和停止按钮,此布局使用TableLayout布局,并使用了一个阿姆斯特朗登月的图片作为背景图片,此布局文件如下:



    
          
  
    

下面,需要我们编写相应的fragment类

package com.example.hehao.hellomoon;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

/**
 * Created by 浩 on 2016/12/26.
 */

public class HelloMoonFragment extends Fragment {
    private AudioPlayer mPlayer = new AudioPlayer();
    private Button mPlayButton;
    private Button mStopButton;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_hello_moon,container,false);

        mPlayButton =(Button)v.findViewById(R.id.hellomoon_playButton);
        mPlayButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                mPlayer.play(getActivity());
            }
        });
        mStopButton =(Button)v.findViewById(R.id.hellomoon_stopButton);
        mStopButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                mPlayer.stop();
            }
        });
        return v;
    }

    @Override
    public void onDestroyView() {
        super.onDestroy();
        mPlayer.stop();
    }
}

此fragment实例类中使用布局文件定义的播放和停止按钮,并添加相应的按钮监听事件,此处不再赘述,此类中使用另外定义的AudioPlayer类,此处贴出:

/**
 * Created by 浩 on 2016/12/26.
 */

public class AudioPlayer {
    private MediaPlayer mPlayer;

    public void stop(){
        if(mPlayer!=null){
            mPlayer.release();
            mPlayer=null;
        }
    }

    public void play(Context c){
        stop();
        mPlayer = MediaPlayer.create(c,R.raw.one_small_step);
        mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                stop();
            }
        });

        mPlayer.start();
    }
}








你可能感兴趣的:(Android,个人日志)