当前位置:  编程技术>移动开发
本页文章导读:
    ▪怎么在WP7下录制音频        如何在WP7上录制音频   这篇文章展示了如何在Windows Phone 7上录制音频。 简介 通过windows phone设备的麦克风来录制音频是非常容易的。Microsoft.Xna.Framework.Audio.Microphone支持这项功能: .........
    ▪ 浅析CoreText自由作图        浅析CoreText自由绘制http://blog.csdn.net/xcysuccess3 版权所有 ,转载请说明 这三天自己一直在研究如何绘制文字,首先是找了CoreText, 但是没有发现DrawAtPosition的方法,无奈之下转向CoreGraphic,这里倒.........
    ▪ 孤独的软件工程师,你本应更幸福       孤独的程序员,你本应更幸福 上周,一位学生在英国《卫报》网络平台上大胆发文提问:“Facebook主页欺骗你了吗?”该文章出自伦敦时尚学院大一新生学生Libby Page之手。文中,她提到了作.........

[1]怎么在WP7下录制音频
    来源: 互联网  发布时间: 2014-02-18
如何在WP7上录制音频
 
这篇文章展示了如何在Windows Phone 7上录制音频。
简介
通过windows phone设备的麦克风来录制音频是非常容易的。Microsoft.Xna.Framework.Audio.Microphone支持这项功能:
    Start-从话筒中捕捉音频
    Stop-停止从话筒中捕捉音频
    GetData-将数据从话筒中转换到缓冲区中 
下面的示例代码假设在应用程序网页上有三个按钮- start, stop和 play。
参考和初始化
在Silverlight应用程序中使用话筒,我们提到了Microsoft.Xna.Framework,我们将它们加入到应用程序网页中来实施录制。
using System.IO;
using System.Windows.Threading;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;

并声明下面这些变量:
Microphone microphone = Microphone.Default;
    byte[] buffer;
    MemoryStream stream = new MemoryStream();
    SoundEffect sound;

开始录制
下面这些代码显示了如何使用话筒来录制音频:
private void recordButton_Click(object sender, RoutedEventArgs e)
{
    microphone.BufferDuration = TimeSpan.FromMilliseconds(1000);
    buffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];
    microphone.Start();
}

停止录制
停止录制音频的代码:
private void stopButton_Click(object sender, RoutedEventArgs e)
{
    if (microphone.State == MicrophoneState.Started)
    {
        microphone.Stop();
    }
}

捕获缓存区中的记录
为了捕获缓存区中的记录,我们需要在页面中的构造函数里添加事件处理程序。
microphone.BufferReady += new EventHandler<EventArgs>(microphone_BufferReady);

并使用下面的event handler 代码
void  microphone_BufferReady(object sender, EventArgs e)
{
    microphone.GetData(buffer);
    stream.Write(buffer, 0, buffer.Length);
}

播放录制的音频
在录制完成后进行播放
private void playButton_Click(object sender, RoutedEventArgs e)
{
    sound = new SoundEffect(stream.ToArray(), microphone.SampleRate, AudioChannels.Mono);
    sound.Play();
}

最后但并非不重要
为了使我们上述所介绍的代码能够运行,我们需要做更多的工作,当我们在Silverlight应用程序中使用XNA Game Studio,我们就需要模拟Game循环来使我们的程序能够正常的实施。定义下面的App.class XNAAsyncDispatcher类并将它添加到App()构造函数的下一行。
ApplicationLifetimeObjects.Add(new XNAAsyncDispatcher(TimeSpan.FromMilliseconds(50)));
 
public class XNAAsyncDispatcher : IApplicationService
{
    private DispatcherTimer _frameworkDispatcherTimer;
    public XNAAsyncDispatcher(System.TimeSpan dispatchInterval)
    {
        FrameworkDispatcher.Update();
        this._frameworkDispatcherTimer = new DispatcherTimer();
        this._frameworkDispatcherTimer.Tick += newEventHandler(frameworkDispatcherTimer_Tick);
        this._frameworkDispatcherTimer.Interval = dispatchInterval;
    }
    void IApplicationService.StartService(ApplicationServiceContext context)
    {
        this._frameworkDispatcherTimer.Start();
    }
  
    void IApplicationService.StopService()
    {
        this._frameworkDispatcherTimer.Stop();
    }
  
