女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入淺出學(xué)習(xí)eTs之在線翻譯功能實(shí)現(xiàn)

Harmony&嵌入式學(xué)習(xí) ? 來源:Harmony&嵌入式學(xué)習(xí) ? 作者:Harmony&嵌入式學(xué) ? 2023-05-13 13:30 ? 次閱讀

一、需求分析

本章節(jié)我們來制作中文翻譯成英文的實(shí)例(運(yùn)行在HarmonyOS上),通過HTTP去配合API進(jìn)行實(shí)現(xiàn)。

文字輸入

HTTP協(xié)議使用

文字翻譯

二、控件介紹

(1)HTTP數(shù)據(jù)請(qǐng)求官方文檔

wKgaomRfIIWAGdfDAAC-SVKx4ng981.png

請(qǐng)求行:代表使用POST或者GET

請(qǐng)求頭:主要的一些設(shè)定參數(shù)

請(qǐng)求體:數(shù)據(jù)

場(chǎng)景介紹

應(yīng)用通過HTTP發(fā)起一個(gè)數(shù)據(jù)請(qǐng)求,支持常見的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。

接口說明

HTTP數(shù)據(jù)請(qǐng)求功能主要由http模塊提供。

使用該功能需要申請(qǐng)ohos.permission.INTERNET權(quán)限。

權(quán)限申請(qǐng)請(qǐng)參考訪問控制(權(quán)限)開發(fā)指導(dǎo)。

涉及的接口如下表,具體的接口說明請(qǐng)參考API文檔。

接口名 功能描述
createHttp() 創(chuàng)建一個(gè)http請(qǐng)求。
request() 根據(jù)URL地址,發(fā)起HTTP網(wǎng)絡(luò)請(qǐng)求。
destroy() 中斷請(qǐng)求任務(wù)。
on(type: ‘headersReceive’) 訂閱HTTP Response Header 事件。
off(type: ‘headersReceive’) 取消訂閱HTTP Response Header 事件。

使用例程

import http from '@ohos.net.http';

// 每一個(gè)httpRequest對(duì)應(yīng)一個(gè)http請(qǐng)求任務(wù),不可復(fù)用
let httpRequest = http.createHttp();

// 用于訂閱http響應(yīng)頭,此接口會(huì)比request請(qǐng)求先返回。可以根據(jù)業(yè)務(wù)需要訂閱此消息
// 從API 8開始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
});

httpRequest.request(
    // 填寫http請(qǐng)求的url地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開發(fā)者自定義。請(qǐng)求的參數(shù)可以在extraData中指定
    "EXAMPLE_URL",
    {
        method: http.RequestMethod.POST, // 可選,默認(rèn)為http.RequestMethod.GET
        // 開發(fā)者根據(jù)自身業(yè)務(wù)需要添加header字段
        header: {
            'Content-Type': 'application/json'
        },
        // 當(dāng)使用POST請(qǐng)求時(shí)此字段用于傳遞內(nèi)容
        extraData: {
            "data": "data to send",
        },
        connectTimeout: 60000, // 可選,默認(rèn)為60s
        readTimeout: 60000, // 可選,默認(rèn)為60s
    }, (err, data) => {
        if (!err) {
            // data.result為http響應(yīng)內(nèi)容,可根據(jù)業(yè)務(wù)需要進(jìn)行解析
            console.info('Result:' + data.result);
            console.info('code:' + data.responseCode);
            // data.header為http響應(yīng)頭,可根據(jù)業(yè)務(wù)需要進(jìn)行解析
            console.info('header:' + JSON.stringify(data.header));
            console.info('cookies:' + data.cookies); // 8+
        } else {
            console.info('error:' + JSON.stringify(err));
            // 該請(qǐng)求不再使用,調(diào)用destroy方法主動(dòng)銷毀。
            httpRequest.destroy();
        }
    }
);

復(fù)制

(2)輸入框官方文檔

wKgZomRfIIaAZYD5AANekWNZknU733.gif

 TextInput({ placeholder: 'input your word...', controller: this.controller })
        .placeholderColor(Color.Grey)
        .placeholderFont({ size: 14, weight: 400 })
        .caretColor(Color.Blue)
        .width(400)
        .height(40)
        .margin(20)
        .fontSize(14)
        .fontColor(Color.Black)
        .onChange((value: string) => {
          this.text = value
        })

