mediaPlayer.seekTo
时间: 2023-08-03 17:07:25 浏览: 189
MediaPlayer提供了seekTo方法,可以实现对音频文件进行跳转播放。该方法的参数为跳转的位置,单位为毫秒。具体示例如下:
```java
MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(audioFilePath);
mediaPlayer.prepare();
mediaPlayer.start();
// 在播放过程中跳转到10秒处
mediaPlayer.seekTo(10000);
} catch (IOException e) {
e.printStackTrace();
}
```
在上述示例代码中,首先创建了一个MediaPlayer对象,并通过setDataSource方法设置了音频文件的路径。然后调用了prepare和start方法开始播放音频文件。在播放过程中,调用seekTo方法将音频文件跳转到10秒处。
需要注意的是,seekTo方法只能在MediaPlayer处于Started、Paused或PlaybackCompleted状态下调用。另外,由于音频文件可能比较大,跳转的过程可能需要一定的时间,因此建议在子线程中进行该操作,以避免阻塞UI线程。
相关问题
在 MusicActivity.java 添加组件 private Button startButton ; private Button pauseButton ; private SeekBar seekbar ; private boolean isBound = false ; private PlayService playService ; private static final String TAG = ” MusicActivity ” ; private final int MUSICDURATION = 0x1 ; //获 取 歌 曲 播 放 时 间 标 志 private final int UPDATE = 0x2 ; //更 新 进 度 条 标 志 • 让 MusicActivity 实现 View.OnClickListener,SeekBar.OnSeekBarChangeListener 两个接口,这样 该 Activity 同时也变成了监听类 • 创建后台 PlayService.java, 并让它继承 Service 类,实现 MediaPlayer.OnCompletionListener 接口, 并添加成员 MediaPlayer mediaPlayer; • 在 PlayService 类添加几个方法以控制 MediaPlayer 的状态转移 public void play ( ) { try { mediaPlayer . r e s e t ( ) ; mediaPlayer . prepare ( ) ; mediaPlayer . s t a r t ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } } public void pause ( ) { mediaPlayer . pause ( ) ; i s P l a y i n g = false ; } public void s t a r t ( ) { mediaPlayer . s t a r t ( ) ; i s P l a y i n g = true ; } public void setTo ( int msec ) { mediaPlayer . seekTo ( msec ) ; } public int getDuration ( ) { return duration ; } public MediaPlayer getMediaPlayer ( ) { return mediaPlayer ; } @Override public void onCompletion ( MediaPlayer mp) { i s P l a y i n g = false ; } • 重构 onBind 方法,并添加一个 Binder 内部类能够在外部获取 Service 的实例 @Override public IBinder onBind ( Intent i n t e n t ) { return new PlayBinder ( ) ; 3 4.1 实训步骤 《Android 应用程序开发》广西职业师范学院实验教学指导书 } class PlayBinder extends Binder { public PlayService getPlayService ( ) { return PlayService . this ; } } • 其他方法一览 @Override public void onCreate ( ) { super . onCreate ( ) ; try { mediaPlayer = MediaPlayer . c r e a t e ( this , R. raw . sleepaway ) ; mediaPlayer . setOnCompletionListener ( this ) ; duration = mediaPlayer . getDuration ( ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; } } private Runnable runnable = new Runnable ( ) { @Override public void run ( ) { mediaPlayer . seekTo ( mediaPlayer . getCurrentPosition ( ) ) ; } } ; • 将 MusicActivity 与 PlayService 进行整合 //连 接 A c t i v i t y 和
PlayService,在 MusicActivity 中添加以下代码:
private ServiceConnection connection = new ServiceConnection( ) {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
PlayBinder binder = (PlayBinder) service;
playService = binder.getPlayService( );
isBound = true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
playService = null;
isBound = false;
}
};
@Override
protected void onStart( ) {
super.onStart( );
Intent intent = new Intent(this, PlayService.class);
bindService(intent, connection, BIND_AUTO_CREATE);
}
@Override
protected void onStop( ) {
super.onStop( );
if(isBound) {
unbindService(connection);
isBound = false;
}
}
最后,你需要在 MusicActivity 中实现 View.OnClickListener 和 SeekBar.OnSeekBarChangeListener 接口,并在相应的方法中调用 PlayService 中的方法来控制 MediaPlayer 的状态。
mediaplayer中seekto
在使用MediaPlayer时,可以使用seekTo(int)方法来设置播放器的播放位置。该方法接受一个整数参数,表示要跳转到的毫秒数位置。例如,如果要将播放器跳转到视频的第10秒处,可以使用以下代码:mediaPlayer.seekTo(10000)。当调用seekTo(int)方法后,可以为MediaPlayer添加OnSeekCompleteListener监听器来监听跳转操作的完成。在OnSeekCompleteListener的回调方法中,可以执行一些操作,例如开始播放视频。例如,可以使用以下代码为MediaPlayer添加OnSeekCompleteListener监听器:mediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() { public void onSeekComplete(MediaPlayer mediaPlayer) { // 在这里执行一些操作,例如开始播放 mediaPlayer.start(); } });总结起来,通过使用seekTo(int)方法和OnSeekCompleteListener监听器,可以实现对MediaPlayer的跳转操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [seekTo()的相关_android里的mediaplayer](https://blog.csdn.net/some_that_loves/article/details/50533624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [关于MediaPlayer中的getCurrentPosition()和seekTo(int)的总结](https://blog.csdn.net/jcl490195138/article/details/49615197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文