app修订--如何播放音频

修订说明

  1. 感谢评论各位给我的建议,刚接手博客,很多地方还是不足。
  2. 评论给出的监听事件的写法和soundpool和mediaplayer不一样,这两点,都会在这篇博客做出修正
  3. 我觉得到这里交一个UI演示框架应该就够了,后期会更新一下更深层次的,像底部栏、顶部栏涉及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. 其中的监听事件也是和以往有些不同,用了监听接口
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值