復(fù)制

三、UI設(shè)計(jì)

(1)輸入框

首先創(chuàng)建變量,作為輸入框的控制器,并且創(chuàng)建一個(gè)string數(shù)組,用來接收輸入框中的變量

@State IN_Value: string = '' 
controller: TextInputController = new TextInputController()

復(fù)制

此時(shí)屏幕中出現(xiàn)一個(gè)輸入框

wKgaomRfIIaAIG8CAABL7f6DsOE048.png

(2)按鈕

wKgZomRfIIeAUaZGAABc894-fz0518.png

        Button('翻  譯')
          .width('60%')
          .height(60)
          .fontSize(30)

復(fù)制

(3)顯示框

wKgaomRfIIeAZy4AAABoc7qztgk350.png

在這里把要輸出的幅值給TEXT

        Text(this.Out_Value)
          .fontSize(25)
          .width('80%')
          .height(100)
          .textAlign(TextAlign.Center)
          .border({ width: 1 })

復(fù)制

四、功能設(shè)計(jì)

(1)聯(lián)網(wǎng)權(quán)限

wKgZomRfIIiATKvwAAI_GLo0YRo770.png

(2)HTTP功能

先把最基本的實(shí)現(xiàn),包括包的導(dǎo)入,基本函數(shù)的創(chuàng)建

import http from '@ohos.net.http';


// 每一個(gè)httpRequest對(duì)應(yīng)一個(gè)http請(qǐng)求任務(wù),不可復(fù)用
let httpRequest = http.createHttp();


// 用于訂閱http響應(yīng)頭,此接口會(huì)比request請(qǐng)求先返回。可以根據(jù)業(yè)務(wù)需要訂閱此消息
// 從API 8開始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) => {


});

復(fù)制

再編寫功能模塊

            httpRequest.request(
              // 填寫http請(qǐng)求的url地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開發(fā)者自定義。請(qǐng)求的參數(shù)可以在extraData中指定
              "http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=" + this.IN_Value,
              {
                method: http.RequestMethod.GET, // 可選,默認(rèn)為http.RequestMethod.GET
                connectTimeout: 60000, // 可選,默認(rèn)為60s
                readTimeout: 60000, // 可選,默認(rèn)為60s
              }, (err, data) => {
              if (!err) {
                // data.result為http響應(yīng)內(nèi)容,可根據(jù)業(yè)務(wù)需要進(jìn)行解析

                var Get_Return = data.result.toString()
                var Begin_Num =  Get_Return.indexOf('"tgt":"')
                var Last_Num = Get_Return.lastIndexOf('"}')
                var Get_char = Get_Return.substring(Begin_Num+7,Last_Num)
                console.log(JSON.stringify(Get_char));
                this.Out_Value = Get_char

                //console.log('hello world'.lastIndexOf('o'));



              } else {
                // 該請(qǐng)求不再使用,調(diào)用destroy方法主動(dòng)銷毀。
                httpRequest.destroy();
              }
            }
            );

復(fù)制

(3)數(shù)據(jù)處理函數(shù)

1、substring()

console.log('JavaScript'.substring(0, 4)); // "Java"
console.log('JavaScript'.substring(4)) // "Script"

復(fù)制

