在 Android 的 MediaPlayer 上播放音频时遇到问题
Posted
技术标签:
【中文标题】在 Android 的 MediaPlayer 上播放音频时遇到问题【英文标题】:Having trouble playing audio on the MediaPlayer in Android 【发布时间】:2015-11-24 19:56:21 【问题描述】:这里是 android 编码的新手。我试图让用户选择一个音频文件供 MediaPlayer 使用“上传”按钮播放,然后一旦用户点击“播放”,MediaPlayer 应该开始播放文件。到目前为止,这是我的代码:
public class MainActivity extends Activity
final int ACTIVITY_CHOOSE_FILE = 1;
File original;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent chooseFile;
Intent intent;
chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
chooseFile.setType("audio/mpeg");
intent = Intent.createChooser(chooseFile, "Choose a file");
startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
);
Button playButton = (Button)findViewById(R.id.playbutton);
playButton.setOnClickListener(new Button.OnClickListener()
@Override
public void onClick(View v)
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudiostreamType(AudioManager.STREAM_MUSIC);
try
mediaPlayer.setDataSource(original.getAbsolutePath());
catch (IOException e)
e.printStackTrace();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
@Override
public void onPrepared(MediaPlayer mp)
mp.start();
);
);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
switch (requestCode)
case ACTIVITY_CHOOSE_FILE:
if (resultCode == RESULT_OK)
Uri uri = data.getData();
original = new File(uri.getPath());
String tag = "TAG";
Log.d(tag, original.getAbsolutePath());
我可以很好地选择音频文件,但是一旦我点击播放就没有任何反应。我做错了什么?
【问题讨论】:
【参考方案1】:设置好 mediaPlayer 数据源后,您必须调用 mediaPlayer.prepareAsync()
Media Playback in android
【讨论】:
现在返回错误 (1,-2147483648) 是的,可能是因为您在 onclick 回调中声明了 MediaPlayer 对象,请尝试将媒体播放器对象声明为类成员变量。看看这里link以上是关于在 Android 的 MediaPlayer 上播放音频时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
android:在模拟器上使用 MediaPlayer 录制音频
Android MediaPlayer 在 Android 4.2.2 上播放视频时闪烁
你如何在 MediaPlayer 上播放 Android InputStream?
MediaPlayer无法在Android Things Raspberry Pi 3上运行