项目背景是这样的,一套系统有三个客户端分别是网页,flex和android,现在已经在flex上面做好了一个在线客户视频聊天系统,然后在这个基础上修改打包成了SWF,放在网页上面使用效果不错,但是利用这样的方式放在移动端就是会卡在连接服务器的地方(初步了解应该是服务器是基于RTMP的Red5服务器,android目前不支持RTMP协议),然后网上这方面的都是利用webview来嵌入SWF,所以思路错了,造成了走了不少弯路,记录下来从最初到最后实现的过程吧
这一片介绍直接在webview中嵌入swf,不经过任何处理(比较暴力的方式)
MainActivity :
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loadFlash(); } public void loadFlash() { WebView mWebFlash = (WebView) findViewById(R.id.web_flash); WebSettings settings = mWebFlash.getSettings(); settings.setPluginsEnabled(true); settings.setJavaScriptEnabled(true); settings.setAllowFileAccess(true); settings.setDefaultTextEncodingName("GBK"); mWebFlash.setBackgroundColor(0); mWebFlash.loadUrl("file:///android_asset/NewSampleClient.swf"); } public String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(Environment.MEDIA_MOUNTED); //判断sd卡是否存在 if (sdCardExist) //如果SD卡存在,则获取跟目录 { sdDir = Environment.getExternalStorageDirectory();//获取跟目录 } return sdDir.toString(); } }
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/web_flash" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="horizontal" /> </FrameLayout > </FrameLayout>
最后别忘记追加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
下一篇介绍基于HTML模板的方式潜入SWF,这样我们就可以把android,JS,AS这三部分代码进行交互了
博客地址:http://qiaoyihang.iteye.com/