当前位置:  编程技术>移动开发
本页文章导读:
    ▪XCode 快捷键收拾        XCode 快捷键整理 Redo                cmd + Z 格式化粘贴          alt + cmd + V 重构                cmd + J 回到选取位置        cmd + j 切换到Project界面   cmd + 0 切换.........
    ▪ 胡说八道智能手机        胡言乱语智能手机   一直都在关注着智能手机,觉得这个圈子真是越来越好玩了.     万众期待的iPhone 第4代.   没有任何官方消息,但正因为这样,所以传闻满天地飞,有的说OS 4会有多任务已经.........
    ▪ M3G课程:入门篇       M3G教程:入门篇       3D技术对我们来说已经非常熟悉了,最常用的3D API有OpenGL和Microsoft的Direct 3D,在桌面游戏中早已广泛应用。对于J2ME程序而言,Mobile 3D Graphics API(JSR184)的出现,使得为.........

[1]XCode 快捷键收拾
    来源: 互联网  发布时间: 2014-02-18
XCode 快捷键整理

Redo                cmd + Z
格式化粘贴          alt + cmd + V
重构                cmd + J
回到选取位置        cmd + j

切换到Project界面   cmd + 0
切换到Debug界面     cmd + R
清空控制台          cmd + ctrl + alt + r
运行                cmd + r


    
[2] 胡说八道智能手机
    来源: 互联网  发布时间: 2014-02-18
胡言乱语智能手机

 

一直都在关注着智能手机,觉得这个圈子真是越来越好玩了.

 

 

  • 万众期待的iPhone 第4代.

 

没有任何官方消息,但正因为这样,所以传闻满天地飞,有的说OS 4会有多任务已经是板上钉钉的事,有的说第4代iPhone会改变分辨率变成 960 x 640(估计此人是看了iPad可以拉伸运行iPhone上的软件然后杜撰的).想想之前iPad没出来之前的各种想象力惊人的猜测,最后乔帮主只拿出一只放大了的iPhone来证明网民的想象力是惊人的.想必第二天顶着熊猫眼去上班的同学对乔帮主的怨念不是一般的大吧.

 

iPhone已经是头上有光环的主了,第四代就算只是改改按钮的大小,只要把多任务放出来,大家照样是今天早上去排队,等着明天天黑时可以轮到自己买.不得不说iPhone的操作的舒适程度真是无机能及.

 

其实我觉得苹果已经不需要给iPhone做广告了,这三年来,无数的iPhone杀手已经演译了无数个广告,但是最佳男主角无一例外都是iPhone.

 

很多人/公司总是拿iPhone的封闭平台说事,又拿App Store的审查制度说事,却不明白这才是iPhone无数优秀软件的保证,虽然当中也有些会令一部份人不爽的事情发生,可是无规则不能成方圆,有时候是要拥抱限制的.(这些话说出来可以会引起骂战的,就此打住,不多说.)

 

 

  • 微软卷土重来的Windows Phone 7
微软倒是比较积极,公布WP7后不久就把SDK放出来了,这个比较赞,可是也只能看几个演示和图片来解解渴啊,你要是再拖上个一年半载的,或者又弄个WM 6.9来救市的话,只怕黄花菜都凉了.而且后来又说刚出来的WP7不支持复制/粘贴,当时看到这个新闻,那一个叫做晕啊,你丫的是不是看人家iPhone用两年时间吊足大家胃口后,放出复制/粘贴功能时一大批果粉感激涕零的样子让你觉得妒忌呀?可是也不用一步一个脚印地跟着人家走吧.我只能说微软,你太没性格了.

WP7的前途肯定是一片光明的,毕竟微软耕耘移动领域多年,虽然Windows Mobile因为不思进取落得如此下场,但是毕竟和各大手机厂商有交情嘛,你看咱们是有交情的,所以WP7正式发布的时候,肯定众多厂商巴巴的跟着微软跑,估计是HTC领跑.不过WP7限制了各厂商的无限山寨精神,所以估计WP7的手机同质化很严重,但是由于统一了思想,软件的质量绝对是大大地提升,App Store专美在前这下就得小心了,一个不留神说不定就给微软给爆菊了.至少各大手机厂商嘛,虽然没有了外在美,可是这年头在意外在美的人多了去,以后如果看到类似当今山寨机造型的WP7手机,千万要蛋定,无须怀疑,因为这是真的.

 

 

 

  • 拍烂了手掌的Palm Web OS
