当前位置:  编程技术>移动开发
本页文章导读:
    ▪ubuntu/Mac系统智能卡操作全攻略2-Java Card之旅        ubuntu/Mac系统智能卡操作全攻略2--Java Card之旅上一个攻略讲到怎么打通linux到读卡器的访问,以及实现最底层的APDU收发。现在让我们进阶一下,进入JavaCard的环境: 关于在ubuntu上搭建JavaCard开.........
    ▪ 广电总局禁止电视“下网”        广电总局禁止电视“上网” 据21世纪经济报道,广电总局7月14日下发的一则内部通知,禁止一些视频网站与机顶盒厂商合作推出的机顶盒产品,接下来对智能电视的互联网内容监管条例也可.........
    ▪ 阻截MPMoviePlayerController的点击事件       拦截MPMoviePlayerController的点击事件为了解决在MPMovieController上添加一个和控制栏一起显示的按钮,特别研究了一下MPMoviePlayerController的结构 (controlStyle是default,为了便于查看,省去了部分输出): .........

[1]ubuntu/Mac系统智能卡操作全攻略2-Java Card之旅
    来源: 互联网  发布时间: 2014-02-18
ubuntu/Mac系统智能卡操作全攻略2--Java Card之旅

上一个攻略讲到怎么打通linux到读卡器的访问,以及实现最底层的APDU收发。现在让我们进阶一下,进入JavaCard的环境:

关于在ubuntu上搭建JavaCard开发环境,参阅我之前的博客--http://blog.csdn.net/caesarzou/article/details/7534493 , 本文主要讲一下JavaCard的应用下载环境:GP相关的工具。

上一篇文章的环境是ubuntu 11.10在12.04下ant已经升级,不再支持jre1.5。所以先做小小修正

1. 在~/.bashrc中删除JAVA_HOME的定义,使用默认的JRE: OpenJDK icetea

2. 修改~/javacard/samples/build_samples.xml中的编译任务javac,增加属性:fork="true" executable="/usr/lib/jvm/java-1.5.0-sun" 或者增加 target="1.5" 来使用sun的1.5jdk编译或者使用当前的jdk编译1.5版本的字节码。

3. 之前描述了JCOP 3.1.1b eclipse插件在ubuntu上的安装,但只支持了虚拟卡片。我们现在已经打通了PCSC,现在就让这个插件来操作实卡。

#首先打开eclipse,我们发现debug configuration部分的PCSC部分是灰的,不能选择读卡器。

#来到插件的目录

cd /usr/lib/eclipse/plugins/com.ibm.bluez.jcop.eclipse_3.1.1.b/

ls

#我们可以看到操作系统的支持目录

cd os/linux/x86

ls

#可以看到插件在linux下pcsc接口的动态库文件libjpcsc.so,为啥没起效呢? 我们来分析一下

ldd libjpcsc.so

可以看到此动态库依赖的一个动态库找不到了:libpcsclite.so.0

#是不是很眼熟。没错,这正式pcsclite的库。链接失败可能是因为libjpcsc.so编译的时候链接的pcsclite的库版本和当前系统的版本不符。

#我们安装的pcsclite的库是gnu的,所以来到目录

cd /usr/lib/i386-linux-gnu

ls libpcsclite*

#可以找到系统的pcsclite库文件:libpcsclite.so (随着版本不同可能会有变化,具体参考 libpcsclite.la中的libtools的描述)

sudo ln -P libpcsclite.so ../libpcsclite.so.0

#为此库文件建立一个硬链接,再次检查 libjpcsc.so 可以看到链接成功了。

#重新打开eclipse,打开debug configurations, 建立一个Java Card Application的配置,可以看到Card Reader一栏已经激活,选择读卡器,配置好ISD和Key,点Debug。

熟悉的JCShell打开了!

GlobalPlatform自己的开源项目GPShell也有for linux的版本,但是down下来之后编译总是失败,有搞定的同学可以指点一下。

anyway,javacard开发和下载的主要环境已经搭好。做JavaCard Applet的同学可以从windows上搬家过来了。 开发COS的同学,还需要搞定gcc交叉编译~~~我正努力尝试中,希望相应的攻略尽快出来。



    
[2] 广电总局禁止电视“下网”
    来源: 互联网  发布时间: 2014-02-18
