首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么MediaPlayer重新启动后重置位置?

MediaPlayer重新启动后重置位置是因为MediaPlayer是一个用于播放音频和视频的Android类,它在播放过程中会维护一个当前播放位置的状态。当MediaPlayer重新启动时,它会将播放位置重置为初始状态。

这种重置位置的行为有以下几个原因:

  1. 状态重置:重新启动MediaPlayer会将其状态重置为初始状态,包括播放位置、播放状态等。这是为了确保播放器在重新开始播放时能够从正确的位置开始。
  2. 避免错误:重置位置可以避免在重新启动后出现播放位置错误的情况。如果不重置位置,可能会导致播放器从上一次播放结束的位置继续播放,而不是从起始位置开始。
  3. 逻辑一致性:重置位置可以保持播放器的逻辑一致性。无论是首次启动还是重新启动,播放器都应该从相同的位置开始播放,以确保用户体验的一致性。

对于解决这个问题,可以通过以下方式来处理:

  1. 保存播放位置:在MediaPlayer重新启动之前,可以将当前播放位置保存下来。当重新启动后,可以通过调用seekTo()方法将播放位置设置为之前保存的位置。
  2. 使用状态保存:可以使用Android的状态保存机制,如保存实例状态(SavedInstanceState)或使用SharedPreferences来保存播放位置。在重新启动后,可以从保存的状态中恢复播放位置。
  3. 监听MediaPlayer状态:可以通过设置MediaPlayer的监听器,在播放器状态发生变化时进行相应的处理。当MediaPlayer重新启动后,可以在监听器中检测到状态变化,并在需要时重新设置播放位置。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云音视频处理(https://cloud.tencent.com/product/mps)
  • 腾讯云云服务器(https://cloud.tencent.com/product/cvm)
  • 腾讯云数据库(https://cloud.tencent.com/product/cdb)
  • 腾讯云对象存储(https://cloud.tencent.com/product/cos)
  • 腾讯云人工智能(https://cloud.tencent.com/product/ai)
  • 腾讯云物联网(https://cloud.tencent.com/product/iot)
  • 腾讯云移动开发(https://cloud.tencent.com/product/mobdev)
  • 腾讯云区块链(https://cloud.tencent.com/product/bc)
  • 腾讯云元宇宙(https://cloud.tencent.com/product/mu)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android通过Service实现简单的音乐播放

    3:Service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity,这个时候程序要在后台继续播放;比如检测SD卡上文件的变化;再或者在后台记录用户的地理信息位置的改变;或者启动一个服务来运行并一直监听某种动作等等...开启服务时,如果有规定id,则传入startid * @return 返回值规定此startservice是哪种类型,粘性的还是非粘性的 * START_STICKY:粘性的,遇到异常停止重新启动...,并且intent=null * START_NOT_STICKY:非粘性,遇到异常停止不会重启 * START_REDELIVER_INTENT:粘性的,重新启动,并且将Context...switch (intent.getIntExtra("type",-1)){ case MainActivity.PLAT_MUSIC: if (isStop){ //重置...mediaplayer mediaPlayer.reset(); //将需要播放的资源与之绑定 mediaPlayer=MediaPlayer.create(this,R.raw.birds

    2K20

    Android MediaPalyer

    Paused 状态:Started状态下MediaPlayer调用pause()方法可以暂停MediaPlayer,从而进入Paused状态,MediaPlayer暂停再次调用start()则可以继续...此时只需要调用start()方法就可以重新从头播放文件,也可以stop()停止MediaPlayer,或者也可以seekTo()来重新定位播放位置。...MeidalPlayer 常用方法 方法说明 MediaPlayer 构造方法 create 创建一个要播放的多媒体 getCurrentPosition 得到当前播放位置 getDuration 得到文件的时间...对象相关的资源 reset 重置MediaPlayer对象为刚刚创建的状态 seekTo 指定播放的位置(以毫秒为单位的时间) setAudioStreamType 设置流媒体的类型 setDataSource...设置多媒体数据来源(位置) setDisplay 设置用SurfaceHolder来显示多媒体 setLooping 设置是否循环播放 setOnButteringUpdateListener 网络流媒体的缓冲监听

    1K11

    使用Android MediaPlayer播放媒体文件

    Android里面提供了MediaPlayer类来播放媒体文件,下面来看一下怎样用MediaPlayer对象来播放媒体文件: 一般来说,用MediaPlayer类来播放媒体文件有以下几个步骤: 1、...类常用的方法: setDatasource(String path) 用于设置要播放的媒体文件的位置path 是媒体文件的绝对路径。...这个方法有多个重载版本,适应于不同的情况,既可以对使用文件路径作为参数,也可以使用描述文件位置的Uri作为参数 prepare() 在开始播放之前调用这个方法完成媒体文件的准备工作 start() 开始播放媒体文件文件...pause() 暂停播放 reset() 将MediaPlayer对象重置为刚刚被创建的状态 seekTo(int msec) 从指定的位置开始播放视频,参数单位:秒 stop() 停止播放音频,调用之后...(path); // 设置播放的文件位置 mediaPlayer.prepare(); // 准备文件 /*

    2.7K10

    2016级移动应用开发在线测试14-MediaPlayer

    ()reset 重置MediaPlayer对象为刚刚创建的状态 ()seekTo 指定播放的位置(以毫秒为单位的时间) ()setAudioStreamType 设置流媒体的类型 ()setDataSource...()MediaPlayer.OnCompletionListener:播放完毕接口。在接口中定义了流媒体播放完毕回调的方法。 ()MediaPlayer.OnErrorListener:错误接口。...()MediaPlayer.OnSeekCompleteListener:搜索接口。该接口定义了一个回调方法,该方法在查找操作完成回调。...()Paused 状态:Started状态下MediaPlayer调用pause()方法可以暂停MediaPlayer,从而进入Paused状态,MediaPlayer暂停再次调用start()则可以继续...此时可以调用start()方法重新从头播放文件,也可以stop()停止MediaPlayer,或者也可以seekTo()来重新定位播放位置

    83730

    Android 媒体开发之MediaPlayer状态机接口方法实例解析

    播放位置调整 ? ? ?...获取播放器相关属性方法 (1) 获取当前位置 方法名称 : public int getCurrentPosition (); 方法解析 : 获取当前播放器播放的位置, 返回值是 已经播放了的毫秒数;...(pause) 停止(stop) 或者 销毁(destroy) 的时候要调用该方法释放 资源; 方法的有效状态和无效状态 : 在任何状态下 调用 release() 方法都可以; (5) 重置 MediaPlayer...方法名称 : public void reset (); 方法解析 : 重置 MediaPlayer 到 Idle 状态, 此时还没有设置数据源, 如果想要播放媒体资源, 需要设置数据源 和 调用 prepare...(MediaPlayer.OnVideoSizeChangedListener listener); 方法解析 : 注册一个 当视频大小已知 或者 更新 回调的监听器; 6.

    2.6K42

    Android开发做一个简单的音乐播放器

    1.MediaPlayer:可以播放本地资源、sd卡内存资源以及网络uri资源,在这里我们播放sd卡上的音乐资源. 2.Contentresolver:如何获取本地音乐资源。...了解上述问题,我们开始写代码: 1.获取本地音乐资源列表:    1).读取sd卡上的内容我们需要在配置文件中添加权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE...isPause=false;         }      如果当前不是处于暂停状态,则<em>重置</em>当前音乐,再次播放。      ...if (<em>mediaPlayer</em>.isPlaying()){                 <em>mediaPlayer</em>.stop();                 <em>mediaPlayer</em>.reset...(getApplicationContext(),conuri);             <em>mediaPlayer</em>.prepareAsync();             isPause=false

    3.3K50

    Android开发笔记(五十七)录像录音与播放

    下面是MediaRecorder的常用方法: reset : 重置录制资源 prepare : 准备录制 start : 开始录制 stop : 结束录制 release : 释放录制资源...媒体播放MediaPlayer MediaPlayer是Android自带的播放器,可用于播放视频与音频。...下面是MediaPlayer的常用方法: reset : 重置播放器 prepare : 准备播放 start : 开始播放 pause : 暂停播放 stop : 停止播放 以上方法用于控制播放操作...seekTo : 拖动播放进度到指定位置。 getCurrentPosition : 获取当前播放进度所在的位置。 getDuration : 获取播放时长。 以上方法用于设置播放参数。...protected void onPause() { // 先判断是否正在播放 if (mMediaPlayer.isPlaying()) { // 如果正在播放我们就先保存这个播放位置

    3.2K62

    andriod游戏音效

    1.使用MediaPlayer播放游戏音乐 创建MediaPlayer对象 将Context与资源文件传入。.../**创建MediaPlayer对象**/   MediaPlayer mMediaPlayer = MediaPlayer.create(mContext, R.raw.v3);   /**设置为循环播放...游戏中我们可以发现各种音符会从屏幕左边向右移动,我觉得原作肯定是有一个音符编辑器 在开发中策划来编辑这个音符包括 位置 出现的是频率 时间 音符的类型 等等 最后编辑器会把数据生成出来 在程序中去读取这些数据并显示出来...程序中一样只申请了5块 音符的对象,玩家点击鼓盘然后以音符对象检测它的XY坐标是是否在点击区域 如果在点点击区域 在判断玩家敲打的鼓盘音符与当前音符是否类型一样如果一样则表示击打成功 屏幕中显示good...被击中的鼓点 或者没有击中向左超过击打范围 直接重置它们的坐标 让它们进入下一个轮回判定中。

    92060

    Android 多媒体开发学习之简单的音乐播放器

    MediaPlayer(); } 第三步:启动音乐播放,启动音乐播放当然要有步骤的: 我们先看一张关于如何启动音乐的图 从上图中可以看到,启动音乐播放需要几个步骤: 1:reset(重置)...如果向停止播放就需要调用(onstop),如果向接着播放就需要重新prepare,start 一下是如何启动音乐播放: //服务的播放方法 public void play() { //1: 先重置...msg.setData(data); //发送消息给Activity MainActivity.handler.sendMessage(msg); } //开始计时任务的...5毫秒,第一次执行run方法,以后每1000毫秒执行一次 }, 5, 1000); } } 这时候当播放,定时器获得到数据就会传送给MainActivity用于显示: static...method stub MusicService.this.seekTo(progress); } } //服务的播放方法 public void play() { //1: 先重置

    70410

    android之实现打开相册、拍照录像、播放视频、保存图片到系统相册指定位置、图片压缩

    自Android 7.0系统禁止应用向外部公开file://URI , * 因此需要FileProvider来向外界传递URI,传递的形式是content : //Uri,使用时需要在清单文件中注册。...bitmap = (Bitmap) bundle.get("data"); img_show.setImageBitmap(bitmap); } } 自定义相机拍照: 保存图片 —————保存图片到指定位置...100; while (baos.toByteArray().length / 1024 > 100) { //循环判断如果压缩后图片是否大于100kb,大于继续压缩 baos.reset();//重置...public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); mediaPlayer.seekTo(cur);//上次的位置...=null && mediaPlayer.isPlaying()) { //获取视频当前位置 cur = mediaPlayer.getCurrentPosition(); mediaPlayer.stop

    5.4K20

    Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)

    (为什么要用EXO),支持直播流,Star-9000多与fork-3000的视频播放器你支持安利。...例如根据旋转信息,判断TextureView界面的比例是横的还是竖的,如果View是竖的,而视频也是竖的,那么因为旋转了90度,那么让视频的高显示为屏幕的宽度,从新计算旋转的宽度。...在逻辑播放器中统一分发各种状态,把被播放的manager状态同步到这里,之后你想要在哪个逻辑播放器里播放只需要对应的设置状态把manager的监听同步过来。...深夜码字不易,不知道为什么每次这个时候老婆的意见很大啊。...为什么用它?因为谷歌到的时候刚好看到,缘分啊懂吗。 这里需要个关注的是手动点击和自动旋转之间的冲突,主要看代码吧,老婆开始催我了 (ノಠ益ಠ)ノ彡┻━┻。

    2.7K30

    Android音视频——系统播放器介绍(二)

    调用release,会处于End状态。在这2个状态之间的可以看做是MediaPlayer的生命周期。...Started 在 MediaPlayer 进入 Prepared 状态,上层应用即可设置一些属性,如音视频的音量。 screenOnWhilePlaying、looping 等。...当start 函数从Paused 状态恢复回来时,playback 恢复之前暂停时的位置,接着开始播放,这时MediaPlayer的 Paused 状态又变成 Started 状态。...在Seck 操作完成,如果事先在 MediaPlayer 注册了 sctOnScckCompleteListener,播放器内部将回调 OnSeckComplete.onSeekComplete 函数...PlaybackCompleted 当前播放的位置可以通过getCurrentPosition 函数获取,通过 getCurrentPosition 函数,可跟踪播放器的播放进度。

    86030
    领券