    void frameworkDispatcherTimer_Tick(object sender, EventArgs e)
    {
        FrameworkDispatcher.Update();
   }
}

   

    
[2] 浅析CoreText自由作图
    来源: 互联网  发布时间: 2014-02-18
浅析CoreText自由绘制

http://blog.csdn.net/xcysuccess3 版权所有 ,转载请说明

这三天自己一直在研究如何绘制文字,首先是找了CoreText, 但是没有发现DrawAtPosition的方法,无奈之下转向CoreGraphic,这里倒是有一个DrawAtPosition,具体思路就是把文字转换成图元然后去绘制。这位仁兄讲的非常好:http://blog.csdn.net/kmyhy/article/details/7651794

大家可以去参考。他还提供了源码。

但是使用Coretext如何按照坐标进行自由绘制呢?当然,CoreText内置了文字排版,但是这个有些并不精确。翻遍了API,并无发现DrawPosition方法.难道真的没办法了么?

答案是否定的。参考代码如下:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self.backgroundColor =[UIColor clearColor];
    }
    return self;
}
- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    CGMutablePathRef path = CGPathCreateMutable(); //1
    
   // CGContextSetTextMatrix(context, CGAffineTransformIdentity);
    
    CGPathAddRect(path, NULL, self.bounds );
    
    for(int i = 0 ;i<3;++i)
    {
        CGContextSetTextMatrix(context, CGAffineTransformIdentity);
        CGContextSaveGState(context);
        NSLog(@"self.bounds.size.height==>%f",self.bounds.size.height);
        if(i==0)
        {
            CGContextTranslateCTM(context, 20 , self.bounds.size.height);
        }
        else if (i==1)
        {
            CGContextTranslateCTM(context, 20 , self.bounds.size.height+10);
        }
        else
        {
            CGContextTranslateCTM(context, 180 , self.bounds.size.height);
        }
        
        CGContextScaleCTM(context, 1.0, -1.0);
        
        
        NSMutableAttributedString* attStringTemp = [[[NSMutableAttributedString alloc]
                                                     initWithString:@"hello coretext world!"]autorelease];
        [attStringTemp addAttribute:(NSString*)(kCTForegroundColorAttributeName) value:(id)[[UIColor blueColor]CGColor] range:NSMakeRange(0,[attStringTemp length])];
        
        CTFramesetterRef framesetter =
        CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attStringTemp); //3
        CTFrameRef frame =
        CTFramesetterCreateFrame(framesetter,
                                 CFRangeMake(0, 0), path, NULL);
        CTFrameDraw(frame, context); //4
        
        CGContextRestoreGState(context);
        CFRelease(frame); //5
        CFRelease(framesetter);
    }
    CFRelease(path);
}

这里利用坐标系进行坐标绘制,只需要一个UIView.并不会造成资源的过度浪费。这里要注意的就是坐标系的状态保存与恢复。

起点随笔

    2012-10-22

    ios交流QQ群:237305299


    
[3] 孤独的软件工程师,你本应更幸福
    来源: 互联网  发布时间: 2014-02-18
孤独的程序员,你本应更幸福

上周,一位学生在英国《卫报》网络平台上大胆发文提问:“Facebook主页欺骗你了吗?”该文章出自伦敦时尚学院大一新生学生Libby Page之手。文中,她提到了作为大学新生之孤独;而在其孤独至深时,看到Facebook上朋友不断分享着各自的开心事的时候,此种孤独更是被无限放 大。“当你感到孤单时,”Page说:“本以为有一种方式可以减轻孤单感的,但事实这种方式却招致了恰恰相反的效果——它就是社交网络。”

时尚圈和程序员的圈子似乎八竿子也打不到一起,但是此种数码依存及孤独的问题,在后者中不但同样存在,而且更为严重——足足有10倍之多。

选择了程序员作为职业,也就意味着“娶了/嫁给了”自己的手提电脑。社交活动会远远地排在第二、第三位;而设计、安装以及一些让外行无法理解的任务会永远至上。对此,诸如“是不是在电脑上花的时间越多,我们就会越感到生活的不充实呢?”的话题又再次进入了我们的视野。

其实,在此类定义着程序员幸福与否的问题中,博主兼软件设计师J. Timothy King在三年前就有发表过看法。

他是这样阐释自己的基本原理的:

1. 压力会引起抑郁。

2. 完美主义者更容易患上抑郁症。

3. 孤独感会加强抑郁的程度。

作为软件设计师,上述这些东西,是暗含在工作职责里面的。

