Android 2.2 (также известный как Froyo) теперь с нами . Каждый Nexus One получил обновление до 4 июля, и другие модели получат обновление очень скоро. Кроме того, многие новые устройства (например, Motorola Droid 2) появятся с Android 2.2 очень скоро.
К сожалению, команда Android не имеет документации, сообщений или информации о совместимости браузера. Для этой новой версии это не стало исключением.
Обещания
В последнем Google IO был замечательный Keynote о новых возможностях браузера Android 2.2 (см. video1 - начало в 6:00 и video2 ). Я должен признать, что я был очень взволнован этими новыми API, которые могут быть доступны для веб-разработчиков. Обещания (и показанные демонстрации) были:
- Доступ к магнитометру и акселерометру
- Доступ к камере
- Доступ к API для распознавания голоса и речи
- Поддержка Flash Player 10.1 и Adobe AIR 2.0
Тестирование
Итак, после того, как на моем Nexus One была установлена последняя версия ОС Android 2.2, я начал несколько тестов и вот что я нашел:
- Производительность JavaScript была объявлена в 2–3 раза выше, чем раньше, благодаря новому движку V8 JavaScript. Кажется, быстрее, да.
- Код JavaScript работает в фоновом режиме при переключении на другую вкладку браузера, как в iOS 4 ,
- Браузер Android теперь поддерживает загрузку файлов . Как я упоминал в главе 6, Android - как iOS и webOS - не понимал <input type = ”file” /> . Когда вы нажмете «Выбрать файл», вы получите всплывающее меню с опциями: выбрать файл из Галереи, из музыкальной коллекции или из диктофона, где вы можете создавать аудио на лету для загрузки. У меня также есть опция «Documents to Go», которая позволяет мне выбрать любой файл на SD-карте. Я не уверен, почему здесь есть «Documents to Go» (приложение, доступное в Android Market), и можем ли мы добавить больше приложений в этот список (возможно, используя некоторое намерение).
- Браузер Android по-прежнему не поддерживает ни анимированный GIF, ни SVG . Я нашел официальный ответ о SVG: « Мы намеренно решили не поддерживать SVG в браузере для экономии места; полный SVG добавляет более 1М к размеру изображения webkit ».
- Flash Player 10.1 работает действительно отлично . Есть некоторые ошибки и проблемы на некоторых сайтах с поддержкой Flash, но я пробовал много разных сайтов, и Flash работает хорошо и на удивление быстро. Вы можете нажать и удерживать Flash-фильм, чтобы получить полноэкранную кнопку для этого конкретного фильма. Вы должны использовать кнопку назад, чтобы вернуться из полноэкранного режима.
- Я был в Предварительная версия AIR for Android , но я пока не могу установить его на свое устройство, поэтому у меня пока нет мнения.
- Теперь он, кажется, имеет небольшую поддержку видео тега HTML5, но мои тесты показывают, что это работает, только если мы предоставляем элементы управления JavaScript для воспроизведения и остановки, и это работает не так хорошо.
- Я не смог найти онлайн-справку, документацию или образец о новых API, объявленных для акселерометра, камеры и т. Д. Итак, я создал браузер объектов JavaScript (доступен mobilexweb.com/tests/object или введите ad.ag/gtwjmg в своем мобильном браузере (то есть Мобильный Tiny URL ).
Новые API
В поисках любого нового API для доступа к обещанным функциям я нашел несколько новых API:
- Существует свойство для запроса о текущем типе соединения: navigator.connection.type. Существует также перечисление navigator.connection , имеющее возможные значения: UNKNOWN, ETHERNET, WIFI, CELL_2G, CELL_3G. И ЭТО РАБОТАЕТ! Затем вы можете решить, что делать в зависимости от подключения пользователя:
if (navigator.connection.type == navigator.connection.WIFI) {} - Логический файл navigator.onLine можно использовать для определения того, подключено ли устройство к сети или нет, (помните, что с помощью HTML 5 мы можем создать автономное веб-приложение, см. Главы 9 и 12 ). Такие события, как ononline и onoffline , работают нормально, чтобы обнаружить изменения в соединении (даже когда мы переключаемся с 3G на WIFI, онлайн-событие запускается).
- Если мы используем API геолокации W3C (как мы видели в Глава 11 ), полученный объект позиции имеет свойство координируемого заголовка, которое, как я предполагал, может быть способом доступа к информации магнитометра. Но это свойство всегда имеет значение «ноль».
- Я нашел navigator.isApplicationInstalled (app_name, callback), который должен искать собственное приложение, установленное на устройстве. Я пробовал несколько способов запроса, и я всегда получаю ложный параметр в обратном вызове. Я обнаружил, что этот API реализован в WebKit проект с открытым исходным кодом , но нет образца или информации об этом. Это может быть здорово, если это работает. Как я упоминаю в Глава 6 Используя URI-схемы Intention, вы можете вызывать нативное приложение из браузера в Android (в том числе и в iOS), но вы не знаете, установлено приложение или нет.
- Я также нашел navigator.registerProtocolHandler (схема, URL-адрес, заголовок ) и navigator.registerContentHandler (mime_type, URL-адрес, заголовок) . Я их выполнил, но ничего не происходит и похоже не работает. Кажется, что код C ++ проекта с открытым исходным кодом WebKit работает, но в конечном браузере ничего не происходит. Это API от Спецификация веб-приложения и может быть здорово, если работает. Затем мы можем зарегистрировать наше веб-приложение в качестве обработчика по умолчанию для типа MIME (например, браузер может открыть наш веб-сайт, когда пользователь нажимает на файл DOC) или для протокола (код WebKit C ++ говорит, что мы можем подать заявку на обработчик любого протокола, отличного от http, https или файла).
Как насчет обещаний? Я не мог найти новый API для этих функций. Я все еще надеюсь, что скрытый API доступен, но, если нет, возможно, решение может быть в виде фильма о Flash Player (я работаю над его тестированием в будущем посте). Я доволен некоторыми новыми функциями Froyo, но я все еще недоволен отсутствием официальной документации о функциях браузера. Команда Android, пришло время работать над этим!
Если кто-то нашел какие-либо другие API или новые функции, не стесняйтесь добавлять его здесь или свяжитесь со мной по щебет ,
Как насчет обещаний?
Добавить комментарий!