Palm将会被收购的传闻听得耳朵都快起老茧了,一会说是Nokia一个又说是戴尔,搞得Palm的股价又上又下的,可怜那些入了Palm股票的同学们啊,怎么禁得起这样的折腾呢?比起当年WebOS在CES大会上的风光,真是那个唏嘘不已啊.

我没用过Web OS,视频倒是看过不少,老实说我是相当的口水,不过由于种种原因一直没有真正地用过Web OS,很是遗憾.

Palm Pre在一片掌声中迅速陨落,我想除了Palm资金不足(直接就导致做工差),还有就是领导人好像根本就不了解市场一样,还有脑残的营销,当然这都是猜测,应该是有很多内因的,在treo8.com和hi-pda.com上面看到一些Palm的忠实fans最常见用来形容Palm的是一句相当有名的话:衰其不幸,怒其不争!

  • 当红炸子鸡Android
说得最多的就是Droid/MileStone令Moto咸鱼翻身,当然还有Apple对HTC多点触摸的诉讼,还有就是Nexus one的屏幕问题,反正就是热门非凡啦.Google想通过Android OS抢占移动互联网的制高点,这是人尽皆知的啦,可是却大大地不能如愿,并由此引发Google公司与Apple公司交恶,再加上退出中国的传闻,令Moto在国内上市的手机都要改用bring搜索了,关于这个 ifanr.com 有一篇很有意思的文章 运营商需要一个怎样的Android ?? 

 

当初android刚刚出来的时候,我是很喜欢这个操作系统的,两个原因:一是它使用的开发语言是java,我正是一个java的程序员;第二是Google.但是后来越来越多的android手机出现,android的版本开始分裂,这就令人很不爽了,尤其是开发者,不得不为兼容无数手机写代码啊,这个事我是有着深刻体验的,如果有做Web开发的同学,想想为了兼容不同的浏览修改页面时,对微软家的IE三兄弟的那个恨啊,你就明白这个痛苦了.我不喜欢Android正是源于对这种痛苦有过深刻的体验.

 

Android的软件在不同的手机上的表现就是一个大大的杯具.手机的硬件注定就不如PC那样划一整齐,所以手机上的操作系统还是封闭的好,这样才会有最佳的操作体验.比如iPhone,还有未来的WP7.

 

 

  • 笨拙的手机巨人Nokia
对于Nokia这两年的表现,我只能用失望来形容.首先是想做网络服务提供商,却想着大包大揽,不管什么是自己擅长的什么都要做,结果怎么样,什么都做不好.Ovi Music连人家iTunes的影子都没见着,据说音乐还有版权保护的,这...谁会买你的呀,真是不想说你了.Ovi 邮箱,这个我倒是没怎么关注,不知道多不多人用它.还有花了70多亿收购的那个地图,一开始还想着收费呢,结果Google免费导航一出来,好像是过了一个月还是一周,Nokia就宣布免费了,哎呀,所以说这个有竞争真好,我们又有免费的东西可以用了.

