【转载请注明来源自http://hi.baidu.com/goldchocobo/

       Android客户端中混搭HTML页面,会出现虽然HTML内容载入完成,标题也正常显示,但是整个网页需要等到近5秒(甚至更多)时间才会显示出来。研究了很久,搜遍了国外很多网站,也看过PhoneGap的代码,一直无解。

       一般人堆WebView的加速,都是建议先用webView.getSettings().setBlockNetworkImage(true); 将图片下载阻塞,然后在浏览器的OnPageFinished事件中设置webView.getSettings().setBlockNetworkImage(false); 通过图片的延迟载入,让网页能更快地显示。

但是,通过实际的日志发现,Android的OnPageFinished事件会在Javascript脚本执行完成之后才会触发。如果在页面中使用JQuery,会在处理完DOM对象,执行完$(document).ready(function() {});事件自会后才会渲染并显示页面。

 

   可以看到在载入完最后一个JS脚本之后,对DOM元素的渲染和处理就花了8秒,然后执行了AJAX方法载入外部页面又花了2、3秒,最后才会触发onPageFinished显示页面。再往后由于程序中设置了setBlockNetworkImage(false),所以开始载入外部图片。(如果不控制这个参数,图片载入会在渲染期间下载。  综上,由于JS脚本的处理,造成了一张页面打开多花了10秒左右时间。而同样的页面在iPhone上却是载入相当的快,显示完页面才会触发脚本的执行。(提示:如果使用JQueryMobile,更会慢得离谱)

         要解决这个问题,就是想办法让浏览器延迟加载JS脚本,但是Android的WebView控件没有这样的参数。无法单独阻塞JS脚本,另外有个setBlockNetworkLoads,用了之后也无法实现类似图片的异步载入的功能,页面成了光板,连CSS也阻塞了。

         就是这个问题困扰了很久,直到在做HTML照片墙时,由于setBlockNetworkImage在OnPageFinished之后才会释放,导致在JS脚本载入图片过程中无法获取图片的高宽信息,最后巧妙地通过$(document).ready(function() {setTimeout(func,10)});,成功将函数在onPageFinished之后运行。那么延伸来想,是否可以将JS脚本也用同样的方式延迟载入呢?

          答案是肯定的,在http://wonko.com/post/painless_javascript_lazy_loading_with_lazyload可以找到JS脚本延迟加载的第三方组件。

         我改造了之前速度奇慢的界面,我所使用的核心JS代码如下:

戮克 發表在 痞客邦 留言(0) 人氣()

【IT168 资讯】“如果说现在是教育信息技术与课堂融合的春天,我们的目的是走过这片沙漠,让技术为教育所用,让教育回归本源,让我们课堂教学创造出更个性化的学习,这个目标是明确的,但是走过这片沙漠的路线现在还不是太清晰。所以我们需要试验田,要有先行者。”

  ——上海市教委基教处副处长焦小峰

  从电教室、教学课件发展到电子白板平板电脑,数字化教学设备的更迭反映了教育理念的不断革新,以及信息技术的创新应用,这使得通过IT技术推动教育变革,提升教学质量不再只是纸上谈兵。在我国中小学,数字化教学已经步入应用阶段,个性化的课堂教学因为有了创新教学理念、学习终端的支持得以在越来越多的中小学校实现。然而,我国的数字化教学部署仍处在初期,优秀数字化教学资源的匮乏限制了个性化教学的开展;而现有的数字化教学资源又亟待整合;教师运用信息技术的能力也有待提高。面对种种挑战,商用平板和HTML5技术的应用无疑为个性化教学的开展提供了新的思路和机会。

  个性化教学需以人为本,人适应技术的时代已成过去

  “在过去,学生使用电脑有专门的计算机房,学生们需要带着纸笔课本去上课,教学技术的应用受到了严格的空间和时间限制,而我们倡导的个性化教学,要以人为本,技术要服务于使用者,而不是人被动的适应技术”。上海市教育学会会长张民生在日前召开的数字化环境下的课堂教学变革创新实验项目会议上提出:“为了谈技术而应用技术是没有意义的,怎么能从教师和学生的角度去思考开展个性化教学需要的技术和应用模式才是正确的方向。”

HTML5技术:完善商用平板个性教学应用
▲学生使用平板电脑进行课堂学习

  得益于多年来支持教育行业发展过程中积累的经验,英特尔在为教育行业提供支持的过程中,将为客户提供定制化服务放在了重要的位置。英特尔亚太研发有限公司总经理何京翔表示:“英特尔始终坚持在技术创新方面的探索,在教育领域,我们不仅把定制化的终端设备提供给学生,也从教师培养、基础设施建设、软件工具开发等多个方面提供支持,基于HTML5技术的交互式数字教材制作工具集,就充分考虑了目前个性化教学发展的新需求。”

  商用平板广泛试点,呼唤HTML5技术支持

  在传统的课堂教学中,文字教材是唯一的知识传递媒介,教师是课堂的绝对主导者。因此,突破个性化教学发展瓶颈,重要的一环是要丰富教学资源,同时,增强学生在课堂上的参与度。目前,我国已有几千间教室使用英特尔的移动终端进行教学,近10万中小学生体验到了由此带来的学习乐趣,而基于英特尔架构的商用平板电脑凭借性能稳定、灵活便捷的特点更好的满足了数字化课堂对互动性和个性化的要求。学生们通过平板电脑浏览课堂教学内容,进行课堂互动,不仅将学习的范围扩展到了书本和课堂之外,也实现了与教师的即时互动。

戮克 發表在 痞客邦 留言(0) 人氣()

關鍵詞:MotionEvent,模擬按鍵,模擬點擊事件,主動彈出輸入法,彈出軟鍵盤。 歡迎轉載並說明轉自:http://go.rritw.com/blog.csdn.net/aminfo/articl

 

關鍵詞:MotionEvent,模擬按鍵,模擬點擊事件,主動彈出輸入法,彈出軟鍵盤。

歡迎轉載並說明轉自:http://go.rritw.com/blog.csdn.net/aminfo/article/details/7887964

 

一、布局文件showime.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical">
                
        <Button android:id="@+id/ButtonIME"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5px"
            android:text="彈出軟鍵盤輸入法" />
        
            
        <EditText android:id="@+id/EditTextIME"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5px"
            android:text="顯示輸入法鍵盤"/>

</LinearLayout>


二、Activity,ShowIME.java文件源碼:

package org.shuxiang.test;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class ShowIME  extends Activity
{
        private EditText et;
        private Button bt;
        private static Handler messageHandler;
        
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.showime);
        
        bt = (Button) findViewById(R.id.ButtonIME);
        bt.setOnClickListener(new OnClickListener()
        {
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                        et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, et.getLeft()+5, et.getTop()+5, 0));
                        et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, et.getLeft()+5, et.getTop()+5, 0));
                        }
        });        
        et = (EditText) findViewById(R.id.EditTextIME);
        
        
        Looper looper = Looper.myLooper();
        messageHandler = new MessageHandler(looper);        
        //此處的作用是延遲1秒,然後激活點擊事件
        //歡迎轉載並說明轉自:http://go.rritw.com/blog.csdn.net/aminfo/article/details/7887964
        new Thread()
        {
                @Override
                public void run()
                {
                        synchronized(this)
                        {
                                try
                                {
                                        wait(1000); //1秒
                                }
                                catch (InterruptedException e)
                                {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                        Message message = Message.obtain();
                                message.what = 1;
                    messageHandler.sendMessage(message);
                }
        }.start();        
    }
    
    class MessageHandler extends Handler
    {
        public MessageHandler(Looper looper)
        {
                super(looper);
        }
        @Override
        public void handleMessage(Message msg)
        {
                Bundle bundle = msg.getData();
                switch (msg.what)
                {
                case 1:
                        //模擬點擊按鈕
                        bt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, et.getLeft()+5, et.getTop()+5, 0));
                bt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, et.getLeft()+5, et.getTop()+5, 0));
                
                //以下代碼模擬點擊文本編輯框
                //et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, et.getLeft()+5, et.getTop()+5, 0));
                //et.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, et.getLeft()+5, et.getTop()+5, 0));
                        break;
                default:
                        break;
                }
                
        }
    }
}


