Ios5 钛合金视频播放器缺陷:iOS 5(或带iOS 5的iPhone 4s)
我一直在开发一款支持流媒体视频和音频的应用程序。我的iPhone3S和iOS4以及安卓设备都可以完美运行。今晚,我用iOS5将应用程序部署到我的新iPhone 4S上,现在当我点击标题栏左上角的“完成”按钮时,视频播放器将不会退出!视频正在全屏播放,我无法返回任何应用程序屏幕。这是已知的bug吗 以下是我的代码,供查看或复制:Ios5 钛合金视频播放器缺陷:iOS 5(或带iOS 5的iPhone 4s),ios5,titanium,appcelerator,appcelerator-mobile,titanium-mobile,Ios5,Titanium,Appcelerator,Appcelerator Mobile,Titanium Mobile,我一直在开发一款支持流媒体视频和音频的应用程序。我的iPhone3S和iOS4以及安卓设备都可以完美运行。今晚,我用iOS5将应用程序部署到我的新iPhone 4S上,现在当我点击标题栏左上角的“完成”按钮时,视频播放器将不会退出!视频正在全屏播放,我无法返回任何应用程序屏幕。这是已知的bug吗 以下是我的代码,供查看或复制: var contentURL = 'http://streaming.alburhan.tv/Video/GetURL/ME'; var win = Titanium.U
var contentURL = 'http://streaming.alburhan.tv/Video/GetURL/ME';
var win = Titanium.UI.currentWindow;
win.orientationModes = [Titanium.UI.PORTRAIT, Titanium.UI.LANDSCAPE_LEFT, Titanium.UI.LANDSCAPE_RIGHT];
var videoURL = "";
getURL:);
function getURL() {
var header, responseText;
//alert('Retrieving from ' + contentURL);
var xhr = Ti.Network.createHTTPClient();
xhr.timeout = 15000;
xhr.onload = function() {
try {
//alert('Connecting...');
Ti.API.info(this.responseText);
Ti.API.info(this.status);
if(this.status == 200) {
Ti.API.info('Response ' + this.responseText);
responseText = this.responseText;
} else {
Ti.API.info:'Status ' + this.status:;
Ti.API.info('Response ' + this.responseText:;
}
//alert:responseText);
if :responseText //alert:evaluated.URL);
videoURL = evaluated.URL;
var activeMovie = Titanium.Media.createVideoPlayer:{
contentURL: videoURL,
backgroundColor:'#111',
//movieControlMode:Titanium.Media.VIDEO_CONTROL_DEFAULT,
//scalingMode:Titanium.Media.VIDEO_SCALING_MODE_FILL
movieControlMode:Titanium.Media.VIDEO_CONTROL_FULLSCREEN,
scalingMode:Titanium.Media.VIDEO_SCALING_ASPECT_FIT,
sourceType:Titanium.Media.VIDEO_SOURCE_TYPE_STREAMING
}:;
if (parseFloat(Titanium.Platform.version) >= 3.2)
{
win.add(activeMovie);
}
var windowClosed = false;
activeMovie.addEventListener('complete',function()
{
if :!windowClosed)
{
//Titanium.UI.createAlertDialog:{title:'Movie', message:'Completed!'}:.show();
}
win.close:);
}:;
activeMovie.fullscreen = true;
activeMovie.play:);
win.addEventListener('close', function()
{
if (!windowClosed)
{
windowClosed = true;
//alert:"Window closed":;
activeMovie.stop();
}
});
}
else {
alert('Could not load video data from the server. Please try again later.');
}
}
catch(E){
alert('There was an error retrieving stream data from the server: ' + E);
}
};
xhr.onerror = function(e) {
Ti.API.debug(e.error);
alert('Could not connect to the server in order to retrieve stream data: ' + e.error);
};
xhr.open("GET", contentURL);
xhr.send();
}
更改此行:
activeMovie.fullscreen = true;
为此:
activeMovie.fullscreen = false;
我知道,这毫无意义。欢迎来到钛业。好的,我已经解决了这个问题。对于关注此问题的人或将来遇到此问题的人,我最终会这样做/更改,以使其在iOS 5上正常运行:
movieControlMode:tianium.Media.VIDEO\u CONTROL\u EMBEDDED
此外,我还添加了以下事件侦听器:
activeMovie.addEventListener('complete', function() {
//alert('completed');
if (!windowClosed) {
activeMovie.fullscreen = true;
activeMovie.stop();
activeMovie.release();
windowClosed = true;
win.close();
}
});
activeMovie.addEventListener('fullscreen', function(e) { // When fullscreen status is changed.
if (!e.entering) { // User pressed 'done' or video finished.
activeMovie.fullscreen = true;
activeMovie.stop();
activeMovie.release();
windowClosed = true;
win.remove(activeMovie);
win.close();
}
});
为什么我必须做出这些更改(特别是
movieControlMode
)才能在iOS 5上正常工作,这对我来说是个谜。谢谢你的回答。从技术上讲,这解决了问题,但我希望这部电影是全屏的。此外,当它不是全屏时,还有另一个bug。这是如何重现它:播放视频时,旋转屏幕,使其处于横向模式。然后,单击使电影放大的双箭头。然后,顶部状态栏会下降大约150像素,在屏幕顶部留下一个间隙,并覆盖视频顶部的一部分。奇怪的是,在iOS4中,当我点击“完成”按钮时,全屏显示良好。有什么建议吗?