要想实现android手机通过扫描名片,得到名片信息,可以使用脉可寻提供的第三方SDK,即Maketion ScanCard SDK,脉可寻云名片识别服务。他们的官方网站为http://.example.maketiontest.MaketionActivity" />
MaketionActivity中主要是两个方法takepic()方法和authenticateAccount()方法。
首先在onCreate方法中,得到MkxServer实例,并判断是否已经验证
如果已经验证就进行拍照,如果还没有验证,就验证
authenticateAccount方法
拍照功能
/*** 拍照操作*/private void takepic() {if (isInit) {server.setUploadListener(new MkxBackUpload() {@Overridepublic void onBack(int code, String errInfo, String uuid,int status) {Log.i(TAG, uuid);muuid = uuid;switch (status) {case STATUS_ERROR:// 上传出错if (uploadTimes <= 5) {// 由于重新上传与拍照上传都是调用统一上传函数,因此需要限制重传次数,避免上传图片时产生无限递归uploadTimes++;server.uploadImage(uuid);// 重新上传} else {// 重新上传的次数达到上限时,不再上传,保存不能上传图片的uuiduploadTimes = 0;upLoadFails.add(uuid);Log.i(TAG, "上传失败,等待网络通畅时再重新上传");}break;case STATUS_START:// 开始上传break;case STATUS_SUCESS:// 上传成功server.getDataWithUUID(new String[] { uuid },new MkxBackCards() {@Overridepublic void onBack(int code, String cards,MkxCard[] arg2) {// TODO Auto-generated method stubif (code == MkxErrorCode.CODE_SUCCESS) {if (isInit) { //上传成功则进入名片页面Intent intent = new Intent(MaketionActivity.this,CardDetailActivity.class);intent.putExtra("uuid", muuid);startActivity(intent);} else {Log.i(TAG, "还未验证账户");}}}});Log.i(TAG, "上传成功");break;}}});Intent intent = new Intent(this, MkxActivityCamera.class);startActivity(intent);} else {Log.i(TAG, "还未验证账户,请验证账户再获取数据");finish();}}CardDetailActivity
让我比较疑惑的事情是为什么在获得单张名片信息的时候,回调方法onBack中,参数是MkxCard[] cards
为什么是个对象数组呢= =。看不到SDK的源码,没办法~
运行之后,并不是每张照片都能得到信息,总的来说,还是不怎么好用,建议以后用二维码会更好,或者用nfc。
结果不尽人意~~