【发布时间】:2015-09-21 11:16:06
【问题描述】:
我正在尝试在 MediaPlayer 中播放 .mp4 文件,但它总是在 mediaplayer.prepare() 处引发 IOException:
09-21 12:59:33.570 14926-14937/com.alex.videoplayertest E/MediaPlayer: 错误 (-2147483648, 0) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err: java.io.IOException: Prepare failed.: status=0x80000000 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err: 在 android.media.MediaPlayer.prepare(Native Method) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 com.alex.videoplayertest.MainActivity.onResume(MainActivity.java:53) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1185) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.app.Activity.performResume(Activity.java:5182) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:2732) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.app.ActivityThread.access$600(ActivityThread.java:141) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.os.Handler.dispatchMessage(Handler.java:99) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.os.Looper.loop(Looper.java:137) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 android.app.ActivityThread.main(ActivityThread.java:5041) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 java.lang.reflect.Method.invokeNative(Native Method) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 java.lang.reflect.Method.invoke(Method.java:511) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err:在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err: at dalvik.system.NativeStart.main(Native Method)
这是我的代码:
public class MainActivity extends Activity
{
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume()
{
super.onResume();
String file = "/storage/emulated/0/Download/media/Light_Bulb.mp4";
File f = new File(file);
if (f.exists())
{
mediaPlayer = new MediaPlayer();
mediaPlayer.setScreenOnWhilePlaying(true);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
if (mediaPlayer != null)
mediaPlayer.start();
}
});
mediaPlayer.reset();
try
{
FileInputStream fileInputStream = new FileInputStream(file);
mediaPlayer.setDataSource(getApplicationContext(), Uri.parse(file));
fileInputStream.close();
mediaPlayer.prepare();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
有人可以帮帮我吗?
【问题讨论】:
-
您是否设置了权限?
-
是的,我添加了写入外部存储的权限。我还需要别的吗?
-
该文件是否存在于该位置?您可以检查 file.exists();
标签: android video android-mediaplayer mp4 sd-card