#ios5 #titanium #appcelerator #appcelerator-mobile #titanium-mobile
#ios5 #titanium #ускоритель приложений #ускоритель приложений-мобильный #titanium-мобильный
Вопрос:
Я разрабатывал приложение, которое, помимо прочего, поддерживает потоковое видео и аудио. Я добился, чтобы все работало идеально на моем iPhone 3S с iOS 4, а также на моем устройстве Android. Сегодня вечером я развернул приложение на своем новом iPhone 4S с iOS5, и теперь видеоплеер не завершается, когда я нажимаю на кнопку «Готово» в верхнем левом углу строки заголовка! Видео воспроизводится во весь экран, и я не могу вернуться ни к одному из экранов моего приложения. Это известная ошибка?
Вот мой код для просмотра для просмотра или для воспроизведения:
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();
}
Ответ №1:
Хорошо, я исправил проблему. Для всех, кто следит за этой проблемой или кто столкнется с ней в будущем, это то, что я в конечном итоге сделал / изменил, чтобы заставить ее правильно функционировать на iOS 5:
movieControlMode:Titanium.Media.VIDEO_CONTROL_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, для меня загадка.
Ответ №2:
Измените эту строку:
activeMovie.fullscreen = true;
к этому:
activeMovie.fullscreen = false;
Я знаю, это не имеет смысла. Добро пожаловать в Titanium.
Комментарии:
1. Спасибо за ответ. Технически это устраняет проблему, но я хочу, чтобы фильм был во весь экран. Кроме того, когда это не на весь экран, возникает еще одна ошибка. Вот как это воспроизвести: при воспроизведении видео поверните экран так, чтобы он находился в альбомном режиме. Затем щелкните двойные стрелки, чтобы увеличить масштаб фильма. Что происходит тогда, так это то, что верхняя строка состояния уменьшается примерно на 150 пикселей или около того, оставляя пробел в верхней части экрана и перекрывая часть верхней части видео. Странно то, что в iOS 4 полноэкранный режим нормально завершается, когда я нажимаю кнопку «Готово». Есть какие-нибудь предложения?