Signature on Pocket PC

本文介绍如何在PocketPC上实现签名功能,通过使用SignaturePanel组件并结合简单的代码,即可完成签名的绘制、保存及加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

刷信用卡,需要签名;在银行交易,需要签名;领便当,需要签名;走在大街上,不小心碰上一个你的粉丝,拿着本子和笔,对了,你需要签名……签名是个人风格和特征的体现,同时,也可以起到安全的作用。

那么,在Pocket PC上,如何来实现签名呢?最简单的方法就是,将签名作为一个位图存放起来。要用的时候,再load进来。

参考RajeshNayak写的Scratchpad/Signature Capture as BMP on Pocket PC,我们可以发现,在Pocket PC上很容易实现最简单的签名。

首先,加入一个Signature panel;然后在FormLoad中,加入

cSignature = new Signature();

cSignature.Location = pnlSignature.Location;

cSignature.Size = pnlSignature.Size;

this.pnlSignature.Visible = false;

this.Controls.Add(cSignature);

    存储签名的图片可以使用:cSignature.Save(Path.Combine(AppPath, "CapturedPicture.bmp"));

    改变画笔的颜色可以使用:cSignature.SetPenColor(Color.Blue);

    加载保存的图片可以使用:cSignature.LoadImage(Path.Combine(AppPath,"PreviouslyCapturedPicture.bmp"));

 

提供的工程代码使用了windows mobile 6 professional SDK.

开发环境是Visual studio 2005 with SP1.

下载地址:http://files.cnblogs.com/dearsj001/SignatureCaptureWM6.rar

 

参考文章:RajeshNayak-Scratchpad/Signature Capture as BMP on Pocket PC

链接:http://www.codeproject.com/KB/mobile/Signature_Capture_PPC.aspx



本文转自施炯博客园博客,原文链接:http://www.cnblogs.com/dearsj001/archive/2008/10/11/1308817.html,如需转载请自行联系原作者


<think>首先,用户的问题是关于解决源码编译过程中出现的"Signature mismatchon systempackage"错误。我需要参考提供的引用内容来构建回答。关键引用:- [^1]:新软件编译到android源码中出现报错:Signature mismatchon systempackage com.xxx.xxxfor shareduser SharedUserSetting。 -[^2]:在应用安装或更新时,PMS会通过verifySignatures()方法验证签名是否一致。防止未授权的APK替换已安装的 APK。- [^3]:解决方案是Android.mk添加 LOCAL_CERTIFICATE:= platform,使用platform来签名,这样的话这个apk就拥有了和system相同的签名。 -[^4]:把app代码放到AndroidSDK下面mmm编译的出来的文件放到system/app/目录下,开机提示错误。解决方法:修改签名。 -[^5]:Android14之编译解决:Signature mismatchon systempackage。涉及使用平台签名。从这些引用中,核心问题是签名不匹配,因为系统包(如共享用户 android.uid.system)要求签名一致。解决方案是使用平台签名(platform)来编译应用。回答结构:1.**解释错误原因**:根据引用[^2],签名不匹配是由于PMS(PackageManagerService)在安装或更新时验证签名失败。2.**提供解决方案**:引用[^3]明确指出在Android.mk文件中添加LOCAL_CERTIFICATE :=platform。3.**详细步骤**:引用[^4]和[^5]支持这个方案,包括编译和放置位置。 4. **确保回答真实可靠**:基于引用内容,避免猜测。 系统级指令: -所有行内数学表达式用$...$,但这里可能不需要数学公式,因为问题是关于Android编译的。 -独立公式用$$...$$,同样不适用。- LaTeX语法正确:确保任何代码块正确。-使用中文回答。-生成相关问题:在末尾添加相关问题。 -引用标识:在引用段落末尾添加[^n]。回答结构: -清晰、逐步解决问题。 -开头简述问题。-解释原因。 -给出解决方案步骤。 -结尾总结或提示。 完整回答:1.解释错误:当编译系统应用时,签名不匹配。2.原因:共享用户(如android.uid.system)要求所有包有相同签名。 3.解决方案:在Android.mk中添加LOCAL_CERTIFICATE :=platform。4.详细步骤:如何修改文件、编译、放置。 5.引用:在相关部分添加引用标识。相关问题生成: -基于主题:Android编译、签名机制、系统应用开发。 -例如:1.如何为Android系统应用添加自定义签名?2.共享用户UID在Android中的作用是什么?3.如何调试其他系统编译错误?最终回答大纲:-问题解释-原因分析-解决方案-步骤说明-相关问题</think>### 解决源码编译中"Signature mismatch on system package"错误 在Android源码编译过程中,出现`Signature mismatch on system package`错误,通常是由于系统应用(如使用`android.uid.system`共享用户ID)的签名与系统签名不一致导致的。Android的包管理服务(PMS)在安装或更新时会严格验证签名,以防止未授权的APK替换[^2]。以下将逐步解释原因并提供解决方案。 #### 错误原因分析 - **签名验证机制**:Android系统要求所有使用相同共享用户ID(如`android.uid.system`)的应用必须有相同的签名。PMS通过`verifySignatures()`方法检查签名是否匹配。如果编译后的APK签名与系统预期不符,会抛出此错误[^2][^4]。 - **常见场景**: - 编译系统级应用(如放在`system/app/`目录的应用)时,未使用平台签名。 - 应用声明了`android:sharedUserId="android.uid.system"`,但签名未对齐[^1][^3]。 - **错误示例**:日志中可能显示类似`java.lang.IllegalStateException: Signature mismatch on system package com.xxx.xxx for shared user SharedUserSetting`的报错[^1][^4]。 #### 解决方案:使用平台签名 核心思路是让应用签名与系统签名一致。通过修改编译配置,使用`platform`证书签名。以下是详细步骤: 1. **修改Android.mk文件**: - 在应用的`Android.mk`文件中添加签名配置: ```makefile LOCAL_CERTIFICATE := platform ``` - 这确保APK使用与系统相同的平台签名,使签名验证通过[^3][^5]。 2. **编译和放置应用**: - 使用`mmm`命令编译应用(例如:`mmm packages/apps/YourApp/`)。 - 将生成的APK输出到系统目录(如`system/app/YourApp/`)[^4][^5]。 3. **验证和测试**: - 重新编译整个系统(`make -j8`)并刷机。 - 开机后检查应用是否正常运行,无签名错误日志[^3][^5]。 #### 注意事项 - **签名一致性**:所有共享`android.uid.system`的应用必须使用相同的`LOCAL_CERTIFICATE := platform`配置。 - **兼容性**:此方案适用于Android 4.0及以上版本,包括Android 14[^5]。 - **避免常见错误**:确保APK未错误放置到`data/app/`目录,否则可能触发权限问题[^4]。 通过以上步骤,错误通常可解决。如果问题依旧,检查应用是否正确定义了`sharedUserId`,或排查其他编译冲突[^3][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值