标题:通过SoundPool模拟手机选择铃声
今天学习l明日科技老师讲的通过SoundPool模拟手机选择铃声,觉得很有意思,在这里分享一下基本流程(在这里打一下广告,明日科技)
标题 基本流程
1.布局界面
2.创建SoundPoll对象,并设置音频相关的属性
将要播放的音频流,保存到HashMap对象中
播放音频
代码如下:
import androidx.appcompat.app.AppCompatActivity;
import android.media.AudioAttributes;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取列表视图
ListView listView = (ListView) findViewById(R.id.listView);
/*******************创建SoundPool对象,并且设置音频属性************************/
AudioAttributes attr = new AudioAttributes.Builder() //设置音效相关属性
.setUsage(AudioAttributes.USAGE_GAME) // 设置音效使用场景
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) // 设置音效的类型
.build();
final SoundPool soundpool = new SoundPool.Builder() // 创建SoundPool对象
.setAudioAttributes(attr) // 设置音效池的属性
.setMaxStreams(10) // 设置最多可容纳10个音频流
.build();
/********************将要播放的音频保存到HashMap对象中****************************/
final HashMap<Integer, Integer> soundMap = new HashMap<Integer, Integer>();//创建一个HashMap对象
//添加音频
soundMap.put(0,soundpool.load(this,R.raw.cuckoo,1));
soundMap.put(1, soundpool.load(this, R.raw.chimes, 1));
soundMap.put(2, soundpool.load(this, R.raw.notify, 1));
soundMap.put(3, soundpool.load(this, R.raw.ringout, 1));
soundMap.put(4, soundpool.load(this, R.raw.bird, 1));
soundMap.put(5, soundpool.load(this, R.raw.water, 1));
soundMap.put(6, soundpool.load(this, R.raw.cock, 1));
/******************播放音频********************/
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
soundpool.play(soundMap.get(position), 1, 1, 0, 0, 1); //播放所选音频
}
});
}
}
完整文件
点此链接下载
注:第一次导出文件,配置可能有点问题
视图:
点击播放对应的铃声