当前位置:  编程技术>移动开发
本页文章导读:
    ▪使用NSoperation多线程异步加载图        使用NSoperation多线程异步加载图… //具体下载的方法在这里执行。 -(void)start    定义如下: #import @protocol imageDownloaderDelegate; @interface ImageDownloader : NSOperation  {     NSURLRequest* _request;   .........
    ▪ MM应用发动机开发者大赛火热启动,iPad mini、红米手机…等你来拿        MM应用引擎开发者大赛火热启动,iPad mini、红米手机……等你来拿!  为吸引和聚拢广大开发者加入HTML5阵营,搭建技术交流分享的平台,促进HTML5和云生态系统的繁荣发展,MM开发环境联合.........
    ▪ 数目字有线机顶盒锁频流程       数字有线机顶盒锁频流程本文所介绍的高频头以DVB-c tuner(数字有线电视)为例 一、硬件解析(对硬件原理不熟悉,只能说个大概) 高频头(tuner),也称之为调频器,主要有三个功能: 1).........

[1]使用NSoperation多线程异步加载图
    来源: 互联网  发布时间: 2014-02-18
使用NSoperation多线程异步加载图…

NSoperation是ios封装好的的实现多线程的很简单的一种方法。


定义ImageDownloader,这个类继承NSOperation,因为需要并发,需要实现下面4个方法:


//是否允许并发,

-(BOOL)isConcurrent ;

-(BOOL)isExecuting;


//是否已经完成,这个必须要重载,不然放在NSOperationQueue里的NSOpertaion不能正常释放。

-(BOOL)isFinished


//具体下载的方法在这里执行。

-(void)start 


 

而对应于非并发的情况下,只需要重载main方法就好了。

头文件

ImageDownloader.h

定义如下:


#import


@protocol imageDownloaderDelegate;


@interface ImageDownloader : NSOperation 

{

    NSURLRequest* _request;

    

    NSURLConnection*_connection;

    

    NSMutableData*_data;//请求的数据

    

    BOOL_isFinished; 

    

    id delegate;

    

    NSObject*delPara;//可携带额外的参数

}


- (id)initWithURLString:(NSString *)url;


@property (readonly) NSData *data;

@property(nonatomic, assign) id delegate;

@property(nonatomic, retain) NSObject *delPara;


@end


@protocol imageDownloaderDelegate


@optional


//图片下载完成的代理方法

- (void)imageDidFinished:(UIImage *)image para:(NSObject *)obj;


@end


实现文件

ImageDownloader.m

定义如下:



#import "ImageDownloader.h"


@implementation ImageDownloader


@synthesize data=_data;

@synthesize delegate;

@synthesize delPara;


- (void)dealloc 

{

    

    [_requestrelease]; 

    _request=nil;

    

    [_data release];

    _data=nil;

    

    [_connection release];

    _connection=nil;

    

    [delPara release];

    

    [super dealloc];

    

}

- (id)initWithURLString:(NSString *)url 

{

    

    self = [self init];

    if (self) {


       _request = [[NSURLRequest alloc]initWithURL:[NSURL URLWithString:url]];

       

       _data = [[NSMutableData data] retain];

       

    }

    

    return self;

    

}




//开始处理-本类的主方法


- (void)start {

    

    if (![self isCancelled]){

       

       [NSThread sleepForTimeInterval:3];

       //以异步方式处理事件,并设置代理

       

       _connection=[[NSURLConnectionconnectionWithRequest:_request delegate:self]retain];

       

       while(_connection != nil) {

          

          [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopModebeforeDate:[NSDate distantFuture]];  

          

       }

       

    }

    

}


#pragma mark NSURLConnection delegate Method


//接收到数据(增量)时


- (void)connection:(NSURLConnection*)connection


   didReceiveData:(NSData*)data 

{

    // 添加数据

    [_data appendData:data];

    

}


- (void)connectionDidFinishLoading:(NSURLConnection*)connection{

    

    [_connection release],

    _connection=nil;

    NSLog(@"%s", __func__);

    

    UIImage *img = [[[UIImagealloc] initWithData:self.data] autorelease];

    

    if (self.delegate != nil)

    {

       [delegate imageDidFinished:imgpara:self.delPara];

    }

    

    

}


-(void)connection: (NSURLConnection *) connection didFailWithError:(NSError *) error

{

    [_connection release],

   _connection=nil; 

}


-(BOOL)isConcurrent 

{

   //返回yes表示支持异步调用,否则为支持同步调用

    return YES;

    

}

