app修订--如何播放音频

修订说明

  1. 感谢评论各位给我的建议,刚接手博客,很多地方还是不足。
  2. 评论给出的监听事件的写法和soundpool和mediaplayer不一样,这两点,都会在这篇博客做出修正
  3. 我觉得到这里交一个GUI演示框架应该就够了,后期会更新一下更深层次的,像底部栏、顶部栏涉及fragment这些,我做好了一个,但是还没想好怎么讲
  4. 最后声明这篇解决办法是我的朋友兼部门同事邱同学给的…原参考链接mediaplayer用法
  5. 源码完整博客源码

区别给Button一个按键音和播放音频

  1. soundpool: 是 Android 提供的一个API类,用来播放简短的音频,可以完成音频的播放、暂停、恢复及停止等操作。也可以加载多个音频资源,进行管理与播放,这样时间会简短。同时还具备调节左右声道的音量值、语速、优先级以及播放的次数等等。可参考soundpool
  2. 如果按照我最开始的博客写的app,你会发现,播放音效的时候只有几秒,对的,所以我们错了,hhh
  3. mediaplayer步骤
    1. 创建对象
    2. 找到音频位置
    3. 准备状态
    4. start

如何实现

  1. 布局文件跟之前稍有不同,加了停止键
  2. 布局
  3. 下面展示一些 内联代码片
    <Button
        android:id="@+id/btn_stop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="停止播放"
        android:textColor="@color/colorBlack" />

  1. java文件
    下面展示一些 内联代码片
package com.example.eva;

import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

import com.example.eva.util.ToastUtil;

import java.util.HashMap;

public class ListenActivity extends AppCompatActivity implements View.OnClickListener {

    private Button mBtnPlay;
    private Button mBtnPause;
    private Button mBtnStop;
    private Button mBtnListenSubmit;
    private MediaPlayer mPlayer = null;
    private boolean isRelease = true;   //判断是否MediaPlayer是否释放的标志

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listen);
        mBtnListenSubmit = findViewById(R.id.btn_listen_submit);
        mBtnListenSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ToastUtil.showMsg(ListenActivity.this,"提交成功");
            }
        });
        bindViews();

    }

    private void bindViews() {
        mBtnPlay = findViewById(R.id.btn_play);
        mBtnPause = findViewById(R.id.btn_pause);
        mBtnStop = findViewById(R.id.btn_stop);

        //这里的监听事件用了评论的一个办法,如果我没理解错的话,就是这个亚子去写
        mBtnPlay.setOnClickListener(this);
        mBtnPause.setOnClickListener(this);
        mBtnStop.setOnClickListener(this);
    }

    public void onClick(View v){
        switch (v.getId()){
            case R.id.btn_play:
                if(isRelease){
                    mPlayer = MediaPlayer.create(this,R.raw.listen);
                    isRelease = false;
                }
                mPlayer.start();//开始播放
                mBtnPlay.setEnabled(false);
                mBtnPause.setEnabled(true);
                mBtnStop.setEnabled(true);
                break;
            case R.id.btn_pause:
                mPlayer.pause();//暂停播放
                mBtnPlay.setEnabled(true);
                mBtnPause.setEnabled(false);
                mBtnStop.setEnabled(false);
                break;
            case R.id.btn_stop:
                //mPlayer.pause();
                mPlayer.reset();     //重置MediaPlayer
                mPlayer.release();   //释放MediaPlayer
                isRelease = true;
                mBtnPlay.setEnabled(true);
                mBtnPause.setEnabled(false);
                mBtnStop.setEnabled(false);

                break;
        }
    }


}

  1. 其中的监听事件也是和以往有些不同,用了监听接口
发布了3 篇原创文章 · 获赞 19 · 访问量 2826

猜你喜欢

转载自blog.csdn.net/weixin_43589465/article/details/105442929