这 里,探讨了几个问题:程序员的工作性质会滋生孤单感吗?这种由电脑所加强的孤独感,是仅存在程序员群体里头吗?或者说,对于用毫无生气的屏幕交流去取代亲 密接触,程序员应该对此感到内疚吗?或者,最重要的是,程序员单打独斗的工作性质,会引致抑郁吗?如果是,又该怎样解决啊?

缺乏面对面交流的工作会影响幸福感?

一般认为,金钱的逐渐增长并不会带来幸福。有报告指出,在工作幸福度指标中,其实最重要的是员工与部门经理之间的关系。友好的团队关系,有助于成员相互传播“高兴”,也利于倡导公平。另外,以下的因素还会大大增强幸福感:个人目标明确,并可为团队“大”目标做出贡献;员工自主掌握完成任务的方式;以及部门经理不但既能与员工建立良好个人关系,自身又懂得技术管理。

既然如此,如果员工的工作环境通常是不怎么需要“面对面交流”的话,幸福还会存在吗?如后文所述,程序员就是处于此种环境中。

“按理,如果程序员本身带有点内向性格的话,相对于其他同职业者,我们肯定有理由相信前者更容易感到孤单,”英国伦敦政治经济学院社会政策系Paul Dolan教授的助理Elizabeth Plank解释说:“但是,(我们的研究还发现)有两种人群——孤单的人以及经受着社会焦虑的人,他们更容易在互联网上表达真我;因而相对现实社会,他们在网上论坛上更容易与他人建立满足自身要求的关系。”

“程序员容易得抑郁症”事出有因?

我们必须承认:程序员不算是最出色的社交代表;程序员也因其在前胸口袋装着笔夹子而被取笑;同时“要对书呆子友善,你以后很有可能就与其共事哦”的讽语也确实在大学联谊会堂中传播。但是,这些固有死板的形象就真的会导致他们心理不健康吗?

“我认为(程序员容易得抑郁症的说法)是被过分放大的,”数字咨询公司5 Star Lives成员员Tiago Braun反驳说。“我们都知道那些‘极客(geek)’的固有形象,而且交际确实是有点困难,但就仅此而已。我们的工作都是独立完成的,所以我们可以连续好几个小时都不用跟同事交流。但对我个人而说,我觉得这点是最不爽的。”

“程序员之所以被认为是不爱交际的原因,还有一点,就是他们需要用大量的个人时间用于学习新技术,专攻自己的项目,”在伦敦工作的合同程序员Samuel Molinari解释说。“相对于那些不懂‘互联网文化’而瞎指挥的‘善交际’的项目经理(他们不但搞到网页开发人员相当郁闷,而且他们有时的决策真是不敢恭维),还不如让一个内向的来领队呢?”

对于程序员创业者而言,上述如斯问题更是会成倍增加。5 Star Lives总经理Phil Peters说,尽管“程序员容易的抑郁症”是被过分夸大的,“但此说法的来源根据还是可以轻而易见的”:

1. 客户不能理解程序员所会碰到的问题,所以导致期望过高(有些期望根本无法实现);

2. 在社会经济条件不足的情况下,不断对团队和个人施加要求,以图能与外包团队的水平相比;

3. 不断依赖第三方内容(开发架构、函数库、模块等等),保持令人满意的创新步伐——这是一种无尽的挑战。

程序员深陷不断“自我否定”的模式?

如果正向强化能够加强工作幸福感的话,程序员要想更幸福,还需要跨过如下的门槛:

“要想成为一名出色的程序员,我必须采用如下的一种思维模式。但是这种思维模式却慢慢使我变得不开心。我知道在其他程序员那里——尽管不是所有人——大多数都是这样的。

那么,是何种思维模式呢?

关注消极否定的东西远远多于积极肯定的。

一名好的程序员,为何会有这种心态倾向呢?

我的工作流程就像下面那样。

1. 写代码;

2. 运行代码;

3. 得到错误提示;

4. 找出错误,然后返回第1步。

日复一日,年复一年,我都是这样做。对于自己创作的东西,老是去寻找毛病,从没思考过这样做的好处。这是一种加强消极否定的反馈回路。”

Molinari同意上述说法,同样他还提到老板与员工之间的交流时间太少是使员工沮丧的主要因素。

