Я разрабатываю приложение для Android-планшета Android, которое должно воспроизводить swf файлы внутри WebView. Сначала я попытался открыть SWF файл с устройства, чем через интернет, без везения. Появляется WebView, но внутри WebView все, что я вижу, это черный экран (с белой линией шириной 3-4 пикселя справа). Если я загружаю один и тот же URL-адрес в браузер устройства, файл флэш-памяти будет работать хорошо. Я думаю, что Im пропустил что-то в настройке WebView, но после нескольких часов поиска и поиска в Google я до сих пор не знаю, что.
Код Java:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.presentation);
presentationWebView = (WebView) findViewById(R.id.presentation_webview);
presentationWebView.getSettings().setJavaScriptEnabled(true);
presentationWebView.getSettings().setPluginsEnabled(true);
presentationWebView.getSettings().setAllowFileAccess(true);
presentationWebView.loadUrl("http://my_domain/fileName.swf");
}
Презентация .xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id = "@+id/presentation_webview"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"/>
</LinearLayout>
Спасибо, что у меня есть вопросы. Ripityom
У меня это получилось наконец! Нужно только добавить атрибут
android:hardwareAccelerated = "true"
в файл манифеста.
Я просто копировал и вставлял ваш код в новый проект, менял местоположение файла swf, и он работал отлично. (Экран пуст, пока файл .swf не завершит загрузку, что может занять некоторое время в некоторых случаях).
У вашего приложения есть разрешение INTERNET? URL-адрес определенно правильный? Попробуйте с несколькими различными SWF файлами и посмотрите, есть ли разница.
спасибо Pipityom. Атрибут "android: hardwareAccelerated" сохраняет мою жизнь. Работайте и для меня.
Здесь я публикую объяснение из документа разработчика Android. "Начиная с Android 3.0, рендеринг OpenGL с аппаратным ускорением доступен для приложений, чтобы повысить производительность для многих обычных операций 2D-графики. Когда аппаратный ускоритель рендеринга включен, большинство операций в Canvas, Paint, Xfermode, ColorFilter, Shader и Camera. Это приводит к более плавной анимации, более плавной прокрутке и большей отзывчивости в целом даже для приложений, которые явно не используют библиотеки OpenGL Framework.
Обратите внимание, что не все операции OpenGL 2D ускоряются. Если вы включите аппаратный ускоритель, проверьте свое приложение, чтобы убедиться, что он может использовать средство визуализации без ошибок. "