我正在使用MediaPlayer编写一个允许用户跳过实际曲调的音频播放器。跳过请求可能随时发生,包括在调用MediaPlayer.prepareAsync和即将到来的onPrepared回调之间。文档说:重要的是要注意Preparing状态是一个transient,当MediaPlayer对象处于Preparing状态时调用任何具有副作用的方法的行为是未定义的。这是否包括重置甚至释放的调用?因为如果是这样,那么我将不得不等待onPrepared回调来重用MediaPlayer,或者如果我不想等待并在onPrepared回调上释放过时的MediaPlayer,则分配一个全新的MediaP
我正在尝试使用相同的媒体播放器但更改了数据源。这是我正在尝试做的事情:privateMediaPlayermMediaPlayer;publicvoidpickFile1(){initMediaPlayer("myfile1.mp3");}publicvoidpickFile2(){initMediaPlayer("myfile2.mp3");}privatevoidinitMediaPlayer(Stringmediafile){//Setupmediaplayer,butdon'tstartuntiluserclicksbutton!try{if(mMediaPlayer==nul
我有一个Android应用程序可以流式传输MP3文件并在播放器中播放该文件,但问题是mediaPlayer.prepare();需要很长时间缓冲,应用程序会卡住所以我尝试使用prepareAsync();,但是使用这个函数我无法让播放器播放下一个文件。它只是在线播放单个文件;如果我需要播放另一个文件,我必须在播放结束时关闭并重新启动Activity。这是我的代码:publicvoidplayMp3(String_link){mediaPlayer.setOnPreparedListener(newOnPreparedListener(){publicvoidonPrepared(Med
当我从MIC录制音频并将文件存储在/data/data/.....为什么MediaPlayer不能播放这个文件?如果我将目的地更改为/sdcard/.....-一切都很好。我做错了什么?我没找到MediaPlayer的限制。设备-三星T959(GalaxyS)谢谢,我希望有人知道解决方案.... 最佳答案 我遇到了同样的问题...每当我将setDataSource与文件路径一起使用时,它就不起作用;不断收到IOException。更改我的代码以使用setDataSource(FileDescriptor)确实有效...有了这个,我不
我正在尝试从SD卡播放mp3音频文件,使用音频文件的路径和文件名来获取其Uri。我有一个Spinner填充了存储在sd卡中的轨道名称。选择项目时,将执行以下代码:finalUriuri=MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;OnItemSelectedListenerlistener=newOnItemSelectedListener(){@OverridepublicvoidonItemSelected(AdapterViewparentView,ViewselectedItemView,intposition,longid){Tex
作为recommendedbythedoc,我想使用setvolume()方法来控制我的MediaPlayer的音量,但我对如何管理它有点困惑。我正在使用SeekBar设置音量,初始化为AudioManager.STREAM_MUSIC流中的当前音量。当用户不修改设备音量控制时,这是有道理的,但是当他修改时,我不确定我应该做什么,我有几个疑问:MediaPlayer音量与设备音量有什么关系?setVolume()中设置的最大值(1)是否对应于mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)如果是这种情况,每次设置设备
在Android上,您可以使用MediaRecorder类从麦克风录制音频:MediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);我想录制由MediaPlayer实例(或其他一些音频播放设备)播放的音频的某些部分。那可能吗?如何设置自定义音频源?总结;如何将音频从任意音频源流式传输到MediaRecorder? 最佳答案 我认为目前没有相应的API。尽管这是可能的,但您必须能够访问设备的缓冲区,直至内核/硬件级别。即使您找到了方法,我认为Android也不会授予您在应
我在某些设备上播放音乐时遇到奇怪的行为。当音频刚开始播放时,位置会跳来跳去,播放不稳定,直到缓冲完全完成。我从samplecodefromTutorialsPoint开始.我在OnCreate()中这样创建MediaPlayer://CreateMediaPlayermediaPlayer=newMediaPlayer();mediaPlayer.setOnBufferingUpdateListener(this);mediaPlayer.reset();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);prepareM
我使用MediaPlayer播放MP3。目前我通过使用禁用屏幕方向更改android:screenOrientation="portrait"android:configChanges="keyboardHidden|orientation"在list中。我现在确实想支持横向模式——即删除那些标签——但有一个问题,即在销毁/创建周期中,播放器会停止然后重新启动。这没关系,实际上我什至在onPause()中手动执行此操作以在Activity进入后台时停止播放器。现在为了让它在方向更改期间保持运行,我尝试将其设为静态(并使用应用程序上下文创建一次)。当然,当我现在删除onPause()中的
我正在流式传输实时音频并希望具有暂停媒体播放器然后从当前实时位置开始播放的功能。默认的Pause()和Start()只是从停止的地方开始。关于如何保持当前位置更新以便Start()是即时的,有什么想法吗? 最佳答案 你试过调用seekTo()吗?您可以通过使用TimerTask每隔半秒左右调用一次seekTo()来永久更新它。,但我不知道我对此有何感想。编辑:如果您每500毫秒调用一次seekTo(),为了让它继续前进,您将使用currentPosition+自上次调用以来耗时(在本例中为500毫秒)调用它。但是我又不知道这是否是最