- (BOOL)isExecuting

{

    return _connection ==nil; 

}

- (BOOL)isFinished

{

    return _connection == nil; 

}



应用举例:

      NSString *url =@”xxxxxxx“;

      NSString*param=@”额外参数“;
     ImageDownloader *downloader = [[[ImageDownloader alloc] initWithURLString:url] autorelease];
     downloader.delegate = self;
     downloader.delPara = param;
      NSOperationQueue*queue = [[[NSOperationQueue alloc] init] autorelease];

     [queue addOperation:downloader];

#pragma delegate
- (void)imageDidFinished:(UIImage *)image para:(NSObject *)obj
{
   //image,下载下来的图片;
    NSString*param = (NSString *)obj;//附带的参数;
}


    
[2] MM应用发动机开发者大赛火热启动,iPad mini、红米手机…等你来拿
    来源: 互联网  发布时间: 2014-02-18
MM应用引擎开发者大赛火热启动,iPad mini、红米手机……等你来拿!
  为吸引和聚拢广大开发者加入HTML5阵营,搭建技术交流分享的平台,促进HTML5和云生态系统的繁荣发展,MM开发环境联合中国移动研究院举办2013年首届MM应用引擎开发者大赛。只要你有好的想法或者已成熟的应用,就可报名参加我们的赛事,参与活动就有机会赢得丰厚奖品哦!

  大赛火热征集基于MM开发环境和MM应用引擎开发部署的HTML5的Web和Mobile应用。10月8日-11月15日报名提交作品,赶快来报名参赛吧!iPad mini、红米手机……等你来拿!


  


    
[3] 数目字有线机顶盒锁频流程
    来源: 互联网  发布时间: 2014-02-18
数字有线机顶盒锁频流程
本文所介绍的高频头以DVB-c tuner(数字有线电视)为例
一、硬件解析(对硬件原理不熟悉,只能说个大概)
高频头(tuner),也称之为调频器,主要有三个功能:
1)选择频道即选台,在硬件上应该就是个过滤器吧,选择出指定频率的信号
2)放大功能,就是个信号放大器了
3)变频功能,将选定频率的信号转换为中频信号,以供后续demod使用 这里面有个AGC器件(原理上就是稳定信号的所用,在人体上相似的功能也存在,如看到强光、听到的声音太大时)
附NXP nxp Semiconductors公司的TDA18250的block图:


说到tuner,就不得不介绍demod,两个器件协同工作,构成信号处理的frontend
1)demod随处可见,根据不同的调制方式FM、AM、QAM等,也存在对应类型的demod
2)日常所见的,像收音机、电视机、机顶盒、上网的解调器等都含有相关的demod
附LGS-8G52的demod图(没找到合适的图,用DVB-T的demod示意一下,原理是相同的):




从数据流的角度看这两个器件的输入输出:cable RF(有线电视线)--RF--> tuner --IF(中频)--> demod --TS(mpeg ts流)


二、软件解析(从如何program的角度解析)
1)tuner和demod都是I2C器件,器件厂家会提供相关驱动,但都要求实现I2C读写接口来完成对这两个器件的控制和状态读取(主要的目的就是可以读写这两个器件的寄存器)
2)从软件上层应用控制的角度来观察,这个两个器件的输入和输出
                 输入                                                                                    输出
tuner        freq(频率)                                                                       lockstate(锁频状态)


demod   symbol rate(符号率)                                                       误码率
                modulation mode(调制模式)                                        信号强度
                                                                                                        信噪比等


3)在软件实现上,两个器件一般会一起实现相应的frontend接口供上层应用,介绍下主要的两个接口 初始化和锁频(本质上就是上文提到的i2c读写寄存器):
init()
{
registe_i2c();//注册相关i2c读写接口

//初始化,设置ts流输出模式(串行或者并行)等
if()//tuner的i2c主控在demod上
{
demod_init();//初始化demod,并将tuner I2C地址写入demod,进行tuner的相关初始化
}
else
{
tuner_init();
demod_init();
}
}
lock_frequency(freq,symbolrate,mode)
{
  //设置freq
if()//tuner的i2c主控在demod上
{
demod_setfreq(freq);//通过demod,设置tuner的freq
}
else
{
tuner_setfreq();
}

//设置demod的相关参数
demod_setpara(symbolrate,mode....);
demod_restart();//涉及到部分模式选择、重启等
}

    
最新技术文章:
▪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功能代码片段总结
互联网 iis7站长之家
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3