- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 SoundPool
在我的 Activity 中播放声音,但我听不到声音。
private void beginGame(){
setContentView(R.layout.activity_splash1);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
AudioAttributes aa = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_GAME)
.build();
sp = new SoundPool.Builder()
.setMaxStreams(10)
.setAudioAttributes(aa)
.build();
}else{
sp = new SoundPool(10, AudioManager.STREAM_MUSIC,1);
}
sid = sp.load(Splash1.this,R.raw.bubble,1);
sp.play(sid,1,1,1,0,0.99f);
Thread loading = new Thread() {
public void run() {
try {
sleep(2000);
// TODO NEXT ACTIVITY
}
catch (Exception e) {
e.printStackTrace();
}
finally {
finish();
}
}
};
loading.start();
}
最佳答案
最初,在我从事的一个项目中,我有一个像下面的 [AnswerSound] 这样的类,所以我总是获取它的实例并根据需要调用任何方法。我希望你能看看并从中解脱出来。
public class AnswerSound {
private final float volume;
private Context context;
private SoundPool correctAnswerSoundPool;
private int correctAnswerSoundID;
boolean correctLoaded = false;
private SoundPool wrongAnswerSoundPool;
private int wrongAnswerSoundID;
boolean wrongLoaded = false;
public AnswerSound(Context context)
{
this.context = context;
correctAnswerSoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 10);
correctAnswerSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener(){
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
correctLoaded = true;
}
}
);
wrongAnswerSoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 10);
wrongAnswerSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener()
{
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
wrongLoaded = true;
}
}
);
//assign the sound IDS
correctAnswerSoundID = correctAnswerSoundPool.load(context, R.raw.correct_answer, 1);
wrongAnswerSoundID = wrongAnswerSoundPool.load(context, R.raw.wrong_answer_sound_effect, 2);
//getting the user sound settings
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
float actualVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
volume = actualVolume / maxVolume;
//then you can play the sound by checking if the sound is loaded
}
public void playCorrectAnswerSound()
{
if (correctLoaded) {
correctAnswerSoundPool.play(correctAnswerSoundID, volume, volume, 1, 0, 1f);
}
}
public void playWrongAnswerSound() {
if (wrongLoaded) {
wrongAnswerSoundPool.play(wrongAnswerSoundID, volume, volume, 1, 0, 1f);
}
}
关于android - SoundPool 不播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39961512/
我正在创建一个游戏,它有一系列声音可以在不同的 Activity 中播放。 在 onCreate 中加载声音会极大地阻碍 FPS,我想知道是否有更有效的加载声音的方法,或者创建一个可以由 Activi
我的应用程序中有一个调用异步任务的按钮。 此异步任务应在每个ProgressUpdate上播放音频文件。 到目前为止,我已经弄清楚了很多,但是我坚持这一点: 我打电话 this.str
我在使用 SoundPool 和 .OGG 文件播放循环声音时遇到问题。我设置了这个 HashMap 来查找与名称关联的声音并播放/停止它 public void playLoopSound(
当我尝试在应用程序中启动声音时,它无法播放。我已经看到该方法确实被调用,但是 soundPool 只是不想播放声音。该应用程序按预期启动,但是,它只是不想播放排队的声音。难道是我做错了什么?我尝试播放
我对java有点陌生,所以如果我犯了一个非常愚蠢的错误,请耐心等待。我正在尝试使用 SoundPool 在计数器应用程序上单击按钮时播放声音,但是单击任一按钮时应用程序崩溃。编译过程中没有出现错误。这
我正在使用SoundPool为了在我的应用程序中使用计时器播放一些声音。有谁知道是否有一个内置队列,它将对文件进行排队并仅在前面的文件完成后才播放它们? 我必须编写自己的 SoundPool 队列实现
我正在尝试播放原始文件夹中的 .mp3 声音,但不知何故无法播放。该代码确实执行了 play 方法,但它不产生声音。这是我的代码: public SoundPlayer(Context context
我有 8 种不同的 Soundpool 噪音,都有自己的搜索栏来控制音量。我有日志显示搜索栏中的数字正在按应有的方式变化,但音量在 90% 的时间里都没有变化(奇怪的是它偶尔会起作用)。 这是设置音量
我有一个 soundpool 对象和几个声音,但是一旦创建我就无法改变声音播放,例如循环次数、音量、停止等。 声明代码: public SoundPool sounds; public HashMap
第一次按下按钮停止声音。但是在那之后按下它没有任何效果。这是我的 Java 代码: public class App extends MultiTouchActivity { SoundPool sp
我正在尝试使用 SoundPool 在我的 Activity 中播放声音,但我听不到声音。 private void beginGame(){ setContentView(R.lay
我有一个按钮,当按下它时,SoundPool 会发出短促的声音效果。该文件是 16k mp3。 声音效果适用于数百次按钮点击,但在某些时候我收到此错误(并且不再为点击播放声音): E/AudioFli
我在onCreate() 方法中写了这段代码,但是没有播放! SoundPool mSound = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
我有 2 个 SoundPool 实例,如果我运行我的应用程序,soundPool2 运行与 soundPool1 相同的声音,我不知道为什么这播放相同的声音。谁能帮我找出问题所在? public c
我已经阅读了其他帖子,但我仍然不明白如何停止正在播放的声音,我希望当我按下一个按钮时播放声音,当我按下另一个按钮时我希望声音播放别玩了,如果有人能帮助我那就太好了。 最佳答案 您需要创建一个 Stre
我正在制作一款有很多声音的游戏,我使用 Soundpool 来播放它们。在几乎每一个声音中,我都创建了一个新线程,不会在主 UI 线程中加载太多。像这样: public void playSatell
所以我有 soundpool OnLoadCompleteListener,它有这个代码 mStreamId = soundPool.play(sampleId, 1, 1, 1, 0, 1f);我有
Android 的 soundpool.play [文档][1] 说“播放速率允许应用程序改变声音的播放速率(音调)。值 1.0 表示播放以原始频率播放。值为 2.0 表示播放速度加倍,值为 0.5
我正在制作一款应用,您可以在其中选择 1 到 4 种不同的声音并同时播放它们。一切正常,直到我想停止声音,功能停止同时仅适用于一种声音,这是代码(仅适用于 soundpool) sound = new
我是 Android 的新手,所以要温柔点! 我有以下代码,(我认为)应该只是播放“developersshort”。 public constructor(Context context){
我是一名优秀的程序员,十分优秀!