【发布时间】:2014-01-16 22:38:22
【问题描述】:
我正在使用此代码播放声音
final MediaPlayer mp = MediaPlayer.create(this, R.raw.sound);
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
它本身可以正常工作,但是在我添加了一个扩展 ImageView 的动画后出现了问题,该动画以大约 30 毫秒的间隔刷新(通过调用 handler.postDelayed)图像资源以创建动画。问题是当动画开始时,它会终止声音的播放。这是刷新 ImageView 的 Runnable 的代码。
private Runnable runnable = new Runnable () {
public void run() {
String name = "frame_" + frameCount;
frameCount ++;
int resId = mContext.getResources().getIdentifier(name, "drawable", mContext.getPackageName());
imageView.setImageResource(resId);
if(frameCount < totalFrameCount) {
mHandler.postDelayed(runnable, interval);
}
}
};
我也尝试使用调用 anmiationView.postInvalidate 的线程来执行动画,但是它有同样的问题。请帮忙。谢谢
编辑: 看起来问题是由于动画被调用的时间。之前我在活动的 onActivityResult 中调用它。看起来这不是打电话的正确地方。现在我将动画视图放在一个弹出窗口中并在那里播放,它可以正常工作。不知道具体原因。
【问题讨论】:
-
如果添加动画导致问题,然后发布该代码。
-
添加了代码。顺便说一句,我怀疑问题是由于应用程序正在读取声音文件和图像文件。但是图像文件太大了,我无法将它们全部加载到内存中。
-
是的..如果系统内存不足,它会终止并从其他地方回收它,例如媒体播放器。
标签: android audio android-animation android-mediaplayer