我是Java和Android的新手。我只是计划用几部智能手机进行多媒体安装。这些是旧的,使用Android 2.3(API 10)和更高版本(最高API 16)的智能手机我正在测试流媒体视频的不同可能性。我测试的第一种方法是使用一个视频文件放在我通过WLAN访问的服务器上:
...
String vidAddress = "http://www.XXXXXXXXXXXXXXX.mp4";
startVideo(vidAddress);
...
public void startVideo(String vidAddress){
// starts a video - currently from internet
vidView = (VideoView)findViewById(R.id.myVideo);
vidUri = Uri.parse(vidAddress);
vidView.setVideoURI(vidUri);
vidView.start();
}
这适用于我测试的所有API级别:API 10-16。我的问题是,我不能指望WLAN可以在多媒体安装显示的地方使用。因此,我必须将视频存储在智能手机上。这是我在内部存储上做的。
如果我更换:
String vidAddress = "http://www.XXXXXXXXXXXXXXX.mp4";
startVideo(vidAddress);
通过
String vidAddress=getFilesDir()+"/"+vidFile;
startVideo(vidAddress);
这适用于API 16,但不适用于API 15及更早版本。在Android Studio的Android监视器中,我收到以下错误消息:
07-20 14:50:23.260 23279-23279/eu.karin_daum.daum.reality D/***** Reality ONE: /data/data/eu.karin_daum.daum.reality/files/mundtest_005_2.mp4 file exists - length 1505189 bytes *****
07-20 14:50:23.260 23279-23279/eu.karin_daum.daum.reality E/MediaPlayer: Uri is /data/data/eu.karin_daum.daum.reality/files/mundtest_005_2.mp4
07-20 14:50:23.280 23279-23290/eu.karin_daum.daum.reality E/MediaPlayer: error (1, -2147483648)
07-20 14:50:23.290 23279-23279/eu.karin_daum.daum.reality E/MediaPlayer: Error (1,-2147483648)
07-20 14:50:23.290 23279-23279/eu.karin_daum.daum.reality D/VideoView: Error: 1,-2147483648
第一行是我在startVideo中实现的调试打印输出,用于检查文件是否可访问且长度是否正确。我也尝试了'setVideoPath'方法而不是'setVideoURI',结果相同:适用于API 16而不适用于旧版本。
如果有任何帮助解决我的问题,我将不胜感激。谢谢,卡琳
答案 0 :(得分:0)
我可以解决问题,这意味着我找到了解决方法。
显然,在VideoView for API< 16中使用来自内部存储的视频文件存在问题(我猜是因为我对新手的无知)。使用外部存储,例如
import static android.os.Environment.DIRECTORY_MOVIES;
...
private File filePath;
...
filePath = new File(String.valueOf(Environment.getExternalStoragePublicDirectory(DIRECTORY_MOVIES)));
...然后将视频文件复制到目录filePath中并检索它们以播放视频
vidAddress=String.valueOf(filePath)+"/"+vidFile;
startVideo(vidAddress);
即使没有插入SD卡,也可以使用上面给出的所有测试过的API(10,15,16)。
Android Studio中Android监视器上的相关消息(例如Samsung GT S-5830i API 10)
07-20 16:23:57.117 12548-12548/eu.karin_daum.daum.reality D/VideoView: onMeasure()
07-20 16:23:57.117 12548-12548/eu.karin_daum.daum.reality I/VideoView: Setting size: 320x399
07-20 16:24:01.312 12548-12548/eu.karin_daum.daum.reality D/***** Reality ONE: /mnt/sdcard/Movies/mundtest_005_2.mp4 file exists - length 1505189 bytes *****
07-20 16:24:01.320 12548-12548/eu.karin_daum.daum.reality D/VideoView: onMeasure()
07-20 16:24:01.320 12548-12548/eu.karin_daum.daum.reality I/VideoView: Setting size: 320x399
07-20 16:24:01.460 12548-12548/eu.karin_daum.daum.reality D/VideoView: onMeasure()
07-20 16:24:01.476 12548-12548/eu.karin_daum.daum.reality I/VideoView: Setting size: 299x399
07-20 16:24:01.500 12548-12548/eu.karin_daum.daum.reality D/MediaPlayer: getMetadata
07-20 16:24:01.500 12548-12548/eu.karin_daum.daum.reality I/VideoView: start()
07-20 16:24:01.515 12548-12548/eu.karin_daum.daum.reality I/VideoView: start()
07-20 16:29:30.929 12548-12550/eu.karin_daum.daum.reality D/dalvikvm: GC_CONCURRENT freed 359K, 48% free 3016K/5767K, external 697K/1036K, paused 3ms+3ms