#HarmonyOS NEXT thể nghiệm quan # cái gì? Không cần tay thua thân phận chứng tin tức? Nguyên sang

Tím nghiên là ta
Tuyên bố với 2024-8-15 22:06
Xem
2 cất chứa

Phát hiện vấn đề

Hôm nay lại một lần thật danh chứng thực phát hiện đại bộ phận phần mềm thân phận tin tức đệ trình còn dừng lại nơi tay thua giai đoạn, thật đúng là phiền toái a. Đặc biệt là đối trí nhớ tương đối kém người già càng là một loại tai nạn, tay thua không chỉ có hiệu suất thấp hơn nữa dễ dàng làm lỗi, có người còn cần đối với thân phận chứng nhìn một chữ một chữ đưa vào, hiệu suất trực tiếp hàng đến thấp nhất.

#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

Như vậy thông minh ta trước tiên nghĩ đến đến chính là thân phận chứng phân biệt công năng, chỉ cần mở ra camera một phách chiếu, thân phận tin tức liền có thể phân biệt hơn nữa bảo tồn, lần sau sử dụng trực tiếp nhanh chóng phục chế có thể, thật là phương tiện mau lẹ, vậy ở Hồng Mông hệ thống thực hiện một thân phận chứng phân biệt công năng đi!

Khởi công!

#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

Giải quyết vấn đề

Khai phá điều kiện

Phần cứng: Duy trì api12 HarmoneyOS NEXT hệ thống di động hoặc là cứng nhắc

Phần mềm: DevEco Studio NEXT 5.0.3.403 Api 12 ngôn ngữ: Thuyền cứu nạn biên trình ngôn ngữ ( ArkTs )

UI khai phá dàn giáo: Thuyền cứu nạn UI dàn giáo, ArkUI



Công năng phân tích

Muốn thực hiện tấm card rà quét

1. UI giao diện thực hiện

2. Duy trì bao dẫn vào

3. Rà quét giao diện kéo

4. Tạp chứng rà quét

5. Tạp chứng phân biệt

6. Tạp chứng nội dung phân tích

Bước đi

1.1 đầu tiên thực hiện ui giao diện

Trước xây dựng một cái kéo phân biệt giao diện ui giao diện, phương tiện chúng ta tiến hành kế tiếp thao tác

#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

Số hiệu thực hiện như sau

@Provide('pathStack') pathStack: NavPathStack = new NavPathStack()

@Builder
PageMap(name: string) {
if (name === 'cardIdentify') {
CardDemoPage()
}
}

build() {
Navigation(this.pathStack) {
Image($r('app.media.card'))
.width('100%')
.height(300)
.objectFit(ImageFit.Fill)
Button(' bắt đầu phân biệt ', { stateEffect: true, type: ButtonType.Capsule })
.width('50%')
.height(40)
.onClick(() => {
this.pathStack.pushPath({ name: 'cardIdentify' })
})
}.title(' thân phận chứng phân biệt ').navDestination(this.PageMap)
.mode(NavigationMode.Stack)
}


2.1 đem tạp chứng phân biệt khống kiện tương quan loại tăng thêm.

import { CardRecognition, CallbackParam, CardType, CardSide } from "@kit.VisionKit";

Phối trí giao diện bố cục, lựa chọn yêu cầu phân biệt tạp chứng loại hình, cùng yêu cầu phân biệt tạp chứng giao diện, ở hồi điều trung thu hoạch kết quả phản hồi giá trị.

3.1 thân phận chứng phân biệt giao diện kéo

cardSide thuộc tính có thể thiết trí chúng ta muốn phân biệt mấy cái mặt

Chúng ta tiến vào nguyên mã có thể nhìn đến như sau

#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

FRONT = 0 chỉ rà quét hình người mặt

BACK = 1 chỉ rà quét quốc huy mặt

DEFAULT = 2 chính phản diện đều rà quét


Nguyên mã có thể nhìn đến CardRecognition chính là chúng ta muốn phân biệt tạp chứng lắp ráp


#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

4.1 tạp chứng rà quét giao diện

#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

Đầu tiên chúng ta trước sử dụng người nào đó thân phận chứng tiến hành thí nghiệm, có thể nhìn đến lắp ráp tự thân nhất tấm card phân biệt có một cái định vị che tráo số hiệu thực hiện như sau

Stack({ alignContent: Alignment.Top }) {
Stack() {
this.cardDataShowBuilder()

}
.width('80%')
.height('80%')

CardRecognition({

supportType: CardType.CARD_ID,
cardSide: CardSide.FRONT,
callback: ((params: CallbackParam) => {
hilog.info(0x0001, TAG, `params code: ${params.code}`)
if (params.code === -1) {
this.pathStack.pop()
}
hilog.info(0x0001, TAG, `params cardType: ${params.cardType}`)
if (params.cardInfo?.front!== undefined) {
this.cardDataSource.push(params.cardInfo?.front)
}

if (params.cardInfo?.back!== undefined) {
this.cardDataSource.push(params.cardInfo?.back)
}

if (params.cardInfo?.main!== undefined) {
this.cardDataSource.push(params.cardInfo?.main)
}
hilog.info(0x0001, TAG, `params cardInfo front: ${JSON.stringify(params.cardInfo?.front)}`)
hilog.info(0x0001, TAG, `params cardInfo back: ${JSON.stringify(params.cardInfo?.back)}`)
})
})
}
.width('100%')
.height('100%')

