package com.zzk.a1503soundpool;
import androidx.appcompat.app.AppCompatActivity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class MainActivity extends AppCompatActivity {
int[] soundResId = {R.raw.fly, R.raw.fire, R.raw.explode}; // 音频资源
SoundPool soundPool;
int[] soundId; // soundPool为每个装入的音频资源生成的SoundID
int flyStreamId; // soundPool播放fly音频时使用的Channel,通过Channel控制音效播放
PlayThread playThread; // 因为SoundPool的循环播放功能无效,所以用Thread来实现循环播放
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
setContentView(ll);
soundId = new int[soundResId.length];
soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 100); // 创建SoundPool对象
for(int i=0; i<soundResId.length; i++)
soundId[i] = soundPool.load(this, soundResId[i], 1); // 依次载入音频资源,生成的SoundID存入soundId数组,播放时使用
Button btnFire = new Button(this);
btnFire.setText("Fire");
ll.addView(btnFire);
btnFire.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
soundPool.play(soundId[1], 1, 1, 1, 0, 1); // 播放fire音频,其SoundID存放在soundId[1]
}
});
Button btnExplode = new Button(this);
btnExplode.setText("Explode");
ll.addView(btnExplode);
btnExplode.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
soundPool.play(soundId[2], 1, 1, 1, 0, 1); // 播放explode音频,其SoundID存放在soundId[2]
}
});
Button btnStartFly = new Button(this);
btnStartFly.setText("Start Fly");
ll.addView(btnStartFly);
btnStartFly.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
flyStreamId = soundPool.play(soundId[0], 1, 1, 1, -1, 1f); // 控制循环播放的参数无效
//playThread = new PlayThread(soundId[0], 3000); // 启用一个线程,每隔3000毫秒播放一次fly音频,其长度大约为3000毫秒
//playThread.start();
}
});
Button btnStopFly = new Button(this);
btnStopFly.setText("Stop Fly");
ll.addView(btnStopFly);
btnStopFly.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
soundPool.stop(flyStreamId);
//playThread.stopPlay();
}
});
}
@Override
protected void onDestroy(){
super.onDestroy();
soundPool.release();
}
class PlayThread extends Thread {
boolean flag;
int soundId;
int streamId;
int duration;
public PlayThread(int sId, int d){
soundId = sId;
duration = d;
}
public void run(){
flag = true;
while(flag){
streamId = soundPool.play(soundId, 1, 1, 1, 0, 1f); // 播放音频soundId
try {
sleep(duration); // 等待该音频的播放时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void stopPlay(){
soundPool.stop(streamId); // 立即停止SoundPool的streamId频道的播放
flag = false; // 停止播放循环
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Android多媒体功能开发-使用SoundPool播放音频的例子
共115个文件
xml:70个
webp:10个
properties:7个
需积分: 0 1 下载量 165 浏览量
2023-11-15
15:33:24
上传
评论
收藏 326KB ZIP 举报
温馨提示
代码中使用SoundPool播放多个音效。
资源推荐
资源详情
资源评论
收起资源包目录
Android多媒体功能开发-使用SoundPool播放音频的例子 (115个子文件)
gradlew.bat 3KB
executionHistory.bin 601KB
fileHashes.bin 67KB
outputFiles.bin 21KB
resourceHashesCache.bin 18KB
last-build.bin 1B
.gitignore 225B
.gitignore 50B
.gitignore 6B
build.gradle 1022B
settings.gradle 330B
build.gradle 291B
gradlew 6KB
1503SoundPool.app.iml 9KB
1503SoundPool.iml 921B
gradle-wrapper.jar 58KB
MainActivity.java 4KB
ExampleInstrumentedTest.java 758B
ExampleUnitTest.java 383B
buildOutputCleanup.lock 17B
checksums.lock 17B
executionHistory.lock 17B
dependencies-accessors.lock 17B
fileHashes.lock 17B
fire.ogg 18KB
fly.ogg 17KB
explode.ogg 14KB
proguard-rules.pro 750B
gradle.properties 1KB
local.properties 425B
gradle-wrapper.properties 236B
cache.properties 51B
gc.properties 0B
gc.properties 0B
gc.properties 0B
ic_launcher_round.webp 8KB
ic_launcher_round.webp 6KB
ic_launcher_round.webp 4KB
ic_launcher.webp 4KB
ic_launcher_round.webp 3KB
ic_launcher.webp 3KB
ic_launcher.webp 2KB
ic_launcher_round.webp 2KB
ic_launcher.webp 1KB
ic_launcher.webp 982B
workspace.xml 6KB
ic_launcher_background.xml 5KB
ic_launcher_foreground.xml 2KB
Gradle__androidx_test_espresso_espresso_idling_resource_3_4_0_aar.xml 1KB
Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml 1KB
Gradle__androidx_test_espresso_espresso_core_3_4_0_aar.xml 1KB
Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml 1KB
Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml 1KB
Gradle__com_google_android_material_material_1_4_0_aar.xml 1015B
Gradle__androidx_transition_transition_1_2_0_aar.xml 1013B
Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml 1013B
Gradle__androidx_appcompat_appcompat_1_3_0_aar.xml 1004B
Gradle__androidx_activity_activity_1_2_3_aar.xml 995B
Gradle__androidx_fragment_fragment_1_3_4_aar.xml 995B
Gradle__androidx_test_monitor_1_4_0_aar.xml 981B
Gradle__androidx_test_ext_junit_1_1_3_aar.xml 978B
Gradle__androidx_test_runner_1_4_0_aar.xml 974B
Gradle__androidx_print_print_1_0_0_aar.xml 968B
Gradle__androidx_core_core_1_5_0_aar.xml 959B
Gradle__androidx_test_core_1_4_0_aar.xml 958B
Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml 944B
Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml 913B
Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml 912B
Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml 908B
Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml 904B
Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml 902B
Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml 898B
Gradle__androidx_appcompat_appcompat_resources_1_3_0_aar.xml 878B
Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml 877B
Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml 874B
Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml 872B
Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml 866B
Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml 858B
Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml 850B
Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml 842B
Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml 842B
Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml 836B
Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml 836B
themes.xml 835B
themes.xml 835B
Gradle__androidx_customview_customview_1_0_0_aar.xml 826B
Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml 825B
Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml 818B
Gradle__androidx_test_services_storage_1_4_0_aar.xml 814B
Gradle__androidx_cardview_cardview_1_0_0_aar.xml 810B
AndroidManifest.xml 797B
Gradle__androidx_loader_loader_1_0_0_aar.xml 794B
Gradle__org_hamcrest_hamcrest_integration_1_3.xml 789B
activity_main.xml 780B
gradle.xml 765B
Gradle__org_hamcrest_hamcrest_library_1_3.xml 760B
Gradle__org_hamcrest_hamcrest_core_1_3.xml 740B
Gradle__com_squareup_javawriter_2_1_1.xml 733B
Gradle__javax_inject_javax_inject_1.xml 719B
Gradle__junit_junit_4_13_2.xml 677B
共 115 条
- 1
- 2
资源评论
nanoage
- 粉丝: 42
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功