歡迎轉載並說明轉自:http://go.rritw.com/blog.csdn.net/aminfo/article/details/7887964

戮克 發表在 痞客邦 留言(0) 人氣()

一个在一起10多年的朋友了,至今是我们朋友圈子里的大熊猫,此人性格怪异,乃人中之极品,如果不拿出他的一些事情给大家分享,可能真的对不起他的出众。

1、男,1米82,今年27周了,81年的,相貌也不丑。在南京来说家里算很不错的,房子不少,老头是打桩老板。但是此人相当封建,认为恋爱应该从一而终,所以至今处男,仍在等待和自己一样想法的美
貌女子为妻,每每相亲开头第一句话总是:“你是处女吗?”所以都以失败而告终,至尽仍然单身。

2、此人头脑每天都在想心思,有点爱因思坦或牛顿的味道,但是没有人知道他在想什么,不管是谁,只要你喊他开车送你回家,他认识你家,就往你安家的方向开,但是到了你家门口他总是不会停的,而且一直往前开,只要你不提醒他就一直开下去,也不管前面是哪,如果你告诉开他过了,他总是直接猛打方向掉头,不管后面有车没车,几次送朋友回家都与后面的司机发生冲突。

3、想心思是此人搞笑的关键,他一般不和人说话,只是低头或者拖腮想心思,他每想到关键的时候总是叹气,好象对世态炎凉深有感触一般。有一次晚上吃完饭我说去你家玩,我就开他的车一起去他家,他坐副驾驶。不让他开是因为他到了自己家也会忘记停一直开下去。结果他到家了,竟然忘记我是来他家玩的,也忘记了车是他的而不是我的,对我说了句早点回去明天见,自己就上楼了,车也不要了,当时我就一阵冷战,奶奶的真火星人。

