嘿伙计,所以当我运行我的应用程序时,它会进入主屏幕。从那里我点击了我的两个图像按钮之一和声音播放。我遇到的问题是,当我第一次按下按钮时,声音正常且响亮,按钮活动将我带到下一个布局。如果我从布局回到主屏幕并尝试再次按下按钮,我仍然可以听到声音,但几乎没有。有时几乎听不见。我怎样才能让声音始终保持一致?谢谢!
DragonFruitActivity.java
package com.Dragon_Fruit;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
public class DragonFruitActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ***BUTTON SOUND***//
final MediaPlayer buttonSound = MediaPlayer.create(
DragonFruitActivity.this, R.raw.button_click);
ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton);
playbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
arg0.setBackgroundResource(R.drawable.playbuttonselected);
// TODO Auto-generated method stub
if(buttonSound.isPlaying()) {
buttonSound.stop();
}
try {
buttonSound.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
buttonSound.start();
startActivity(new Intent(DragonFruitActivity.this,
playbutton.class));
}
});
ImageButton settingsbutton = (ImageButton) findViewById(R.id.settingsbutton);
settingsbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(buttonSound.isPlaying()) {
buttonSound.stop();
}
try {
buttonSound.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
buttonSound.start();
startActivity(new Intent(DragonFruitActivity.this,
settingsbutton.class));
}
});
}
}
答案 0 :(得分:0)
声音有多长?如果是非常短(<250ms),我在某些手机(摩托罗拉Atrix)上看到了一个问题,如果一段时间没有播放声音,音频驱动程序会进入睡眠状态。在这种情况下,由于音频驱动程序仍处于唤醒状态,因此当您第一次播放它们时,非常短的声音要么没有播放,要么非常安静。
我对此的解决方案,我一点也不高兴,是用几毫秒的低频声音(~20 Hz)填充声音的正面。
当您按下按钮时,您可以通过快速连续播放2-3次声音来验证这是否是您所看到的问题。如果后来响亮,那么这可能就是问题所在。
您可能还想考虑使用SoundPool
来播放小声音。它将声音加载到内存中,以便更快地播放。