广电总局禁止电视“上网”

据21世纪经济报道,广电总局7月14日下发的一则内部通知,禁止一些视频网站与机顶盒厂商合作推出的机顶盒产品,接下来对智能电视的互联网内容监管条例也可能出台。

  根据这则内部通知,广电总局要求互联网经机顶盒(DVD机等)向电视机终端提供视听节目服务的,均须按照国务院关于推进三网融合的有关要求,在经批准的试点城市,由广电部门另行组织。而在广电总局没有开放通过互联网经机顶盒(DVD机等)向电视机终端提供视听节目服务的许可前,各持证网站严禁从事相关业务,不得以内容提供商的身份与非法开展互联网电视业务的公司开展合作。

  这次广电总局的通知,主要是针对深圳华强北等地出现的大量可直接上网的机顶盒或DVD。这些机顶盒或DVD盒子可以让电视机直接登录互联网,而很多正规DVD厂商也在纷纷计划推出可以上网的DVD或蓝光碟机。显而易见,这些是这次广电通知监管的重点。不过,彩电厂商推出的智能电视,很多已经可以直接登录互联网。这次下发的通知则还没有涉及到智能电视。

  在我看来,广电总局这次下发通知,禁止电视机“上网”的行为,是逆时代潮流,是对于“新媒体”时代负隅顽抗的反击。

  由于电视观看在线视频的体验要比电脑好,国内外都在发展能否上网的流媒体机顶盒,在国外,不仅仅Google TV、Apple TV等产品可以提供电视上网功能,连Wii等游戏机都提供上网功能,实现了将网络与电视相结合的目标,完全颠覆我们使用电视的传统方法,有着庞大的商机,市场发展前景不可限量。

  在内容方面,大量的互联网视频网站也提供了传统电视所没有的海量电影、电视的点播服务,如果能通过一个简单轻巧的机顶盒将海量的互联网资源整合到电视里,无论对于最终用户、视频网站、广告商来说都是多赢,唯一吃亏的就是传统的电视广告业务。

  广电试图通过政策限制电视上网,与国家的“三网融合”政策相抵触,让广电、电信的网络整合陷入了僵局。好在目前中国的互联网不是广电来管理,要是让这样的部门要是来管理,中国的互联网肯定玩完。

  我曾经在《电视引领“低智商社会”》一文中指出,随着社会的发展,网络等新的媒体发展迅速,从某种角度来说它已经取代了电视。越来越多的人已经不看电视了,新闻都是从网上看的,通过网络获取信息更快更准确,可以节省大量的时间,电视的确已经落伍了。

  目前的新科技的发展出现日新月异的情况,新兴的互联网视频已经出现取代传统电视的趋势,类似YouTube的互联网视频网站的兴起带来了传播的有一次革命性发展,传统电视行业如果再不思改变,继续固步自封,那么很有可能会被新兴的网络媒体所取代。


    
[3] 阻截MPMoviePlayerController的点击事件
    来源: 互联网  发布时间: 2014-02-18
拦截MPMoviePlayerController的点击事件

为了解决在MPMovieController上添加一个和控制栏一起显示的按钮,特别研究了一下MPMoviePlayerController的结构 (controlStyle是default,为了便于查看,省去了部分输出):

(lldb) po [m_view recursiveDescription]