4、思前想后终于明白他为什么老想心思,此人上高中时候数学极好,每每都是全年极数学第一,但是偏科极为严重,会考的时候因为历史没过与高考无缘。更为奇怪的是他对没有上过大学的朋友总是嗤之以鼻,虽然他自己也没上过。正因为他出众的数学成绩,所以我们都说他可能不是地球人,可能是火星人的遗孤,并且说他火星的哥哥以后肯定会回来接他。从那以后他就一直研究火星和天体,宇宙的奥秘等等,好象随时准备回归故里。

5、有天中午喊他出来吃饭,他先来我家接我,然后一同去饭店,然后吃饭,其间他一直不说话在想心思。吃完饭他起身结帐就走了,我发现不对,喊了他一声,他一回头对我说了一句至尽仍让我心寒的话:“夷?你也在这吃饭?”从他来接我到吃完饭,他和我在一起一共一个多小时他基本已经忘记我的存在了。

6、此人走路从来不看路,只要低于他1米82视线以下的东西从来看不见,视力极好的他却经常撞到一些低于1米8的物体,最为经典的一次是去高淳吃螃蟹,他下车后左转,竟然被一台1米6左右高度的拖拉机绊倒。

7、当大家一直以为他只会看不见下面的时候,他却也看不见上面,去一个朋友家,大厅的灯吊的低了些,他每每走过总是额头撞灯,至今去那朋友家仍然撞灯,原来他的视线只与1米8相平,上下都不看。