“无论是何种应用程序,每个搞开发的,都可以在不到一周的时间内搞定;但是,给到客户的将会是一件垃圾废物。在这行业,此情况经常发生。公司为了取悦客户,低估了开发应用程序所需的时间,导致程序员压力超级大,不断加班,周末也都得赶工。程序员处于如此匆忙的状态中,他们根本无法创作出优质程序。所以产品会有很多的错误和漏洞,客户自然不高兴了,然后又施以程序员更多的工作。”

“知道我想说什么吧?——也就是这样,程序员最终陷入了恶性循环。”

认知有“偏见”,抑郁症非程序员专属?

很多程序员提到,在工作中,能够不断“解决问题”是促使他们前进的动力之一。但如此的一个“充满问题”的职业,会不会真的把人的心理健康给损坏,并导致他们有抑郁症吗?

英国心理治疗学会Aaron Balick博士说,这其实是一把双刃剑。尽管程序员可能会在独立工作中得到满足,“但在他们人性的某方面(称作‘最下位功能’(inferior function)),还是希望与人交流接触的。如果“最下位功能”受到的刺激持续不渐弱的话,这就很有可能产生压抑感和焦虑感。”

“患有抑郁症的人都倾向于将人生看得灰暗,进而导致他们过滤身边的积极信息,只吸收消极的反馈,这同样也会导致恶性循环。而且,要爬出这个深渊不是那么容易的。”

但是,“如果硬要说程序员比其他人更容易患抑郁症的话,这肯定是夸大其辞的,”高级网页工程师Les Cochrane辩驳道。“任何人在任何时候都可有可能患上抑郁症;据我在开发领域工作超过10年之多的经历来看,程序员都是跟大家一个样的。”

“(同时),程序员的工作更适合那些‘能够进行逻辑思考,能把复杂的想法分解成小问题逐个击破,有时还得高强度地全神贯注于某一问题’的人。我想,这其实才是程序员的真正特性。”

程序员,你有你的快乐时光

“程序员是经常孑身一人,但是并不代表他们就感到孤单寂寞,”Plank助理解释说。“他们可以离开座位,可以主动营造身边的环境,这样就可以多与别人相处一起了。这都是由程序员自己选择的。”

对 此,Next PLC的系统分析程序员Thomas Mortimer表示赞同。“因为我性格老外向了,所以我是不相信(程序员都是内向或有抑郁症)的,”Mortimer说。“我会去跟设计师、书写产品说 明的人见面,找出他们真正想要的东西。我通常都表现得很友好亲切,而且我不会使用太多的行话。这何乐而不为呢?他们要是能弄懂里面的细节,不就更有助于交 流吗?”

尽管程序员身上的诸如完美主义、经常找碴和社交孤立等因素会容易致使他们患上抑郁症,但“程序员都有抑郁症”的说法肯定是某些所谓 的专家强加给他们的(写手们,有你的份么?)。犹记得上个夏天在跨媒体平台交流上,笔者和同事就在老板的三令五申下(通常我们都是“吃不离电脑桌,嚼只看 Facebook”的),与程序员共进了午餐。在平常随时可见的“饭不离手机”的就餐环境,那次,程序员几乎都没怎么掏出过他们的手机。看来,将程序员描述成不爱交际还真是有违公平呢。

其实,社交生活都是由我们主导的,时尚专业的学生如此,程序员也如此,其他圈子的也都如此。工作的时候需要单打独斗,并不会阻碍会议之后的畅饮鸡尾酒和周末的大快朵颐,甚至在午餐之后也都可以和朋友同事碰头闲聊下的。Balick博士说,每天只要交流上20分钟,整天的心情就会变得很好。其同事Sadegh Nashat则建议,(程序员)可以多参加同行、同职业的聚会;这样,在不要解释每个术语的前提下,交际就更加自由轻松了。

同 时,正如在程序员口中经常提到的“创意”一词,不但要将它用在工作上,而且也可用在交际上。Steve Jobs在整个Pixar的楼层只装一个洗手间(为了能看到所以员工)的做法也许会让人有非议,但是谈到内容创作的质量这点上,这家动画巨头里面的每个独 立工作的员工都啧啧称赞的。

“要是身边都是自己喜欢的人,连内向的人都会倍感开心的,”Dolan教授在其书作中写道。“我愿意下赌注说, 常与人相处大有裨益,因为事实就是这样。朋友就像是上等的葡萄酒,时间越久,越香醇。所以,为了培养与朋友的情谊,多花点我们宝贵的时间,都是物有所值 的。”


    
最新技术文章:
▪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