当前位置:  编程技术>移动开发
本页文章导读:
    ▪RAPI初始化算法跟SAMPLE CODE        RAPI初始化算法和SAMPLE CODE RAPI全写为Remote Application Interface, 就是PC端调用这组API, 通过ActiveSync来操作TARGET端WindowsCE作业. 这个功能估计以后在WINCE或WIN MOBILE的应用上会用到许多 我今天修改了同.........
    ▪ 监测url是不是包含图片        监测url是否包含图片 URLConnection connection = new URL("http://foo.bar/3afv").openConnection(); String contentType = connection.getHeaderField("Content-Type"); boolean image = contentType.startsWith("image/");  ......
    ▪ editText 的消除焦点有关问题       editText 的消除焦点问题 需求: 点击一个按钮,按钮上方的editText的焦点就被移除。   还是不明白,为什么clearFocus()及.setSelected(false)没有用,难道这两个方法不是他们名字看起来的用法??.........

[1]RAPI初始化算法跟SAMPLE CODE
    来源: 互联网  发布时间: 2014-02-18
RAPI初始化算法和SAMPLE CODE



RAPI全写为Remote Application Interface, 就是PC端调用这组API, 通过ActiveSync来操作TARGET端WindowsCE作业. 这个功能估计以后在WINCE或WIN MOBILE的应用上会用到许多

我今天修改了同事留下的Updateboot.exe的代码, 改进蓝牙读写的模块. 这个地方我们用到了RAPI, 看一下他们在程序中初始化RAPI的做法

 HRESULT hRapiResult;
 hRapiResult = CeRapiInit();
 if(hRapiResult != S_OK)
 {
     m_ValueEdit.SetWindowText((LPCTSTR)"初始化RAPI失败");
     return;
 }

看起来是平淡无奇, 实际上单步一下就可以发现运行到CeRapiInit()时, 程序就BLOCK在这里了,死活走不下去, 并没有达到 if(hRapiResult != S_OK)的预期目的. 我查了一下CeRapiInit()的说明:

A call to CeRapiInit does not return until the connection is made, an error occurs, or another thread calls CeRapiUninit.

也就是说像我现在并没有把板子和PC相连并启动ACTIVE SYNC时, 这个CeRapiInit()是肯定赖着不走了, 程序会死在这里. (鄙视一下谁写的代码,这个坑好大啊)  因此想到了重新创立个等待进程调用CeRapiUninit来干掉它. 不过这样做显然不厚道, 创立进程需要占用更多的内存. 所以用了上句说明的下半段:

The CeRapiInitEx function does not block the calling thread. Instead, it uses an event to signal when initialization is complete.

建立个事件, 用WaitForSingleObject来等他, 超时就BYEBYE了. 贡献自己写的如下代码, 以后RAPI INIT可以参考

BOOL RapiInitialzation()
{
    RAPIINIT struRapiInit;   //这个是CeRapiInitEx函数要求的入口参数
    DWORD dwWaitResult = 0;  //等待初始化完成事件的变量
    HRESULT hRapiResult = NULL; //CeRapiInitEx的返回HANDLE

    if ( m_bRapiInitFlag == FALSE ) //全局的一个FLAG,如果初始化过就不再重复了
    {
        struRapiInit.cbSize = sizeof(RAPIINIT);  //填满该结构体仅有的三个成员
        struRapiInit.hrRapiInit = NULL;  //明知是输出参数也顺手填一下, 我以前吃过亏, 惊弓之鸟
        struRapiInit.heRapiInit = NULL;

        hRapiResult = CeRapiInitEx(&struRapiInit);  //关键点

        m_ValueEdit.SetWindowText((LPCTSTR)"Wait 2 second for RapiInit"); //后面2秒程序要顿一下了, 得告诉用户.  m_ValutEdit和对话框里一个IDC_STATIC关联了.
        dwWaitResult = WaitForSingleObject(struRapiInit.heRapiInit, 2000);  //关键点

        if( hRapiResult == S_OK && 
            struRapiInit.hrRapiInit == S_OK &&
            dwWaitResult != WAIT_TIMEOUT)    //保守起见, 三个返回值都判断
        {
           m_bRapiInitFlag = TRUE;
           return TRUE;
        }
        else
        {
            m_ValueEdit.SetWindowText((LPCTSTR)"The initialization of RAPI falied, you need to install an ActiveSync or connect the IPTV to PC");   //一般是没连接导致, 当然也可能用户没装ActiveSync
           return FALSE;
        }
    }
    else
    {
         m_bRapiInitFlag = TRUE;
         return TRUE;
    }
}

 


    
[2] 监测url是不是包含图片
    来源: 互联网  发布时间: 2014-02-18
监测url是否包含图片

URLConnection connection = new URL("http://foo.bar/3afv").openConnection(); 
String contentType = connection.getHeaderField("Content-Type"); 
boolean image = contentType.startsWith("image/"); 


    
[3] editText 的消除焦点有关问题
    来源: 互联网  发布时间: 2014-02-18
editText 的消除焦点问题

需求: 点击一个按钮,按钮上方的editText的焦点就被移除。

 

还是不明白,为什么clearFocus()及.setSelected(false)没有用,难道这两个方法不是他们名字看起来的用法???

 

最后是这么解决的:

 

找到界面上的一个view

 

view.setFocusableInTouchMode(true);
view.setFocusable(true);
view.requestFocus();

 

焦点就被成功移除哈


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪根据USER-AGENT判断手机类型并跳转到相应的app... iis7站长之家
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3