8、我们都是年轻人,喜欢纠集一帮人一起去网吧CS,网吧离他家近,他总是骑摩托来,而且极守规矩,头盔是必带的。但是每次走的时候都忘记拿走,总要人提醒。有一次他没有骑摩托,但是我们还是“好心”提醒他别忘记带头盔,他猛回头,拿了别人的头盔就走,那位兄弟看着他愣了好半天,大白天的明抢啊。

9、还是在网吧,有一次我下楼正好碰到他上楼,楼梯窄,他也不看我,就往右一站让我先下,我一看他又在想心思,我就也往右挡住他,谁知他还是不抬头,往左一站,我又往左挡着他,他又往右,就这么来回了好几次,他终于抬头看见我。

戮克 發表在 痞客邦 留言(0) 人氣()

有时候我们的工作需要用到一些图片里面的文字.这样我们就会想起一些软件,比如汉王,CAJ

 

众所周知在我们的日常学习生活、工作中,如果想提取图片或图片型的PDF文件中的文字必须借助OCR文字识别技术,在OCR文字识别类的软件中,最好的就是OCR文字识别精度达到99%的ABBYY FineReader。

ABBYY FineReader 是一款世界排名第一的OCR文字识别工具,提供高效和精准的文档识别、数据提取解决方案,支持多国字符和彩色文件识别,主要用于将扫描图像、图片型PDF转化成可编辑的文本。

另外,你也可以把ABBYY FineReader 看作是超级PDF转换器,因为它能转换任意类型的PDF,支持功能:扫描到Word、将PDF/图像、图片转换为Word文档或者可编辑/可搜索的PDF文档,另外也支持将PDF/图像转换为Excel文档。

此次放出的是官网原版的ABBYY FineReader 11由于ABBYY FineReader是共享收费软件,所以在网上淘了一个注册破解包,破解方法很简单,直接下载解压破解包,然后将其中全部文件直接覆盖粘贴到ABBYY FineReader 11安装根目录即可。还是那句话:如果你有能力请直接购买正版ABBYY FineReader软件,支持ABBYY FineReader软件发展。反之…请低调!

 

ABBYY FineReader 11
 
ABBYY FineReader 11

ABBYY FineReader 11

戮克 發表在 痞客邦 留言(0) 人氣()

原文地址:http://blog.csdn.net/zhongyunde/article/details/7840717

 

OCR字符识别

2012-07-23 16:36:34| 分类:图像处理与计算机 | 标签:ocr |字号 订阅

 

简单、直观的实现优于复杂、难懂的实现,最近开发扑克识别过程的总结

http://www.cnblogs.com/xiaotie/archive/2010/05/23/1741946.html

最近开发了款通用的扑克识别程序,本文谈下心得。最开始是准备使用Shape Context或Zernike矩来识别的,写出了Shape Context,发现识别率达不到理想状态。接着准备用Zernike矩实现,查找文献发现,Zernike矩虽然理论上对旋转是不变的,但实际上,图像的旋转会导致识别率降低,加上样本不多,就放弃了这两种方法。最后,还是用最基本的模板匹配和Blob分析来解决的,在只有单一的样本的情况下,对不同字体不同印刷的扑克,对有扭曲、旋转以及轻微模糊的扑克,达到了99.9%的识别率(这0.1%还没出现,也就是说,理论上达到了100%)。由于是商业性开发,代码就不贴了,只谈原理。

模板匹配就不详谈了,这是最最基本的识别方法,详见《车牌识别及验证码识别的一般思路》。而所谓Blob,就是一个整体连着的图像像素块。Blob有许多特征,比如,长、宽、重心、面积等等,还有些更复杂的Blob特征,这里就不详述了,反正都没用上。这里只谈最简单最基本的Blob的特征。基本识别过程是:

(1)Blob特征识别,将图像分为几大组。

(2)对每一组使用模板匹配,进行识别。

戮克 發表在 痞客邦 留言(0) 人氣()