Khi chúng ta điểm đánh quay chụp cái nút lúc sau

#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

Hệ thống api sẽ ở camera giao diện sinh thành trước mặt phân biệt hình ảnh đồ tầng, sau đó tiến hành phân biệt, ( phân biệt hồi điều phương pháp như sau )


Hồi điều tham số

callback: Callback<CallbackParam>;
Sử dụng
callback: ((params: CallbackParam) => {
if (params.code === -1) {
this.pathStack.pop()
}
if (params.cardInfo?.front!== undefined) {
this.cardDataSource.push(params.cardInfo?.front)
}

if (params.cardInfo?.back!== undefined) {
this.cardDataSource.push(params.cardInfo?.back)
}

if (params.cardInfo?.main!== undefined) {
this.cardDataSource.push(params.cardInfo?.main)
}
})

Sau đó định nghĩa một cái tham số tới tiếp thu phản hồi nội dung

@State cardDataSource: Record<string, string>[] = []



Chấp hành trình tự sau có thể thông qua debug phát hiện, phản hồi số liệu kết cấu loại hình như sau


#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

Căn cứ số liệu nội dung chúng ta sinh thành một cái đối ứng thật thể tới tiếp thu tham số

export class IdentityInfo {
address: string;
birth: string;
cardImageUri: string;
idNumber: string;
name: string;
nationality: string;
originalImageUri: string;
sex: string;

constructor(
address: string,
birth: string,
cardImageUri: string,
idNumber: string,
name: string,
nationality: string,
originalImageUri: string,
sex: string
) {
this.address = address;
this.birth = birth;
this.cardImageUri = cardImageUri;
this.idNumber = idNumber;
this.name = name;
this.nationality = nationality;
this.originalImageUri = originalImageUri;
this.sex = sex;
}
}

Sinh thành đối ứng phân tích phương pháp, phản hồi một chữ phù thông đồng quá text lắp ráp tới triển lãm kỹ càng tỉ mỉ tin tức

getJson(json:string):string{

let txt:IdentityInfo=JSON.parse(json)

let rtTxt:string= "Hình người mặt tin tức như sau:\n" +
"Tên họ:" +txt.name+ "\n" +
"Dân tộc:" +txt.nationality + "\n" +
"Giới tính:" +txt.sex + "\n" +
"Số thẻ:" +txt.idNumber+ "\n" +
"Địa chỉ:" +txt.address+ "\n"
return rtTxt
}

Text(this.getJson(JSON.stringify(cardData)))
.width('100%')
.fontSize(12)



Như vậy chúng ta liền ở Hồng Mông trung thực hiện tạp chứng hình người mặt phân biệt cùng với số liệu phân tích.



Nếu yêu cầu thực hiện chính phản diện phân biệt, liền đem cardSide thiết trí vì CardSide.DEFAULT, giao diện triển lãm như sau

#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

Lúc này số liệu tiếp thu yêu cầu sử dụng list tới thực hiện ( số hiệu như sau )


@Builder
cardDataShowBuilder() {
Column(){
List() {
ForEach(this.cardDataSource, (cardData: Record<string, string>,index:number) => {
ListItem() {
Column() {

Text((JSON.stringify(cardData)))
.width('100%')
.fontSize(12)

}
}
})
}
.listDirection(Axis.Vertical)
.alignListItem(ListItemAlign.Center)
.margin({
top: 50
})
.width('100%')
.height('100%')


}

}

Sinh thành tin tức như sau, sau đó căn cứ phản hồi json tin tức sinh thành đối ứng thật thể đi phân tích triển lãm liền hoàn thành lạc

#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

Như vậy đã có thể bớt việc nhiều lạp


#HarmonyOS NEXT体验官#什么?不用手输身份证信息了?-鸿蒙开发者社区

© quyền tác giả về tác giả sở hữu, như cần đăng lại, thỉnh ghi chú rõ xuất xứ, nếu không đem truy cứu pháp luật trách nhiệm
Phân loại
Đã với 2024-8-15 22:08:01 sửa chữa
Tán
Cất chứa 2
Hồi phục
Cử báo
Hồi phục
    Tương quan đề cử
    Cái này người dùng thực lười, còn không có cá nhân tóm tắt
    Thiệp
    Video
    Danh vọng
    Fans
    Xã khu tinh hoa nội dung

    Mục lục