0
在我的活動中,有一個定時器每秒發送一條消息給一個處理程序,它會改變圖像。只要定時器中斷MediaPlayer
MediaPlayer.create(this, R.raw.voice).start();
在一個XPERIA弧(4.0.4的Android)的聲音不完全播放和:
每次用戶點擊的聲音被使用此代碼在活動的onClickListner功能發揮的圖像計時器觸發它停止。如果我禁用了計時器,那就沒有問題了。
在HTC Legend(Android 2.2)上沒有問題。聲音完全播放。
我找不出這個問題。
public class ActivityTest extends Activity implements View.OnClickListener, ViewSwitcher.ViewFactory
{
ImageSwitcher switcher;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test_listen);
switcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
switcher.setFactory(this);
switcher.setOnClickListener(this);
final Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switcher.setImageDrawable(getResources().getDrawable(R.drawable.image));
// if this line is commented it works fine
}
};
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run()
{
handler.sendEmptyMessage(0);
}
}, 0, 1000);
}
@Override
public void onClick(View view)
{
MediaPlayer.create(this, R.raw.voice).start();
}
@Override
public View makeView()
{
ImageView image = new ImageView(this);
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
image.setLayoutParams(new ImageSwitcher.LayoutParams(ImageSwitcher.LayoutParams.FILL_PARENT, ImageSwitcher.LayoutParams.FILL_PARENT));
return image;
}
}
解決方案-------------------------------------
我將MediaPlayer的聲明移到了課堂上,並解決了問題。
MediaPlayer mp;
@Override
public void onClick(View view)
{
mp =MediaPlayer.create(this, R.raw.voice);
mp.start();
}
我不知道爲什麼以前的代碼工作在2.2但不是4.無論如何它的工作。
SoundPool不播放任何內容。這是mp3。 Soundpool支持mp3嗎?它在播放時返回0。 – Ali 2013-04-30 20:36:08
是soundpools播放mp3的我剛剛更新了我的答案。 – j2emanue 2013-04-30 21:28:45