摘要: Windows Mobile发送短信应用分为两种,一是调用WindowsMobile自有的发送短信窗口,将接收用户的手机号码传递给该窗口,完成短信发送(暂且称为窗口短信),另一种是通过调用API将文本发送给指定的号码,这中发送方式对于用户是无感知的(暂且称为无感知短信,下面对这两种方式的实现分别介绍。窗口短信:窗口短信实现比较简单,可以直接使用下面的启动参数启动系统的EXE文件即可,System.Diagnostics.Process.Start("tmail.exe", "-transport /"SMS/" -to/"" 阅读全文
posted @ 2009-10-28 10:24 张兴业 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 本文示例源代码或素材下载 简介 没发过短信的年轻人肯定是属于那种受保护的稀有动物,通讯发达的今天短信已经成为人们交流的重要手段,其中也蕴含着巨大的市场和经济利益,掌握短信技术的人才也受到各大公司的追捧是目前职场上耀眼的明星。本文介绍了短信的原理和实现方法,重点说明了短信的编码方式、AT指令以及用C#实现串口通讯的方法。 前言 目前,主有三种发送短信的方式: 1、 网关方式:就是向当地的电信部门申请,不需要额外的设备,适用于大型的通信公司,像华为、傲天、中兴、亚信等。 2、 终端方式:就是借助像GSM MODEM之类的设置(支持AT指令的手机也行),通过数据线连接电脑,来发送短信... 阅读全文
posted @ 2009-10-21 21:55 张兴业 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 去年做过一个项目,是要在windows mobile手机上做个来电防火墙, 其实原理很简单, 无非是截获来电并检查黑白名单, 按照规则给出相应的提示音, 现在总结一下, 大概有几个方面是关键点: 1. 如何截获来电?有几种办法, 一种是底层的RIL函数, 这种方法响应迅速, 不会在拦截电话前还在屏幕上快速闪现一下来电提示窗口,或者是铃声突然响一下再消失. 缺点时RIL函数编程并不容易,如何处理好诸多RIL通知事件,并根据业务逻辑设计良好的程序逻辑是一个不小的挑战; 第二种办法是使用.net compact framework的notification,包括:SystemProperty.P.. 阅读全文
posted @ 2009-10-14 16:17 张兴业 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 在windows mobile上设计UI的时候,经常会碰到多个窗口的情况。有时候,我们需要将一个窗口中的用户输入信息反应到另一个窗口中去,这就涉及到窗口之间的数据传递问题。下面就分native和managed这两种方式来讲讲这个窗口之间数据传递的方法。 1. Native这个方法是当时我在看MFC时学到的,当时应用的场景是这样的。我建立了一个基于对话框的应用程序(Dialog-based),一些参数设置需要另外一个对话框来呈现给用户,在用户输入完之后,就需要将数据传递给主对话框。当时我是这么实现的: a) 在 stdafx.h头文件中,加入用户定义消息和传递的数据结构,如:#define .. 阅读全文
posted @ 2009-10-14 14:28 张兴业 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 在Pocket PC应用程序中使用DataGrid控件Christian Forsbergbusinessanyplace.netSeptember 2003Applies to:Microsoft® .NET Compact Framework 1.0Microsoft Visual Studio®.NET 2003摘要:学习如何在你的Pocket PC应用程序中如何有效地使用DataGrid控件进行数据查看和更新。这篇文章将解释,为什么这是重要的,并向你演示如何做。Download datagrid_control.exeContentsTable Data The D 阅读全文
posted @ 2009-10-13 16:37 张兴业 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 在Windows CE 5.0或Pocket PC 2003 或Sarthpone 2003中,可以使用下面三种方法访问远程数据. 第一种:使用 Web Service 作为中介访问数据,在PDA中可以直接访问安装在访问器上的Web Service,通过Web Service就可以访问远程数据库了.了解Web Service这种方法应该很简单.使用Web Service可以在速度上会稍显得有点慢. 第二种: 直接访问数据库 如果你使用得Sql Server 2000或SQl Server 2005都可以直接访问,如果你使用得Access数据库那就只能用上一种方法了.听PDA公司的人说SQL S 阅读全文
posted @ 2009-10-09 09:55 张兴业 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 可借助渐变画笔用渐变的颜色填充形状。例如,可借助水平渐变画笔,从形状的左边缘到右边缘用逐渐变化的颜色来填充形状。设想这样一个矩形:它的左边缘为黑色(红色、绿色和蓝色分量均为 0);右边为红色(这三个分量分别为 255,0,0)。如果矩形的宽度为 256 个像素,则给定像素的红色分量将多于其左侧的像素的红色分量。在一行中,最左边像素的颜色分量为 (0, 0, 0);第二个像素的分量为 (1, 0, 0);第三个为 (2, 0, 0),依此类推,直到到达最右边的像素,它的分量为 (255, 0, 0)。这些插值颜色的值构成了颜色渐变。当水平地、垂直地或平行一指定的斜线移动到时,线性渐变改变颜色。. 阅读全文
posted @ 2009-09-29 14:09 张兴业 阅读(691) 评论(0) 推荐(0) 编辑
摘要: GDI+ Brush 对象用于填充闭合形状的内部。GDI+ 定义多种填充样式:纯色、阴影图案、图像纹理和颜色渐变。一。如何:用纯色填充形状 若要用纯色填充形状,请创建 SolidBrush 对象,然后将该 SolidBrush 对象作为一个参数传递给 Graphics 类的某个填充方法。下面的示例演示如何用红色填充椭圆。示例 在下面的代码中,SolidBrush 构造函数采用一个 Color 对象作为其仅有的参数。FromArgb 方法使用的值分别表示颜色的 alpha、红色、绿色和蓝色分量。这些值中的每一个都必须在 0 到 255 之间。第一个 255 表示颜色是完全不透明的,第二个 255 阅读全文
posted @ 2009-09-29 14:07 张兴业 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 一。如何:使用钢笔绘制线条若要绘制线条,需要 Graphics 对象和 Pen 对象。Graphics 对象提供 DrawLine 方法,而 Pen 对象则存储线条的特征,如颜色和宽度。示例 下面的示例绘制一条从 (20, 10) 到 (300, 100) 的直线。第一条语句使用 Pen 类构造函数创建黑色钢笔。传递给 Pen 构造函数的参数之一是用 FromArgb 方法创建的 Color 对象。用于创建 Color 对象的值(255、0、0、0)对应于颜色的 alpha、红色、绿色和蓝色分量。这些值定义不透明的黑色钢笔。Pen pen = new Pen(Color.FromArgb(25 阅读全文
posted @ 2009-09-29 13:09 张兴业 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 一。如何:创建钢笔此示例创建一个 Pen 对象。System.Drawing.Pen myPen;myPen = new System.Drawing.Pen(System.Drawing.Color.Tomato);可靠编程当使用完需要消耗系统资源的对象(如 Pen 对象)后,应对其调用 Dispose。 请参见参考Pen概念GDI+ 中的笔、直线和矩形其他资源图形编程入门二。如何:设置钢笔颜色此示例更改预先存在的 Pen 对象的颜色。myPen.Color = System.Drawing.Color.PeachPuff;编译代码此示例要求: 名为 myPen 的 Pen 对象。可靠编程应 阅读全文
posted @ 2009-09-29 10:57 张兴业 阅读(687) 评论(0) 推荐(0) 编辑
摘要: 利用Graphics对象,我们可以绘制理想的UI。这里首先介绍C#中如何得到Graphics对象。/如何得到Graphics对象1. Control.CreateGraphics();直接通过Control类的公开方法获取。可以是Form,基础控件,也可以是UC控件new Form().CreateGraphics();new Button().CreateGraphics();new UserControl().CreateGraphics();2. new PaintEventArgs().Graphics PaintEventArgs参数的Graphics属性this.Paint += 阅读全文
posted @ 2009-09-29 10:16 张兴业 阅读(1598) 评论(0) 推荐(0) 编辑
摘要: 需要先创建 Graphics 对象,然后才可以使用 GDI+ 绘制线条和形状、呈现文本或显示与操作图像。Graphics 对象表示 GDI+ 绘图表面,是用于创建图形图像的对象。处理图形包括两个步骤: 创建 Graphics 对象。使用 Graphics 对象绘制线条和形状、呈现文本或显示与操作图像。创建图形对象可以用各种方法创建图形对象。 创建图形对象在窗体或控件的 Paint 事件中接收对图形对象的引用,作为 PaintEventArgs 的一部分。在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。 - 或 - 调用某控件或窗体的 CreateGraphics 方法以获取对. 阅读全文
posted @ 2009-09-29 10:00 张兴业 阅读(546) 评论(0) 推荐(0) 编辑
摘要: To display a gradient fill 第一步:In Visual Studio, create a Smart Device project. 第二部:Add the Gradientfill and GradientFilledButton classes to your project. public sealed class GradientFill{ // This method wraps the PInvoke to GradientFill. // Parmeters: // gr - The Graphics object we are filling // r 阅读全文
posted @ 2009-09-29 09:09 张兴业 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 摘 要 介绍了以Pocket PC2003为操作系统,带WiFi功能的智能移动设备平台下IP电话软件的设计方案与实现方法。实践证明,本软件具有实时性好、移植性强等优点。 关键字 智能移动设备;IP电话;PJSIP;WiFi;Pocket PC 20031 引言 IP电话以其低廉的价格,较好的通话质量,成为通信市场上有力的竞争者 。IP电话分为硬件电话和软件电话两类。硬件IP电话和传统电话一样使用方便,但需要额外的硬件投资。软件IP电话产品目前主要是基于PC平台,市场上基于Wi-Fi手机的软件IP电话产品还很少,因此,本文的研究具有较高的实用价值。2 IP电话软件的设计2.1 设计目标 本软件的 阅读全文
posted @ 2009-09-23 14:33 张兴业 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 系列课程 > Windows移动开发系列课程 使用.NET CF开发Smartphone应用程序 (Level 300)讲 师:马宁 课程简介:介绍使用.NET Compact Framework 2.0开发Windows Mobile 5的Smartphone应用程序。结合Smartphone界面的特殊性,讲述如何使用.NET CF开发应用程序,并介绍Phone、SMS震动等特殊API的使用,Web Service等网络连接技术,及GDI、Direct 3D Mobile等技术。 Windows Mobile 5 新特性 (Level 200)讲 师:马宁 课程简介:介绍Windows 阅读全文
posted @ 2009-09-09 09:14 张兴业 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。不错,Android上面也类似,你可以从一个Bitmap得到它的Canvas,进行绘制,也可以自定义一个View,用它的Canvas。不同的时,Android里没有Graphics,而用Paint代之,当然用法也稍有不同。以下是自定义View的一段代码:@Overridepublic void onDraw(Canvas canvas) {// 首先定义一个paintPaint paint = new Paint();// 绘制矩形区域-实心矩形// 设置颜色paint.setColor(Co 阅读全文
posted @ 2009-08-29 16:53 张兴业 阅读(134) 评论(0) 推荐(0) 编辑
摘要: Android中发短信非常方便,两行代码:SmsManager sm = SmsManager.getDefault();sm.sendTextMessage("10086", null, "hello", null, null);由于现在我还没有Android手机,也不知道这样能否成功。收短信稍稍复杂一点,需要建立一个BroadcastReceiver,来监听android.provider.Telephony.SMS_RECEIVED事件,我不太详述,完整代码如下:public class SMSReceiver extends BroadcastR 阅读全文
posted @ 2009-08-29 16:52 张兴业 阅读(202) 评论(0) 推荐(0) 编辑
摘要: Android打电话也是两行代码:Intent intent = new Intent("android.intent.action.DIAL", Uri.parse("tel:10086") );startActivity(intent);这样便进进入呼叫界面了。接下来我们再看一下监听电话状态的功能。监听电话状态首先建立一个继承于PhoneStateListener电话监听类(如:TeleListener),并让TelephonyManager监听它。TelephonyManager mTelephonyMgr = (TelephonyManager) 阅读全文
posted @ 2009-08-29 16:49 张兴业 阅读(121) 评论(0) 推荐(0) 编辑
摘要: LocationManager lm; MyLocationListener locationListener; lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationListener = new MyLocationListener(); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 本节主要是介绍一下gps的使用,google map和gps的结合是android上主要应用... 阅读全文
posted @ 2009-08-29 16:48 张兴业 阅读(182) 评论(0) 推荐(0) 编辑
摘要: GOOGLE MAP API是Android的靓点之一,我们可以创建一个MapActivity的子类,将MapView显示于其上即可,可以用MapController来控制显示的坐标、地图模式和视野高度,处理起来非常简单。完整代码如下:public class MapTest extends MapActivity {private MapView mapView;private MapController mc;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState 阅读全文
posted @ 2009-08-29 16:48 张兴业 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 先看代码:try {String path = "/sdcard/t.mp3";MediaPlayer mp = null;mp = new MediaPlayer();mp.setDataSource(path);mp.prepare();mp.start();mp.setOnCompletionListener(cl);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOExc 阅读全文
posted @ 2009-08-29 16:47 张兴业 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 众所周知,移动设备上的数据库最成功的非SQLite莫属了,Android上同样是用SQLite,并且android提供了较为简单的API,用起来非常顺手。 看下面的代码: //定义数据库 SQLiteDatabase myDB = null; //打开或建立数据库(当数据库不存在时,自动分创建) myDB = this.openOrCreateDatabase("MY_DATABASE_NAME", "MODE_PRIVATE", null); //删除表格、新建表格、插入数据、更新数据,地球人都知道,我也不说了 myDB.execSQL(". 阅读全文
posted @ 2009-08-29 16:47 张兴业 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 还是先看代码,用一种最笨的方式实现了录音的功能:try { String path = "/sdcard/recorder.amr"; MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_ 阅读全文
posted @ 2009-08-29 16:46 张兴业 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 拍照有两种方式,一是使用android.hardware.Camera,二是使用Intent("android.media.action.IMAGE_CAPTURE"),当然还是第一种好,不过代码太复杂,以后有时间再说,这里就说一下第二种方式吧。try {Intent i = new Intent("android.media.action.IMAGE_CAPTURE");startActivityForResult(i, Activity.DEFAULT_KEYS_DIALER);} catch (Exception e) {}这样就可以调用系统的像机 阅读全文
posted @ 2009-08-29 16:45 张兴业 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 总感觉手机上的振动器没有多大用处(当然静音模式下的振铃很有用),但还是顺带着说一下吧,只有两行代码:1、获取振动服务的实例Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);2、设置振动时长,单位当然也是msvibrator.vibrate(1000);如果你觉得这样过去单调的话,可以设个节奏:vibrator.vibrate(new long[]{10, 100, 20, 200}, -1);两个参数,习惯告诉我第一个是节奏,第二个是重复次数,可事实并没有这么简单,我翻译不好,大家还是看原文吧:p 阅读全文
posted @ 2009-08-29 16:44 张兴业 阅读(153) 评论(0) 推荐(0) 编辑