可以开箱即用还是通过库?
答案 0 :(得分:3)
您可以在WebView中使用Flash插件播放FLV。见这里:http://www.synesthesia.it/playing-flash-flv-videos-in-android-applications
通常,当您在移动设备中创建显示网页内容的应用时,您必须处理仍在网络中广泛使用的FLV视频(直到HTML5将统治世界)。最好的办法是用一些转换器(如ffmpeg)转换它们,但如果你不能访问原始视频或由于某些其他原因你无法以其他合适的格式进行转换,这里你可以找到一个关于如何在Android应用程序中嵌入和播放Flash FLV视频的快速教程。
这是通过使用WebView,一个能够播放FLV的SWF播放器,当然还有安装Android的Flash插件来完成的。
首先,使用WebView创建一个布局xml,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<WebView android:layout_width="fill_parent" android:id="@+id/webview" android:layout_height="fill_parent"></WebView> </LinearLayout>
然后,创建Activity类,这是一个提取:
package it.synesthesia.flvplayer;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URLEncoder;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
public class ViewVideo extends Activity {
WebView webView;
String htmlPre = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"></head><body style='margin:0; pading:0; background-color: black;'>";
String htmlCode =
" <embed style='width:100%; height:100%' src='http://www.platipus.nl/flvplayer/download/1.0/FLVPlayer.swf?fullscreen=true&video=@VIDEO@' " +
" autoplay='true' " +
" quality='high' bgcolor='#000000' " +
" name='VideoPlayer' align='middle'" + // width='640' height='480'
" allowScriptAccess='*' allowFullScreen='true'" +
" type='application/x-shockwave-flash' " +
" pluginspage='http://www.macromedia.com/go/getflashplayer' />" +
"";
String htmlPost = "</body></html>";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_video);
webView = (WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setPluginsEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); //thanks Patrick!
htmlCode = htmlCode.replaceAll("@VIDEO@", video_link);
webView.loadDataWithBaseURL("fake://fake/fake", htmlPre+htmlCode+htmlPost, "text/html", "UTF-8", null);
}
@Override
protected void onPause(){
super.onPause();
callHiddenWebViewMethod("onPause");
webView.pauseTimers();
if(isFinishing()){
webView.loadUrl("about:blank");
setContentView(new FrameLayout(this));
}
}
@Override
protected void onResume(){
super.onResume();
callHiddenWebViewMethod("onResume");
webView.resumeTimers();
}
private void callHiddenWebViewMethod(String name){
// credits: http://stackoverflow.com/questions/3431351/how-do-i-pause-flash-content-in-an-android-webview-when-my-activity-isnt-visible
if( webView != null ){
try {
Method method = WebView.class.getMethod(name);
method.invoke(webView);
} catch (NoSuchMethodException e) {
Lo.g("No such method: " + name + e);
} catch (IllegalAccessException e) {
Lo.g("Illegal Access: " + name + e);
} catch (InvocationTargetException e) {
Lo.g("Invocation Target Exception: " + name + e);
}
}
}
}
一些解释:
答案 1 :(得分:2)
不,这是不可能的。在Android上提供媒体播放的OpenCORE媒体库不支持.flv文件。
您可以找到支持的媒体格式列表here。通用Android支持这些格式。在同一页面上,您将找到T-Mobile G1支持的一些其他格式。
当然,在特定设备上可能支持其他媒体格式。但这可能因设备而异。
答案 2 :(得分:1)
试试vitamio。它是一个类似于媒体播放器的库,可以很容易地导入到您的项目中。唯一的问题是它也支持flv视频文件。