我可以使用android的MediaPlayer对象播放mp3文件。但我想在毫秒范围内播放,例如在30000毫秒到40000毫秒之间(仅10秒)。我怎样才能做到这一点?
目前,以下代码就是我所拥有的,
private MediaPlayer mPlayer;
public void play() {
try {
mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.mp3_file);
if (mPlayer != null) {
int currentPosition = mPlayer.getCurrentPosition();
if (currentPosition + 30000 <= mPlayer.getDuration()) {
mPlayer.seekTo(currentPosition + 30000);
} else {
mPlayer.seekTo(mPlayer.getDuration());
}
mPlayer.start();
}
}
catch(Exception e) {
}
}
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
您可以使用以下方法:
public int getCurrentPosition ()
获取当前时间,以milSeconds为单位,可能在每1000 milSeconds运行一次的Handler中并测试以查看:
if(mPlayer.getCurrentPosition() >= (mPlayer.getDuration + 40000));
当您使用它时,请不要忘记release媒体文件:
public void release();
mPlayer.release();
释放与此MediaPlayer对象关联的资源。它是 当你完成使用时,我们认为这是一种很好的做法 MediaPlayer。特别是,每当一个应用程序的活动 暂停(调用其onPause()方法)或停止(其onStop() 方法被调用),应该调用此方法来释放 MediaPlayer对象,除非应用程序有特殊需要保留 周围的物体。除了不必要的资源(如 正在保持的内存和编解码器实例,无法调用它 如果不再需要MediaPlayer对象,可以立即使用方法 也导致移动设备的持续电池消耗,以及 如果没有多个实例,则其他应用程序的播放失败 设备支持相同的编解码器。即使是多个实例 支持相同的编解码器,可能会有一些性能下降 当不必要的多个实例同时使用时 时间。
答案 1 :(得分:0)
最好的方法是使用处理程序来停止播放的时间。启动播放器,然后使用处理程序的MonsterEater
来安排执行将停止播放器的from flask.ext.cors import CORS
....
CORS(app)
。您也应该在初始搜索完成后启动播放器。像这样:
postDelayed
另请注意,您使用的Runnable
方法会返回已准备好的MediaPlayer,而public class PlayWord extends Activity implements MediaPlayer.OnSeekCompleteListener {
Handler mHandler;
MediaPlayer mPlayer;
int mStartTime = 6889;
int mEndTime = 7254;
final Runnable mStopAction = new Runnable() {
@Override
public void run() {
mPlayer.stop();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final TextView tv = new TextView(this);
tv.setText("Playing...");
setContentView(tv);
mHandler = new Handler();
mPlayer = MediaPlayer.create(this, R.raw.nicholas);
mPlayer.setOnSeekCompleteListener(this);
mPlayer.seekTo(mStartTime);
}
@Override
public void onDestroy() {
mPlayer.release();
}
@Override
public void onSeekComplete (MediaPlayer mp) {
mPlayer.start();
mHandler.postDelayed(mStopAction, mEndTime - mStartTime);
}
}
应该 再次调用,就像您在代码中一样。屏幕上。我还在活动退出时添加了对MediaPlayer.create
的调用。
此外,如果要在搜索完成时更新UI,请注意此方法通常是从非UI线程调用的。您必须使用处理程序发布任何与UI相关的操作。
我是从Android: How to stop media (mp3) in playing when specific milliseconds come?
复制的