(id) $1 = 0x179529f0 <UIView: 0xfdb55f0; frame = (0 0; 604 256); layer = <CALayer: 0xfd83a10>>

   | <MPMovieView: 0xde71d70; frame = (0 0; 604 256); 

   |    | <MPSwipableView: 0x1d774dc0; frame = (0 0; 604 256); 

   |    |    | <MPVideoBackgroundView: 0x1d775160; frame = (0 0; 604 256); 

   |    |    |    | <UIView: 0x1d776160; frame = (0 0; 604 256); 

   |    |    |    | <MPVideoView: 0x1d7740e0; frame = (0 0; 604 256); 

   |    |    |    |    | <UIView: 0x1d773fc0; frame = (142 -32; 320 320); 

   |    |    |    |    |    | <MPVideoBufferLayerContainer: 0x1d772050> (layer)

   |    |    |    |    |    |    | <MPVideoBufferLayer: 0x22ebdb20> (layer)

   |    |    |    |    |    |    |    | <AVPlayerLayerContentLayer: 0xf99d780> (layer)

   |    |    |    |    |    |    |    |    | <FigVideoLayer: 0xdbaab80> (layer)

   |    |    |    |    |    |    |    | <AVPlayerLayerSubtitleLayer: 0x22eaf480> (layer)

   |    |    |    |    |    |    |    |    | <AVSubtitleTextLayer: 0x22ea70f0> (layer)

   |    |    |    | <MPInlineVideoOverlay: 0x1d77e7c0; frame = (0 0; 604 256); 

   |    |    |    |    | <MPInlineTransportControls: 0x1d77edc0; frame = (0 212; 604 44);

   |    |    |    |    |    | <MPDetailSlider: 0x1d7837c0; baseClass = UISlider; frame = (70 12; 475 24); 

   |    |    |    |    |    |    | <UILabel: 0x1d78e1b0; frame = (-8 -2; 45 25); text = '0:00';

   |    |    |    |    |    |    | <UILabel: 0x1d78e240; frame = (438 -2; 45 25); text = '-0:00'; 

   |    |    |    |    |    |    | <UIImageView: 0x1d78e300; frame = (68 5; 360 11); 

   |    |    |    |    |    |    | <UIImageView: 0x1d78e3a0; frame = (47 5; 21 11); 

   |    |    |    |    |    |    | <UIImageView: 0x1d78c7e0; frame = (47 6; 381 10); 

   |    |    |    |    |    |    | <UIImageView: 0x1d78e430; frame = (57 2; 22 21); 

   |    |    |    |    |    | <MPTransportButton: 0x1d785a50; baseClass = UIButton; frame = (34 14; 16 18); 

   |    |    |    |    |    |    | <UIImageView: 0x1d785c70; frame = (0 0; 16 18); 

   |    |    |    |    |    |    | <UIImageView: 0x1d785bb0; frame = (-42 -41; 100 100); 

   |    |    |    |    |    | <MPTransportButton: 0x1d785dd0; baseClass = UIButton; frame = (564 16; 13 14); 

   |    |    |    |    |    |    | <UIImageView: 0x1d785ff0; frame = (0 0; 13 14); 

   |    |    |    |    |    |    | <UIImageView: 0x1d785f30; frame = (-43.5 -43; 100 100); 

   |    |    |    |    |    | <UILabel: 0xde72ce0; frame = (265 13; 74 19); text = 'Loading…'; 

   |    |    |    |    |    | <UIActivityIndicatorView: 0xde730d0; frame = (239 12; 20 20); 

   |    |    |    |    |    |    | <UIImageView: 0xde77e90; frame = (0 0; 20 20); 

   |    |    |    |    | <MPNowPlayingItemQueueInfoButton: 0x1d786690; baseClass = UIButton; frame = (251 10; 103 23); 

   |    |    |    |    |    | <UIImageView: 0x1d786750; frame = (0 0; 103 23); 

   |    |    |    |    |    | <UIButtonLabel: 0x1d788a50; frame = (0 0; 0 0); 


MPInlineVideoOverlay是显示控制栏的浮动view。Touches事件的获取要基于MPVideoBackgroundView进行处理。其中两个MPTransportButton分别是播放和全屏按钮。


对于事件获取,可以使用添加一个UITapGestureRecognizer的方式,不过这种方式会导致原来的操作失效,因为相关的事件被拦截了。另外一种简单的方式是向现有的UITapGestureRecognizer添加一个target即可,这样不会打乱原先的消息传递:


-(void) addTargetActionToGesture:(UIView *)view

{

    NSArray * gestureGroup = [view gestureRecognizers];

    for(UITapGestureRecognizer * g in gestureGroup)

    {

        [g addTarget:selfaction:@selector(handleMoviePressed:)];

    }

}


转载请注明出处:http://blog.csdn.net/horkychen



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪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