用于從原字符串取出子字符串并返回,不改變?cè)址鷖lice方法很相像。它的第一個(gè)參數(shù)表示子字符串的開始位置,第二個(gè)位置表示結(jié)束位置(返回結(jié)果不含該位置

2、indexOf()

console.log('hello world'.indexOf('o')); // 4
console.log('JavaScript'.indexOf('script')); // -1

復(fù)制

用于確定一個(gè)字符串在另一個(gè)字符串中 第一次出現(xiàn) 的位置,返回結(jié)果是匹配開始的位置。如果返回-1,就表示不匹配

3、lastIndexOf()

console.log('hello world'.lastIndexOf('o')); // 7

復(fù)制

從尾部開始遇到的第一次出現(xiàn)的位置,這個(gè)位置的返回結(jié)果是 從左邊開始算起,而不是從右邊開始算起。

五、程序驗(yàn)證

wKgaomRfIImAGmU8AALnHgoJeRQ475.gif

如上圖所示,已經(jīng)實(shí)現(xiàn)了翻譯功能,在下個(gè)章節(jié)會(huì)加入翻譯后發(fā)音功能
編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1559

    瀏覽量

    63490
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    520

    瀏覽量

    32435
  • OpenHarmony
    +關(guān)注

    關(guān)注

    26

    文章

    3816

    瀏覽量

    18090
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    #深入淺出學(xué)習(xí)eTs#(八)“猜大小”小游戲

    本項(xiàng)目Gitee倉地址:[深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)
    的頭像 發(fā)表于 05-17 15:08 ?1310次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>eTs</b>#(八)“猜大小”小游戲

    #深入淺出學(xué)習(xí)eTs#(十)藍(lán)藥丸還是紅藥丸

    本項(xiàng)目Gitee倉地址: 深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)
    的頭像 發(fā)表于 05-17 15:07 ?1198次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>eTs</b>#(十)藍(lán)藥丸還是紅藥丸

    深入淺出Android

    深入淺出Android
    發(fā)表于 08-20 10:14

    ARM7 深入淺出學(xué)習(xí)

    深入淺出ARM7 LPC213x_214 學(xué)習(xí)
    發(fā)表于 12-04 17:28

    深入淺出Android

    深入淺出Android
    發(fā)表于 04-26 10:48

    深入淺出排序學(xué)習(xí)使用指南

    深入淺出排序學(xué)習(xí):寫給程序員的算法系統(tǒng)開發(fā)實(shí)踐
    發(fā)表于 09-16 11:38

    #深入淺出學(xué)習(xí)eTs#(一)模擬器/真機(jī)環(huán)境搭建

    本項(xiàng)目的Gitee倉地址: 深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com
    發(fā)表于 12-24 13:02

    #深入淺出學(xué)習(xí)eTs#(六)編寫eTs第一個(gè)控件

    本項(xiàng)目Gitee倉地址:深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)一
    發(fā)表于 12-29 10:05

    #深入淺出學(xué)習(xí)eTs#(七)判斷密碼是否正確

    本項(xiàng)目Gitee倉地址:深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)一
    發(fā)表于 12-29 10:06

    深入淺出Cortex-M0學(xué)習(xí)資料

    深入淺出Cortex-M0學(xué)習(xí)資料
    發(fā)表于 06-18 10:50 ?0次下載
    <b class='flag-5'>深入淺出</b>Cortex-M0<b class='flag-5'>學(xué)習(xí)</b>資料

    深入淺出學(xué)習(xí)250個(gè)通信原理資源下載

    深入淺出學(xué)習(xí)250個(gè)通信原理資源下載
    發(fā)表于 04-12 09:16 ?29次下載

    深入淺出學(xué)習(xí)低功耗藍(lán)牙協(xié)議棧

    深入淺出學(xué)習(xí)低功耗藍(lán)牙協(xié)議棧
    發(fā)表于 06-23 10:35 ?58次下載

    深入淺出學(xué)習(xí)eTs(一)模擬器/真機(jī)環(huán)境搭建

    本項(xiàng)目的Gitee倉地址: 深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com
    的頭像 發(fā)表于 05-13 13:17 ?2159次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>eTs</b>(一)模擬器/真機(jī)環(huán)境搭建

    深入淺出學(xué)習(xí)eTs(七)如何判斷密碼是否正確

    本項(xiàng)目Gitee倉地址: 深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)
    的頭像 發(fā)表于 05-13 13:20 ?1151次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>eTs</b>(七)如何判斷密碼是否正確

    深入淺出學(xué)習(xí)eTs之九宮格密碼鎖功能實(shí)現(xiàn)

    本項(xiàng)目Gitee倉地址:深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)
    的頭像 發(fā)表于 05-13 13:25 ?1949次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>eTs</b>之九宮格密碼鎖<b class='flag-5'>功能</b><b class='flag-5'>實(shí)現(xiàn)</b>