博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 声音播放 mediaplay soundpool
阅读量:6758 次
发布时间:2019-06-26

本文共 3630 字,大约阅读时间需要 12 分钟。

首先在res文件夹内新建raw文件夹,并在raw内存放声音文件。

mediaplay方法:

在onCreate(Bundle saveInstanceState)方法内添加

“MediaPlay mp=MediaPlayer.create(context,R.raw.backsound);”//用于初始化mediapaly

MediaPlayer.create(Context context, int resid)

MdeiaPlayer.create(Context context,Uri uri)

然后

mp.start();//用mediaplay播放声音

mp.pause();//停止播放

mp.isPlaying();//用于判断mediaplay是否正在播放

 

soundpool方法

常把声音放在hashmap内

SoundPool.play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate);

rate为播放速率,最慢为0.5,最快为2

loop为播放次数

package com.example.sound;import java.util.HashMap;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.SoundPool;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener {    Button bt1,bt2,bt3,bt4;    TextView tv;    MediaPlayer mp;    SoundPool sp;    HashMap
spm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initSounds(); //初始化声音 init(); //控件引用与监听 } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } void init() { tv=(TextView)findViewById(R.id.textView1); bt1=(Button)findViewById(R.id.button1); bt2=(Button)findViewById(R.id.button2); bt3=(Button)findViewById(R.id.button3); bt4=(Button)findViewById(R.id.button4); bt1.setOnClickListener(this); bt2.setOnClickListener(this); bt3.setOnClickListener(this); bt4.setOnClickListener(this); } void initSounds() //初始化声音 { mp=MediaPlayer.create(this,R.raw.futa); //初始化MediaPlayer sp=new SoundPool(4,AudioManager.STREAM_MUSIC,100); spm=new HashMap
(); spm.put(1,sp.load(this,R.raw.ding,1)); } void playsound(int sound,int loop) //用soundpool播放声音 { AudioManager mgr=(AudioManager)this.getSystemService(Context.AUDIO_SERVICE); float streamVolumeCurrent=mgr.getStreamVolume(AudioManager.STREAM_MUSIC); float streamVolumeMax=mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC); float volume=streamVolumeCurrent/streamVolumeMax; sp.play(spm.get(sound),volume,volume,1,loop,1f); //播放声音 } @Override public void onClick(View v) { //实现各单击事件 // TODO Auto-generated method stub switch(v.getId()) { case R.id.button1: { tv.setText("使用MediaPlayer播放声音"); if(!mp.isPlaying()) //如果现在没有音乐正在播放 {mp.start();} //播放音乐 break; } case R.id.button2: { tv.setText("暂停MediaPlayer播放声音"); if(mp.isPlaying()) //如果现在没播放音乐 {mp.pause();} //停止音乐 break; } case R.id.button3: { tv.setText("使用soundPool播放声音"); this.playsound(1, 0); //播放音乐 break; } case R.id.button4: { tv.setText("暂停soundPool播放声音"); sp.pause(1); //暂停音乐 break; } } }}

 

转载于:https://www.cnblogs.com/lexious/p/3894101.html

你可能感兴趣的文章
eclipse常用的快捷键 大全
查看>>
Redis 3.0 新特性,支持redis 集群
查看>>
POE系统构成
查看>>
oracle数据库安装
查看>>
django + nginx + uwsgi部署
查看>>
Linux下安装Emacs
查看>>
操作系统
查看>>
vuejs学习之 项目打包之后的首屏加载优化
查看>>
三十、小程序解析HTML(对富文本返回数据的处理)
查看>>
利用YUM搭建DNS
查看>>
好详细啊saltsatck超全配置
查看>>
安装LAMP环境遇到Sorry, I cannot run apxs
查看>>
centos7双网卡bond失败
查看>>
JNI AES文件及字符串加解密
查看>>
APUE读书笔记-16网络通信-01简介
查看>>
apache站点稍大文件不完整原因及解决
查看>>
python的reduce函数
查看>>
细读shell-6
查看>>
ubuntu11.10安装php mysql wordpress
查看>>
一、2 基于wsgiref定义自己的web框架
查看>>