【发布时间】:2013-10-23 05:43:11
【问题描述】:
我使用媒体播放器在我的应用程序上播放声音。它工作得很好。
我正在一个单独的线程上播放声音。甚至想到,部分声音在活动出现之前播放。
我尝试在 onCreate 方法中播放声音。它没有用。 onStart 和 继续。它有一些问题。每次活动恢复时都会播放。 有时我什至没有触摸设备!
在活动出现后播放声音的最佳方式是什么?
public boolean played = false;
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if (!played)
Settings.playSound(dvd.titleImageName.replace("png", "mp3"), this);
played = true;
}
public static MediaPlayer mp = null;
public static void playSound(String fileName, Context c)
{
//MediaPlayer mp = MediaPlayer.create(c, resId);
if (mp!=null)
{
mp.stop(); //error
mp.reset();
mp.release();
}
mp = new MediaPlayer();
AssetFileDescriptor descriptor;
try {
descriptor = c.getResources().getAssets().openFd("sounds/" + fileName);
mp.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
mp.prepare();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (mp == null) return;
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
}
});
mp.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
}
});
mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
// TODO Auto-generated method stub
}
});
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mp.start();
}
}).start();
}
【问题讨论】:
-
你能提供你的代码吗?