再说说Nokia手机操作系统上策略,我只能说它是白痴.明明只有你家才会用的Symbian,你开个屁源啊,你真以为什么跟开源粘上关系就能变牛了吗?
  • 你对开发者友好些.
  • 推出多一些方便的开发工具,让开发环境容易一些
  • 把开发文档写漂亮点.你看看你的开发者网站吧,慢也就算了,乱就一个字.
  • 做好上面这些事吧.开发者才是让一个系统充满活力的原因,亏你妒忌人家苹果的手机利润比你多,而且你还搞Ovi Store呢,咋就是想不明白呢?

    还有不得不说的Maemo,多好的一个系统呀,就让Nokia给糟蹋了,N900发布才多久,Maemo才刚刚浮出水面(以前平板年代不算,我们说的是智能手机)你立马把它跟Moblin给全体了,这样下来你的旗舰N900怎么办,谁会买一个手机系统前景一片白茫茫的手机呢?反正我是不会买的,而且这个手机的充电口非常有问题,ifanr.com又有讨论,请猛击 http://bbs.imaemo.com/viewthread.php?tid=123 

    另外,Maemo和Moblin全体之后的MeeGo居然放弃了deb包构建系统,不用apt-get了,改用rpm体系了.真是太晕了,好好的apt-get你不用了,搞什么rpm啊,Linux这么多分发版本下的包构建系统,个人以为最好的是就是debian的deb了,最烂的莫过于redhat的rpm,当然这属于个人仇恨,我就说说发泄一下而已.

    • 保守而上进的黑莓
    黑莓的系统十年而一日,在当前最新的9700身上有着和我的古董级机器7290太多的相同之处了.当然速度的提升也是很明显的,RIM在保持自己传统的优势,同时也在顺应当今智能手机的发展潮流.保守但上进,相对于Nokia和Palm,RIM公司的稳健和聪明显得是如此的耀眼.

    外表拉风的黑莓,内里是非常贴心的,这真真是外是浑金,内是璞玉啊,表里如一的完美诠释.至于那位言必称科技以人为本的Nokia同学在黑莓面前就是一岳不群,如果不服,不妨比较一下SB系统的菜单跟黑莓的菜单;如果还是不服,再问一句:同时全键盘机器,快捷键你有吗?至于黑莓怎么的贴心法,不妨在网上找找,有很多黑莓fans的总结.

    对于中文用户来说,黑莓有一个永远的痛就是输入法,用拼音的还好,毕竟现在系统自带的拼音输入法已经不错了,像我这样用五笔的,就只能是一个杯具了.黑莓会不会输入法接口,这个从来没有听到过任何的消息说,但是记得RIM公司好像和日本一个运营商搞输入法,不知道和开放接口有没有关系.输入法是会严重影响用户体验的,不开放可以理解,貌似iPhone也没有开放输入法接口.

    黑莓的触摸版手机,我稍微地用过一会,不敢说有啥意见,只是觉得很特别,融合了电容触摸和物理按键,我想RIM是想让使用触摸屏的用户也得到实体按键的那种实在的感觉,但是看网上的众多评论,好像是不太成功,至少我见到 @lordhong 同学说黑莓的Storm系列是个杯具.

    我对黑莓比较期待的是即将要推出基于webki浏览器,还有BIS准备在国内推出了,如果BIS在国内推出的话,我倒是很心动,至少在Gmail被封掉的情况下,不用翻墙就能收到邮件.

    • 就是没有1.0的M8
    我觉得魅族公司是很不错的,虽然魅族论坛上的魅友们有着堪比五毛的精神和行为,但是魅族有魅力开发属于自己的系统(基于WinCE的,但是做得还做得不错),总比OMS之流的要强上N倍,N趋向于无穷大.国产神机四个字当之无愧,请注意这绝对是褒义的.


    以上内容是纯属虚构,如有雷同,我必追究.

    ps:虚构的意思就是指我用脑子想出来的.

     

    1 楼 vlinux 2010-03-22  
    非常喜欢能看到有自己见解的贴子,太喜欢了,因为自己没这个能力和精力去分析和整理。谢谢分享。
    2 楼 lfz8888666 2010-03-23  
    楼主很NB啊,分析很到位!
    3 楼 javaeyebird 2010-03-23  
    引用
    真是太晕了,好好的apt-get你不用了,搞什么rpm啊,Linux这么多分发版本下的包构建系统,个人以为最好的是就是debian的deb了,最烂的莫过于redhat的rpm

      
    4 楼 yangzhihuan 2010-03-23  
    vlinux 写道
    非常喜欢能看到有自己见解的贴子,太喜欢了,因为自己没这个能力和精力去分析和整理。谢谢分享。


    其实也就是平时八卦一下跟智能手机有关的新闻,偶尔心血来潮时写的.
    5 楼 NumbCoder 2010-03-23  
    英雄所见略同!
    6 楼 moderating 2010-03-23  
    心有戚戚焉,从个人爱憎来说,我热烈期盼着给塞班和J2ME送花圈的日子
    7 楼 loovle 2010-03-23  
    android 和linux系是me的最爱了
    8 楼 lucky16 2010-03-24  
    现在虽然用的是WM,也用过一段时间的黑莓,黑莓确实很优秀,Android现在很对他在中国的前途担忧阿? SB! 基本上现在不会考虑诺记的手机的!就是总感觉对他不爽!不知道怎么搞的?
    9 楼 faiinlove 2010-03-25  
    引用
    就是没有1.0的M8
    我觉得魅族公司是很不错的,虽然魅族论坛上的魅友们有着堪比五毛的精神和行为,但是魅族有魅力开发属于自己的系统(基于WinCE的,但是做得还做得不错),总比OMS之流的要强上N倍,N趋向于无穷大.国产神机四个字当之无愧,请注意这绝对是褒义的.


    哈哈· 我用的也是M8,魅族的My系统确实做的好,起码我觉得比多普达上面的wm好用多了· 超接近苹果,0.9.X的固件UI和网络上流传的window phone7 很像哦·很多地方的用户习惯都接近了 ·
    10 楼 linkerlin 2010-05-31  
    严重同意啊!
    非常喜欢黑莓和Apple的系统。
    Nokia的用户体验确实很久不进步了。
    Android注定是山寨机的乐园,没有任何前途。

        
    [3] M3G课程:入门篇
        来源: 互联网  发布时间: 2014-02-18
    M3G教程:入门篇

          3D技术对我们来说已经非常熟悉了,最常用的3D API有OpenGL和Microsoft的Direct 3D,在桌面游戏中早已广泛应用。对于J2ME程序而言,Mobile 3D Graphics API(JSR184)的出现,使得为手机应用程序添加3D功能成为可能。
          JSR184标准(M3G:Mobile 3D Graphics)为Java移动应用程序定义了一个简洁的3D API接口,J2ME程序可以非常方便地使用M3G来实现3D应用比如游

    戏等等。M3G被设计为非常轻量级的,整个API的完整实现不超过150kb。
          如果熟悉OpenGL技术,那么M3G是非常容易理解的。在JSR-184中,Graphics3D是3D渲染的屏幕接口,World代表整个虚拟3D场景,包括Camera(用于设置观察者视角)、Light(灯光)、Background(背景)和树型结构的任意数量的3D物体。Camera默认是朝向Z轴的负方向。3D对象在计算机中用点(Point,Pixel)、线(Line,Polyline,Spline)、面(Mesh)来描述,各个物体都是由Mesh类创建的。不同的Mesh属性对应不同的物体。构造物体时

    ,先要构造物体的骨架(即形状),然后用一种材料蒙到骨架上。物体的形状,是由一组点和每个点的法向量决定的。材料则可以选择为图片。物体的具体存储和运算(如旋转、投影、特技处理)等动作都是矩阵运算和变换。
          M3G是J2ME的一个可选包,以OpenGL为基础的精简版,总共约有250个方法及30个类,运行在CLDC1.1/CLDC2.0上(必须支持浮点运算),可以在MIDP1.0和MIDP2.0中使用。目前,支持M3G的手机有Nokia 6230/3650/7650/6600、Siemens S65/CX65/S55/M55、Sony-Ericsson K700i/P800/P900、Moto 220/T720等。M3G只是一个Java接口,具体的底层3D引擎一般由C代码实现,比如许多手机厂商的3D引擎采用的便是SuperScape公司的Swerve引擎,这是一个专门为移动设备设计的高性能3D引擎。
          类似于Microsoft的D3D,M3G支持两种3D模式:立即模式(immediate mode)和保留模式(retained mode)。在立即模式下,开发者必须手动渲染每一帧,从而获得较快的速度,但代码较繁琐;在保留模式下,开发者只需设置好关键帧,剩下的动画由M3G完成,代码较简单,但速度较慢。M3G也允许混合使用这两种模式。
          3D模型可以在程序中创建,但是非常繁琐。因此,M3G提供一个Loader类,允许直接从一个单一的.m3g文件中读入全部3D场景。m3g文件可以通过3D Studio Max之类的软件创建。

     

          M3G基于的需求如下:
          1)支持保留的场景图形模式;
          2)支持直接访问模式;
          3)支持两种模式的混合;
          4)支持建模,结构,材质以及场景,灯光的三维要素;
          5)支持虚拟的浮点运算,不需要硬件支持的浮点运算;
          6)保证大小在实际终端小于150K
          7)高效的垃圾收集机制(我个人觉得这点非常的重要)
          8)能很好的和MIDP相关的应用接口衉作(当然指的就是Canvas)

     

          Mobile 3D Graphics API中有几个比较重要的类:

  • Object3D:几乎包中所有类都继承自此类,并且所有可以渲染的类及从m3g文件中载入的类都是它的子类;
  • World:整个场景图形结构的基础,所有3D对象都应加入到World对象中。当载入一个m3g文件时,其根对象一般就是一个World对象。当我们渲染场景时,只要将World对象作为一个渲染对象传递给Graphics3D对象即可。
  • Graphics3D:3D图形上下文,是一个单例类,提供对象绑定接口,所有渲染都是通过它来实现的。
  • Loader:针对所有场景图形、单独的分支以及属性对象的异步载入器(解析器)。可以用于载入m3g文件,即其中所以3D对象。
  •  基本的程序框架:

     

    M3GCanvas.java:

    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.game.GameCanvas;
    import javax.microedition.m3g.Graphics3D;
    import javax.microedition.m3g.World;
    
    public class M3GCanvas extends GameCanvas implements Runnable {
    	
    	public static final int FPS = 20;	//每秒绘制的帧数
    
    	private Graphics3D g3d;
    	private World world;
    	private boolean runnable=true;
    	private Thread thread;
    
    	protected M3GCanvas() {
    		// 不抑制按钮事件
    		super(false);
    		setFullScreenMode(true);
    		g3d = Graphics3D.getInstance();
    		world = new World();
    	}
    
    	public void run() {
    		Graphics g = getGraphics();
    		while (runnable) {
    			long startTime = System.currentTimeMillis();
    			
    			// 处理游戏逻辑
    			try {
    				// Binds the given Graphics or mutable Image2D
    				// as the rendering target of this Graphics3D
    				g3d.bindTarget(g);
    				g3d.render(world); // Render the world
    			} finally {
    				g3d.releaseTarget();
    			}
    			flushGraphics();
    			
    			long endTime = System.currentTimeMillis();
                long costTime = endTime - startTime;
                if(costTime<1000/FPS)
                {
                    try{
                      Thread.sleep(1000/FPS-costTime);
                    }
                    catch(Exception e){
                       e.printStackTrace();
                    }
                }
    		}
    		System.out.println("Canvas stopped");
    
    	}
    	
    	public void start()
    	{
    		thread=new Thread(this);
    		thread.start();
    	}
    	
    	public void stop()
    	{
    		this.runnable=false;
    		try {
    			thread.join();
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

     

    M3GDemo.java:

    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;
    
    
    public class M3GDemo extends MIDlet implements CommandListener {
    	
    	private M3GCanvas canvas;
    
    	public M3GDemo() {
    		this.canvas=new M3GCanvas();
    	}
    
    	protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {
    		this.canvas.stop();
    	}
    
    	protected void pauseApp() {
    
    	}
    
    	protected void startApp() throws MIDletStateChangeException {
    		Display.getDisplay(this).setCurrent(this.canvas);
    		this.canvas.start();
    
    	}
    
    	public void commandAction(Command c, Displayable d) {
    		notifyDestroyed();
    	}
    
    }
    

     


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    nosql iis7站长之家
    ▪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