摘要:本文主要向大家介绍了Flash基础入门之flash数据交互,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。
本文主要向大家介绍了Flash基础入门之flash数据交互,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。
[java] view plain copy
//类中类:定义js中调用的Android类
lass RunJavaScript {
public void runJs2Activity(String str) {
strFromJs = str;
mScriptHandler.removeCallbacks(mPlayerRunnable);
mScriptHandler.postDelayed(mPlayerRunnable, 300);
}
Android中是Vebview加载html文件的,其中交互类的别名是这样定义的
[java] view plain copy
//给网页文件添加Android与JS交互函数的定义
mWebView.addJavascriptInterface(new RunJavaScript(), "playerJs");
下面是Android完整代码
[java] view plain copy
package com.ideal.swfplayer;
/************************
*用来加载flash.html文件*
************************/
import java.io.File;
import java.util.Timer;
import java.util.TimerTask;
import sunvision.database.DBOperation;
import sunvision.dialog.MatchDialog;
import sunvision.dialog.TipDialog;
import sunvision.dialog.VersionDialog;
import sunvision.file.FileOperation;
import sunvision.tools.FlashPath;
import sunvision.tools.IdealSystemProperties;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainFlashActivity extends Activity {
private WebView mWebView = null;
private FrameLayout mFrameLayout = null;
private ImageView mImageView = null;
private Timer mTimer = null;
private Timer mTimer2 = null;
private WebSettings settings;
private String strFromJs = "";
private String TAG = "SwfPlayer";
private int mLoadingIndex = 0;
private int mWebViewLoadTimes = 0;
private int versionloadtime=0;
private MatchDialog mDialogManager;
private Handler mHandler = null;
private FileOperation mFileUnit;
private boolean isversionup=true;
Handler mScriptHandler = new Handler() {};
//加载驱动
public native void native_initPlayer( ) throws Exception;
public native void native_prepare() throws Exception;
public native void native_start();
public native void native_finish();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flash);
//初始化UI界面
InitUI();
//加载主界面
loadSwf(FlashPath.MainPath);
//等待消息传过来更新界面
//mHandler.post(task); //启动定时器1秒刷新一次
mHandler = new Handler() {
@SuppressLint("Recycle")
public void handleMessage(Message msg) {
Log.i(TAG, "PlayerActivity-mLoadingIndex==" + mLoadingIndex);
switch (msg.arg1) {
case 0:
mImageView.setImageResource(R.drawable.flashloading);
break;
case 1:
mTimer.cancel();
mImageView.setVisibility(View.GONE);
mImageView.destroyDrawingCache();
mLoadingIndex = 0;
break;
case 6:
mWebView.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN, mWebView.getLeft() + 5,mWebView.getTop() + 5, 0));
mWebView.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_UP,mWebView.getLeft() + 5, mWebView.getTop() + 5, 0));
break;
default:
break;
}
super.handleMessage(msg);
}
};
}
//UI界面初始化函数
private void InitUI() {
mFileUnit = new FileOperation(getApplicationContext());
mFileUnit.createFlashPlayerTrust();
mFrameLayout = (FrameLayout) findViewById(R.id.player_frameLayout);
mImageView = (ImageView) findViewById(R.id.swf_loading_img);
mWebView = (WebView) findViewById(R.id.webView_show);
}
//加载Flash动画
@SuppressLint({ "SetJavaScriptEnabled", "Recycle" })
public void loadSwf(String swfPath) {
//获得配置函数
settings = mWebView.getSettings();
//设置允许与js交互
settings.setJavaScriptEnabled(true);
//设置允许文件操作
settings.setAllowFileAccess(true);
//设置允许使用Adobe Flash播放视频
settings.setPluginState(PluginState.ON);
//设置加载方式是替换加载,而不是新页面加载
settings.setLoadWithOverviewMode(true);
//设置编码方式
settings.setDefaultTextEncodingName("GBK");
//设置透明背景
mWebView.setBackgroundColor(0);
//重写Flash加载辅助函数
mWebView.setWebChromeClient(new WebChromeClient() {
public void onShowCustomView(View view, int requestedOrientation,
WebChromeClient.CustomViewCallback callback) {
super.onShowCustomView(view, callback);
//Android SDK版本
if (Build.VERSION.SDK_INT >= 14) {
if (view instanceof FrameLayout) {
mFrameLayout.addView(view,new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT,Gravity.CENTER));
mFrameLayout.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onHideCustomView() {
super.onHideCustomView();
}
});
//重写Flash加载主要函数
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
//Flash启东时调用
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
mWebViewLoadTimes++;
}
//Flash加载完成之后调用
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//Flash加载之前会有一段时间是白屏,为了掩盖,让五张图片隔时刷新
if (mWebViewLoadTimes == 1) {
mTimer = new Timer();
mTimer.schedule(new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what = 0;
msg.arg1 = mLoadingIndex;
mHandler.sendMessage(msg);
mLoadingIndex++;
}
}, 0, 2000);
//flash偶尔会失去焦点,让flash加载完成之后每隔2秒点击一次界面获得焦点
mTimer2 = new Timer();
mTimer2.schedule(new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what = 0;
msg.arg1 = 6;
mHandler.sendMessage(msg);
}
}, 0, 2000);
} else if (mWebViewLoadTimes >= 2) {
mWebViewLoadTimes = 0;
String path = FlashPath.TIP_NO_FILE;
Intent intent = new Intent(MainFlashActivity.this,NoFileFlashActivity.class);
intent.putExtra("swfPath", path);
startActivity(intent);
MainFlashActivity.this.finish();
}
}
});
//给网页文件添加Android与JS交互函数的定义
mWebView.addJavascriptInterface(new RunJavaScript(), "playerJs");
//设置网页能够获得焦点
mWebView.requestFocusFromTouch();
mWebView.requestFocus();
mWebView.setFocusable(true);
//设置完毕之后加载Flash
mWebView.loadUrl(swfPath);
}
//类中类:定义js中调用的Android类
class RunJavaScript {
public void runJs2Activity(String str) {
strFromJs = str;
mScriptHandler.removeCallbacks(mPlayerRunnable);
mScriptHandler.postDelayed(mPlayerRunnable, 300);
}
}
//类中接口:当js调用RunJavaScript时,新开辟线程处理消息,这里是接口
Runnable mPlayerRunnable = new Runnable() {
@Override
public void run() {
//文件操作行为
if (strFromJs.equals("file1_open")||strFromJs.equals("file2_open")||strFromJs.equals("file3_open")||strFromJs.equals("file4_open")||strFromJs.equals("file5_open")||strFromJs.equals("file6_open") ) {
File folder = new File("/mnt/external_sd/");
//TF卡存在
if(folder.length()>0){
Intent intent = new Intent(MainFlashActivity.this,FileListActivity.class);
intent.putExtra("filename", strFromJs);
startActivity(intent);
//TF卡不在
}else{
TipDialog mTipDialog = new TipDialog(MainFlashActivity.this, R.style.IdealDialog,R.drawable.no_tf_card,3);
//设置背景透明度
WindowManager.LayoutParams lp=mTipDialog.getWindow().getAttributes();
lp.dimAmount=0.7f;
mTipDialog.getWindow().setAttributes(lp);
mTipDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
mTipDialog.show();
}
}
}
};
//加载Antivity是调用
@SuppressLint("Recycle") @Override
protected void onResume() {
super.onResume();
//flash在回到该Activity是能够继续播放
try {
mWebView.getClass().getMethod("onResume").invoke(mWebView, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}
//Activity停止时调用
@Override
protected void onPause() {
super.onPause();
//允许flash暂停播放
try {
mWebView.getClass().getMethod("onPause").invoke(mWebView, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}
//该Activity销毁时调用
@Override
protected void onDestroy() {
super.onDestroy();
mWebView.destroyDrawingCache();
mWebView.destroy();
try {
mHandler.removeMessages(0);
mTimer.cancel();
} catch (Exception e) {
}
}
}
Android加载flash时有一些要注意的问题:Webview加载flash一开始会出现白屏,可以通过刷图的形式掩盖;刚加载完flash,它还无法获得Android用户的焦点事件,必须在代码里面模拟点击屏幕,才可以获得焦点;在运行flash的过程中可能会出现焦点丢失的情况,我的方案是每隔几秒点击屏幕一次;Android加载flash需要flash插件,必须确保插件装好了,但是。即使插件装好了也不能通信,必须要把要加载的flash的路径写到flash插件安装目录下的安全路径文件中,这点非常重要,如读者遇到该问题,需要帮助的话可在线留言~
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标常用软件Flash频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号