上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 20 下一页
摘要: http://www.showmuch.com/article/article_4.html在开发移动应用的过程当中,如果你的应用只定位在一种平台上,这可不是一个好主意,但是为许多不同的平台Building应用又是一件非常麻烦和非常不爽的事情,因为你会发现每一种手机平台都有自己的SDK,它们需要使用不同语言来进行开发,你可能不得不需要5、6个代码仓库来管理不同设备上的代码,而且需要不同设备的开发人员来开发维护这些仓库,你还不得不装上各个设备的sdk,设置好路径和各种配置信息,来编译不同设备上的应用包。那么移动网站模式是不是一个可以接受的替代方案呢?幸运的是移动应用和移动网站并不是对立的两端,通 阅读全文
posted @ 2011-03-16 15:01 张兴业 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 移动这一块目前是iPhone遥遥领先,程序员是爱买Android,一般老百姓还是偏向iPhone。现在做手机程序的统统是iPhone优先策略——做一个程序,先写iPhone版,第二才考虑Android。在iPhone的带动下,Mac OS 在美国市场占有率都上升到9%了,相当可怕,有人认为苹果将成为九十年代带的微软。 从根子上来讲,谷歌是一家广告公司,苹果是一家设计公司,如果只是他们俩在竞争,鹿死谁手还真不好说;可Android是一个开源程序,开源是IT界的倾销手段,因为它免费的正大光明。真正在背后支持Android的力量,是三星、摩托罗拉这些被苹果抢了市场分额的手机公司,没有Android. 阅读全文
posted @ 2011-03-16 14:59 张兴业 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 一、生成密钥库将位置定位在jdk的bin文件中,输入以下命名行:keytool -genkey -alias ChangeBackgroundWidget.keystore -keyalg RSA -validity 20000 -keystore ChangeBackgroundWidget.keystore(中间不换行),按下“Enter”键,并根据提示填写相关信息,详细信息如下及图1(validity为有效期,这里有效期为20000天):输入keystore密码:再次输入新密码:您的名字与姓氏是什么?[Unknown]:mythlink您的组织单位名称是什么?[Unknown]:www. 阅读全文
posted @ 2011-02-28 13:26 张兴业 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应用程序才能取得该权限。Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解android的数字证书,需要先了解以下数字证书的概念和java的数字证书机制。Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android将数字证书.. 阅读全文
posted @ 2011-02-28 13:25 张兴业 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 大家都知道,android2.3 SDK发布的时候,在sdk中增加了第三方add-ons,其中就包括了针对平板电脑的Galaxy Tab Addon。当我们启动一个新的平板电脑模拟器的时候,首先我们需要设置“Scale display to real size"选项,这将让平板电脑的屏幕大小与我们电脑屏幕的大小匹配。以我的电脑为例,我的屏幕大小是1440x900px。如下图所示:如果我们平板电脑模拟器上运行一个sdk1.6的例子(我们至少需要 API level 4, SDK 1.6 for tablets),您将看到如下所示:我们的应用程序并没有填满整个平板电脑模拟器的屏幕,下面我 阅读全文
posted @ 2011-02-19 20:16 张兴业 阅读(619) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://blog.csdn.net/xiaominghimi/archive/2011/02/12/6180606.aspx 刚才一群里的兄弟问的一问题,稍微研究下,这里一起分享:新建的Emulator -配置为:WAGA800 其分辨率是 800*480 的设备模拟器,当我们程序中在取得其 Height和 Width的时候发现,总是 320*533 ,明显是系统对我们撒了谎!如下图:下面是官方文档原文:http://androidappdocs.appspot.com/guide/practices/screens_support.html那么为什么系统会对其分辨率进行撒谎呢 阅读全文
posted @ 2011-02-19 16:14 张兴业 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环)。本文深入介绍一下Android消息处理系统原理。 Android系统中Looper负责管理线程的消息队列和消息循环,具体实现请参考Looper的源码。 可以通过Loop.myLooper()得到当 阅读全文
posted @ 2011-02-19 16:12 张兴业 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 曾经转过一篇,有点老了。subclipse是Eclipse的SVN插件,通过subclipse在Eclipse中就对SVN进行管理(提交、更新、合并、切换分支等等)。这篇文章介绍的就是如何安装和配置subclipse。安装 访问网页http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA选择你对应的Eclipse的插件下载地址(Eclipse update site URL)。之后就是简单地调用Eclipose的插件安装程序了。配置SVN库 插件安装完成以后,重启Eclipse,选择Open SVN Perspectiv 阅读全文
posted @ 2011-02-10 11:27 张兴业 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 经常有新手配置基于svnserve的subversion服务器后,在客户端访问subversion版本库时出现这个错误:svnserve.conf:12: Option expected为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,如### This file controls the configuration of the svnserve daemon, if you### use it to allow access to this repository.(If you only allow### acces 阅读全文
posted @ 2011-02-10 10:29 张兴业 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 关闭所有防火墙后可以正常使用 阅读全文
posted @ 2011-02-10 10:28 张兴业 阅读(728) 评论(0) 推荐(0) 编辑
摘要: 安装完TSVN之后,checkout时报错,并且后来在cmd命令行下,测试svn的3690端口是否打开:telnet localhost 3690 ,结果也是不成功,后来发现少执行了一步操作。正确的做法:安装完TSVN之后,在subversion的安装路径下,找到bin文件夹,需要完成下面几步操作:1、在下面新建一个setupservice.bat文件,内容是sc create svnserve binpath= "C:/Program Files/Subversion/bin/svnserve.exe --service -r d:/svnhome" depend= Tc 阅读全文
posted @ 2011-02-10 10:23 张兴业 阅读(2569) 评论(0) 推荐(0) 编辑
摘要: (1)、使用系统定义的Notification以下是使用示例代码://创建一个NotificationManager的引用String ns = Context.NOTIFICATION_SERVICE;NotificationManager mNotificationManager = (NotificationManager)getSystemService(ns);//定义Notification的各种属性int icon = R.drawable.icon; //通知图标CharSequence tickerText = "Hello"; //状态栏显示的通知文本提 阅读全文
posted @ 2011-01-21 10:55 张兴业 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 最近在开发中遇到一个问题,就是如何判断远端服务器是否已经断开连接,如果断开那么需要重新连接。首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。然后想到是否可以通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接,类似ping,但是这样会影响到正常的输出数据,远端无法把正常数据和测试数据分开。最后又回到socket类,发现有一个方法sendUrgentData. 阅读全文
posted @ 2011-01-17 14:02 张兴业 阅读(3860) 评论(0) 推荐(0) 编辑
摘要: Android开发平台中,可通过TelephonyManager 获取本机号码。TelephonyManager phoneMgr=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);txtPhoneNumber.setText(phoneMgr.getLine1Number()); //txtPhoneNumber是一个EditText 用于显示手机号 注:根据Android的安全机制,在使用TelephonyManager时,必须在AndroidManifest.xml中添加 否则无法获得系统的... 阅读全文
posted @ 2011-01-15 23:22 张兴业 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。JAVA有两个基于数据流的套接字类:ServerSocket,服务器用它“侦听”进入的连接;Socket,客户端用它初始一次连接。侦听套接字只能接收新的连接请求,不能接收实际的数据包。 套接字是基于TCP/IP实现的,它是用来提供一个访问TCP的服务接口,或者说套接字socket是TCP的应用编程接口API,通过它应用层就可以访问TCP提供的服务。在JAVA中,我们用ServerSocket、Socket类创建一个套接字 阅读全文
posted @ 2011-01-13 14:27 张兴业 阅读(236) 评论(1) 推荐(0) 编辑
摘要: 其实联系人分组实现原理是:根据Data.MIMETYPE为GroupMembership类型,data1中的组id来进行分组。设置ContactsContract.Data.CONTENT_URI中的ContactsContract.Data.MIMETYPE 为ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE类型,data1字段为某一分组的组ID,该值可查询ContactsContract.Groups.CONTENT_URI(该表保存了各分组的组_id,组名称title等分组信息)得到。例如查询具有某一分组 阅读全文
posted @ 2011-01-13 14:09 张兴业 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 就像前面提到的,一个activity可以启动另一个,包括那些定义在不同应用程序中的。假设,例如,你想让用户显示一些地方的街道地图。已经有一个activity可以做这个事,所以你的activity所要做的就是将行为对象和需要的信息放在一起,并将它们传递给startActivity()。地图查看器将显示这个地图。当用户按下后退按钮时,你的activity又重新显示在屏幕上了。 对用户来说,这个地图查看器看起来就像是你的应用程序的一部分,即使它定义在另外的应用程序中并运行在那个程序的进程中。Android通过保持所有的activity在同一个任务中来保持用户体验。简单的的说,任务就是用户所体验到的“ 阅读全文
posted @ 2011-01-10 09:43 张兴业 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 在android里,有4种activity的启动模式,分别为:“standard” (默认)“singleTop”“singleTask”“singleInstance”它们主要有如下不同:1. 如何决定所属task“standard”和”singleTop”的activity的目标task,和收到的Intent的发送者在同一个task内,除非intent包括参数FLAG_ACTIVITY_NEW_TASK。如果提供了FLAG_ACTIVITY_NEW_TASK参数,会启动到别的task里。“singleTask”和”singleInstance”总是把activity作为一个task的根元素 阅读全文
posted @ 2011-01-10 08:42 张兴业 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 意图和意图过滤器Intents and Intent Filters一个应用程序的三个核心组件-活动,服务和广播接收器是通过消息即意图(Intents)来激活的。Intent消息传送是相同或不同应用中组件运行时晚绑定的一种机制。意图本身,一个意图对象,是一个包含被执行操作抽象描述的被动的数据结构-或者,对于广播而言,是某件已经发生并被声明的事情的描述。存在不同的机制来传送意图到每种组件中:一个意图对象是传递给Context.startActivity()或者Activity.startActivityForResult()来启动一个活动或者让一个存在的活动去做某些新的事情。一个意图对象是传递给 阅读全文
posted @ 2011-01-10 08:40 张兴业 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 这次主要要做的就是根据姓名来查找电话,并且加强对通讯录的理解。 以前做一些用到数据库的东西的时候,可能光看代码也是不好联系起各个数据之间的关系,所以我先想到的还是数据库。幸运的是,它还真是一个数据库。 Android里面内置的是SQLite的数据库,虽然对数据库不怎么了解,但关系型数据库,基本操作也就那些,而且基本都一样,所以就直接用呗。用命令行下的adb shell进入Android的模拟器,进入data/data目录下面,这里面就是安装的一些应用程序。找啊找,里面有一个com.android.providers.contacts,怎么看都是一个通讯录相关的程序,进入这个目录下,里面有... 阅读全文
posted @ 2011-01-05 10:59 张兴业 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 正在学习Android,想先找个简单点的东西练习一下,先想到的是通讯录,不过关于手机通讯录方面的资料在我现有的书和视频上都很少看到。没办法只有自己看SDK Docs了。 不管怎么说还是先赞Google的Android Docs,确实很全面,只要你想找就一定能找到你要的东西。不过我感觉想把里面的各个类的关系联系起来还是有点困难,特别是像英文水平过于一般的我,看的那叫个累呀。 好了,还是来说一下正题吧。Android刚开始在通讯录方面好像是提供的Contacts这个类,又在SDK2.0发布后新加了一个ContactsContract,然后就不建议用Contacts这个旧的类了。有新的东西,当然.. 阅读全文
posted @ 2011-01-05 10:57 张兴业 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 上次说Data.MIMETYPE这个玩意很重要,官方的文档中描述了一大段的话。里面比较重要的几点是: 1、在Data中有一大段的公共数据段,DATA1~DATA15。这名子咋一看,真搞笑,哪有这样为数据命名的,神也记不住是干什么的的啊! 2、上面说的那些公共数据段所存的数据类型是由这个MIMETYPE决定的。 虽说这两个重要,不过刚看到这里,我还是懵了,这到底是个什么玩意嘛。(当然这很有可能是因为英文水平差,没看完全懂的原因。)再看看官方文档,上面有个例子说,如果MIMETYPE的值是Phone.CONTENT_ITEM_TYPE,则DATA1就是电话号码,如果MIMETYPE的值是Em... 阅读全文
posted @ 2011-01-05 10:57 张兴业 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 经过一段时间的努力手机3G应用流媒体播放器项目终于接近尾声了。回想整个过程历经坎坷阿!一共开发了两个平台的应用,首先是windows mobile平台,相对symbian来说资源多一些,所以先拿它下手阿。 说一下实现思路,刚开始考虑使用directshow,经过验证没达到预期目的(水平差阿,不懂directshow),接着研究tcpmp,寻思开发一个rtsp流插件,再加上mpeg4的插件不就行了吗!一段时间之后发现tcpmp太牛了,没看懂!(没注释、没文档),在快要跳楼的时候决定改为比较最原始的实现方式, 步骤如下: 1、读取网络数据。 2、交给解码器解码。 3、转换格式。 4、显... 阅读全文
posted @ 2011-01-05 10:55 张兴业 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 相信看到此博客时候,大多人已经看了许多获取屏幕像素的博客,从其他博客我们知道 屏幕的像素是根据DisplayMetrics类来获取的具体的计算方法是 width =widthPixels *density; height =heightPixels *density (ps: widthPixels 和heightPixels ,density 都是从DisplayMetrics中获取的)。DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm... 阅读全文
posted @ 2011-01-05 09:07 张兴业 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 在使用Android连接网络的时候,并不是每次都能连接到网络,在这个时候,我们最好是在程序启动的时候对网络的状态进行一下判断,如果没有网络则进行即时提醒用户进行设置。要判断网络状态,首先需要有相应的权限,下面为权限代码:即允许访问网络状态:下面为判断代码:代码private boolean NetWorkStatus() { boolean netSataus = false; ConnectivityManager cwjManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SE... 阅读全文
posted @ 2011-01-05 09:00 张兴业 阅读(218) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 20 下一页