日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文是學(xué)習(xí)過(guò)程記錄,這一篇主要包含HMS的配置、AppGallery連接和廣告服務(wù)、機(jī)器學(xué)習(xí)服務(wù)等內(nèi)容。

幾個(gè)小技巧

對(duì)于紅色警告的單詞,鼠標(biāo)放到單詞字母中間,然后Alt+Enter一般可以自動(dòng)導(dǎo)入。
對(duì)于數(shù)字參數(shù),可以選中它,然后Ctrl+Shift+C,會(huì)把它變?yōu)橐粋€(gè)大寫的變量。
要把哪個(gè)Activ作為啟動(dòng)頁(yè),只要打開(kāi)AndroidManifest.xml文件,把其中的<intent-filter>...部分剪切到目標(biāo)Activity內(nèi)即可,例如:

<activity android:name=".TextActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

準(zhǔn)備工作

HMS,即Huawei Mobile Service華為移動(dòng)服務(wù),是和谷歌的GMS(google Mobile Service)對(duì)標(biāo)的另外一套安卓服務(wù)框架。

安卓是開(kāi)源的,但其上的服務(wù)框架GMS則是完全的谷歌產(chǎn)品。HMS是華為搭建自有終端軟件生態(tài)系統(tǒng)的關(guān)鍵產(chǎn)品,也是未來(lái)鴻蒙系統(tǒng)生態(tài)的重要前提。

要在安卓APP開(kāi)發(fā)中使用HMS的各種強(qiáng)大功能,首先需要注冊(cè)成為火花紋開(kāi)發(fā)者聯(lián)盟開(kāi)發(fā)者,并完成用戶身份認(rèn)證,推薦使用銀行卡自動(dòng)認(rèn)證,基本上可以實(shí)時(shí)完成。

華為開(kāi)發(fā)者聯(lián)盟傳送門

華為HMS開(kāi)發(fā)零基礎(chǔ)上手

 

創(chuàng)建在線項(xiàng)目和應(yīng)用

在開(kāi)發(fā)APP之前,應(yīng)該先在華為開(kāi)發(fā)者聯(lián)盟網(wǎng)站的【管理中心】創(chuàng)建一個(gè)項(xiàng)目,并在項(xiàng)目?jī)?nèi)創(chuàng)建APP應(yīng)用。

華為開(kāi)發(fā)者管理中心傳送門

華為的應(yīng)用商店叫做AppGallery,所以我們進(jìn)入【AppGallery Connect(AGC)】來(lái)管理項(xiàng)目和應(yīng)用。

華為HMS開(kāi)發(fā)零基礎(chǔ)上手

 

進(jìn)入【我的項(xiàng)目】,添加項(xiàng)目,名稱任意。然后【添加應(yīng)用】,如下圖所示。注意應(yīng)用包名建議用.huawei,如果遇到包名已經(jīng)被占用,建議包名結(jié)合用戶名類似user.demo.huawei或demo.user.huawei。

華為HMS開(kāi)發(fā)零基礎(chǔ)上手

 

然后我們回到【我的項(xiàng)目】首頁(yè),進(jìn)入這個(gè)新建的項(xiàng)目,可以看到這里有開(kāi)發(fā)者ID(Developer ID)和APP ID、API Key等信息。

進(jìn)入【API管理】可以設(shè)定這個(gè)項(xiàng)目能夠使用哪些HMS的服務(wù)功能。下面是一些常用服務(wù)的簡(jiǎn)介。

服務(wù) | 說(shuō)明
-|-|-
Analytics Kit | 分析服務(wù),幫助開(kāi)發(fā)者分析用戶使用數(shù)據(jù)。
Auth Service | 第三方身份認(rèn)證服務(wù),比如蘋果賬號(hào)、微信賬號(hào)、QQ賬號(hào)等。
Remote Configuration | 遠(yuǎn)程配置服務(wù),利用云端配置自動(dòng)更改APP行為或外觀。
App Linking | 跨應(yīng)用的連接跳轉(zhuǎn),也幫助開(kāi)發(fā)者跟蹤用戶連接點(diǎn)擊行為。
APMS | 應(yīng)用性能管理和監(jiān)控。
App Messaging | 用于內(nèi)信息,各種彈窗和提示。
Cloud Hosting | 云主機(jī)服務(wù)。
Cloud Storage | 云存儲(chǔ)服務(wù)。
In-App Purchases | 應(yīng)用內(nèi)購(gòu)買付費(fèi)服務(wù)。
Account Kit | 華為賬號(hào)服務(wù),用華為賬號(hào)登陸APP。
Game Service | 游戲服務(wù),玩家成就、排行榜和存檔。
Push Kit | 消息推送服務(wù),向用戶推送通知。
Wallet Kit | 錢包服務(wù),卡、證、券、票、鑰匙等各類憑證電子化。
Map Kit | 地圖服務(wù)。
Drive Kit | 云空間服務(wù)。
ML Kit | 機(jī)器學(xué)習(xí)服務(wù),涉及文字識(shí)別、圖像識(shí)別、語(yǔ)音識(shí)別、人臉識(shí)別等。
Safety Detect | 安全檢測(cè)服務(wù),防病毒和惡意程序。
Site kit | 位置服務(wù),基于地理定位的服務(wù)。
Nearby Service | 近距離通信服務(wù),與附加的手機(jī)傳數(shù)據(jù)。
FIDO | 線上快速身份驗(yàn)證服務(wù),生物特征認(rèn)證和快速線上身份驗(yàn)證。
Awareness Kit | 情景感知服務(wù),包括位置、天氣、用戶狀態(tài)、環(huán)境光等。

如果搞不清這個(gè)些服務(wù)的狀況,那么可以先都打開(kāi)。

配置開(kāi)發(fā)項(xiàng)目

打開(kāi)AndroidStudio新建項(xiàng)目。注意包名Package name要和在線的一致,如下圖所示,注意不要有多余的空格,否則無(wú)法下一步。建議Minimum最小SDK不要故意選太低,建議20以上。

華為HMS開(kāi)發(fā)零基礎(chǔ)上手

 

1. agc配置文件

從網(wǎng)站【我的項(xiàng)目】找到對(duì)應(yīng)項(xiàng)目,下載應(yīng)用對(duì)應(yīng)的agconnect-services.json文件,將AndroidStudio文件列表切換到Project模式,把這個(gè)json文件拖拽到app文件夾下,與src文件夾同一級(jí)別,彈窗move提示直接OK。

華為HMS開(kāi)發(fā)零基礎(chǔ)上手

 

然后在網(wǎng)站項(xiàng)目頁(yè)面點(diǎn)擊【添加SDK】,根據(jù)下面提示進(jìn)行配置。

2. 項(xiàng)目級(jí)構(gòu)建設(shè)置

然后再切換Project回到Android,找到【Gradle Scripts/build.gradle(Project…)】項(xiàng)目級(jí)構(gòu)建配置,編輯添加兩個(gè)maven倉(cāng)庫(kù)和一個(gè)classpath路徑,完成后類似如下所示:

buildscript {
    repositories {        google()        jcenter()        maven {url 'https://developer.huawei.com/repo/'}
    }    dependencies {        classpath "com.android.tools.build:gradle:4.0.1"
        classpath 'com.huawei.agconnect:agcp:1.3.1.300'
    }}allprojects {    repositories {        google()        jcenter()        maven {url 'https://developer.huawei.com/repo/'}
    }}task clean(type: Delete) {
    delete rootProject.buildDir
}

修改之后點(diǎn)擊頂部彈出的Sync Now更新設(shè)置。也可以點(diǎn)擊Sync with Gradle Files按鈕,如下圖所示。

華為HMS開(kāi)發(fā)零基礎(chǔ)上手

 

3. 模塊級(jí)構(gòu)建設(shè)置

然后找到找到【Gradle Scripts/build.gradle(Module…)】模塊級(jí)構(gòu)建配置,頂部添加一個(gè)app plugin插件,dependencies中添加一個(gè)implementation依賴,代碼如下所示:

apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'
android {
    compileSdkVersion 30
    buildToolsVersion "30.0.0"
    defaultConfig {        ...    }    buildTypes {        ...    }}dependencies {    ...    implementation 'com.huawei.agconnect:agconnect-core:1.3.1.300'
}

修改之后點(diǎn)擊頂部彈出的Sync Now更新設(shè)置。

添加廣告服務(wù)

華為廣告服務(wù)HUAWEI Ads可以讓我們直接在APP頁(yè)面內(nèi)放入一個(gè)廣告條,這個(gè)廣告條內(nèi)容是華為提供的,如果APP用戶大量觀看這個(gè)廣告,華為就會(huì)向開(kāi)發(fā)者支付一定的廣告酬勞。

幾乎所有的應(yīng)用或游戲都可以放入廣告條,廣告條形式有很多種,常用的有banner廣告位和應(yīng)用啟動(dòng)畫面廣告位(開(kāi)屏廣告)。

華為廣告服務(wù)首頁(yè)

從廣告服務(wù)首頁(yè)點(diǎn)【查看文檔】進(jìn)入文檔頁(yè)面。然后左側(cè)瀏覽到【廣告服務(wù)/流量變現(xiàn)服務(wù)/應(yīng)用開(kāi)發(fā)/集成HMS Core SDK】,參照下面提示進(jìn)行配置。

1. Project模式添加json配置

參見(jiàn)上面內(nèi)容,在project模式下,確保agconnect-services.json文件被放到了src同級(jí)目錄。

2 項(xiàng)目級(jí)build添加2個(gè)倉(cāng)庫(kù)和1個(gè)路徑

參見(jiàn)上面內(nèi)容,在【Gradle Scripts/build.gradle(Project…)】中:

  • 檢查兩處倉(cāng)庫(kù)maven {url 'https://developer.huawei.com/repo/'}是否有添加(jcenter()下面)。
  • 檢查classpath 'com.huawei.agconnect:agcp:1.3.1.300'是否正確添加。

3. 模塊級(jí)build添加2個(gè)實(shí)現(xiàn)和1個(gè)插件

參見(jiàn)上面內(nèi)容,在【Gradle Scripts/build.gradle(Module…)】中:

  • 檢查dependencies中是否添加implementation 'com.huawei.agconnect:agconnect-core:1.3.1.300'
  • 添加新的implementation 'com.huawei.hms:ads-lite:13.4.33.300'
  • 檢查是否添加apply plugin: 'com.huawei.agconnect'

4. 創(chuàng)建AdSampleApplication類

在應(yīng)用目錄上右擊,創(chuàng)建JAVA類class,命名為AdSampleApplication。

華為HMS開(kāi)發(fā)零基礎(chǔ)上手

 

然后編輯內(nèi)容為下面內(nèi)容,注意第一行應(yīng)該不同。

package hms.demo02.zhyuzh;
import android.app.Application;
import com.huawei.hms.ads.HwAds;
public class AdSampleApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        HwAds.init(this);
    }}

同時(shí)修改目錄文件【mainifests/AndroidManifests.xml】,向<application...>中添加以下兩行:

<application
    android:usesCleartextTraffic="true"
    android:name=".AdSampleApplication"
    ...
    >
    ...</application>

Banner廣告

我們要在MainActivity界面上顯示一個(gè)華為廣告圖片。

1. 修改activity_main.xml

改為L(zhǎng)inearLayout,添加一個(gè)BannerView,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:hwads="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity">
    <com.huawei.hms.ads.banner.BannerView
        android:id="@+id/hw_banner_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        hwads:adId="testw6vs28auh3"
        hwads:bannerSize="BANNER_SIZE_360_144"/>
</LinearLayout>

注意上面LinearLayout中新增的xmlns:hwads="http://schemas.android.co,沒(méi)有它的話下面hwads會(huì)報(bào)錯(cuò)。

注意最后的BANNER_SIZE_360_144,如果是BANNER_SIZE_360_57可能就不顯示圖像。

2. 修改MainActivity.java

主要修改onCreate方法的內(nèi)容,使用loadAd()來(lái)獲取廣告,修改后的代碼主要代碼如下:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        BannerView bannerView = findViewById(R.id.hw_banner_view);        bannerView.setAdId("testw6vs28auh3");
        bannerView.setBannerAdSize(BannerAdSize.BANNER_SIZE_360_57);        AdParam adParam = new AdParam.Builder().build();
        bannerView.loadAd(adParam);    }}

最后,你需要有一臺(tái)華為的手機(jī),打開(kāi)開(kāi)發(fā)者模式,授權(quán)USB調(diào)試,并連接到AndroidStudio,安裝調(diào)試才能看到華為廣告出現(xiàn)在畫面上。

非華為手機(jī)都不能正常顯示這個(gè)廣告內(nèi)容。

文本識(shí)別

如何開(kāi)發(fā)一個(gè)能夠識(shí)別拍照照片中文字的APP?這要用到HMS的機(jī)器學(xué)習(xí)服務(wù)ML Kit。

從HMS文檔頁(yè)面瀏覽到【機(jī)器學(xué)習(xí)服務(wù)/Android/應(yīng)用開(kāi)發(fā)/開(kāi)發(fā)準(zhǔn)備/集成HMS Core SDK】頁(yè)面,參照以下步驟進(jìn)行。

1. 添加AGC配置文件

如前所述,確保agconnect-services.json被正常下載和添加。

2. 配置Maven倉(cāng)庫(kù)

如前所述,確保在項(xiàng)目級(jí)構(gòu)建設(shè)置【Gradle Scripts/build.gradle(Project…)】中的兩個(gè)jcenter()后面添加了新的倉(cāng)庫(kù)地址。

3. 添加依賴實(shí)現(xiàn)

往下層瀏覽【集成HMS Core SDK/添加編譯依賴/集成文本識(shí)別服務(wù)SDK】,參照下面說(shuō)明繼續(xù)。

如前所述,在模塊級(jí)構(gòu)建設(shè)置【Gradle Scripts/build.gradle(Module…)】
中添加幾行新代碼:

  implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.1.300'
  implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.1.300'
  implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.1.300'
  implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.1.300'

這里包含了拉丁日韓中英文識(shí)別工具包。

別忘了檢查插件行apply plugin: 'com.huawei.agconnect'被添加在結(jié)尾。

4. 云端識(shí)別開(kāi)發(fā)

切換頁(yè)面到【應(yīng)用開(kāi)發(fā)/文本類服務(wù)開(kāi)發(fā)/文本識(shí)別】頁(yè)面,參照下面內(nèi)容繼續(xù)。

HMS的文本識(shí)別基本步驟是:

  • 創(chuàng)建一個(gè)分析器MLTextAnalyzer,并設(shè)置分析器參數(shù)
  • 創(chuàng)建一個(gè)機(jī)器學(xué)習(xí)框架MLFrame
  • 將MLFrame傳遞給分析器MLTextAnalyzer進(jìn)行識(shí)別,利用onSuccess回調(diào)執(zhí)行操作
  • 識(shí)別完成后停止分析器,釋放資源。

我們創(chuàng)建一個(gè)新的Activity,把這個(gè)邏輯寫入java代碼。由于MLFrame需要使用到位圖進(jìn)行識(shí)別,所以我們利用照相機(jī)獲取拍攝的圖片。

界面xml部分:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".textActivity">
    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="請(qǐng)先拍照"
        android:minHeight="100dp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="100dp"
            android:onClick="shot"
            android:text="SHOT!" />
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="100dp"
            android:onClick="recog"
            android:text="RECOG!"
            />
    </LinearLayout>
</LinearLayout>

邏輯代碼java部分:

public class textActivity extends AppCompatActivity {
    public static final int REQUEST_CODE = 5;
    Bitmap bitmap=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text);    }    public void shot(View view) {
        Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, REQUEST_CODE);    }    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==REQUEST_CODE && resultCode==RESULT_OK){
            assert data != null;
            bitmap=(Bitmap) Objects.requireNonNull(data.getExtras()).get("data");
            ImageView imageView=findViewById(R.id.image_shot);            imageView.setImageBitmap(bitmap);        }    }    public void read2(View view) {
        final MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance().getRemoteTextAnalyzer();
        MLFrame frame = MLFrame.fromBitmap(bitmap);        Task<MLText> task = analyzer.asyncAnalyseFrame(frame);        task.addOnSuccessListener(new OnSuccessListener<MLText>() {
            @Override
            public void onSuccess(MLText text) {
                TextView textView=findViewById(R.id.text_Recog);                textView.setText(text.getStringValue());                Toast.makeText(textActivity.this, text.getStringValue(), Toast.LENGTH_LONG).show();
                try {
                    analyzer.stop();                } catch (IOException e) {
                    Toast.makeText(textActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }            }        });    }}

運(yùn)行后點(diǎn)擊SHOT按鈕拍照,照片會(huì)顯示在畫面上;然后點(diǎn)擊RECOG按鈕進(jìn)行識(shí)別。

非華為手機(jī)都不能正常運(yùn)行這個(gè)內(nèi)容。

實(shí)時(shí)語(yǔ)音識(shí)別

如何利用HMS服務(wù)實(shí)現(xiàn)實(shí)時(shí)的語(yǔ)音轉(zhuǎn)文字?仍然是機(jī)器學(xué)習(xí)服務(wù)的功能。

在文檔中瀏覽到【應(yīng)用開(kāi)發(fā)/語(yǔ)音語(yǔ)言類服務(wù)開(kāi)發(fā)/實(shí)時(shí)語(yǔ)音識(shí)別/開(kāi)發(fā)步驟-實(shí)時(shí)語(yǔ)音識(shí)別(有界面)】,參照下面提示進(jìn)行。

我們?nèi)匀幌葎?chuàng)建新的Activity用來(lái)測(cè)試。

1. 集成語(yǔ)音服務(wù)

在【Gradle Scripts/build.gradle(Module…)】中添加兩個(gè)依賴。

implementation 'com.huawei.hms:ml-computer-voice-asr-plugin:2.0.3.300'
implementation 'com.huawei.hms:ml-computer-voice-asr:2.0.3.300'

2. 添加授權(quán)

因?yàn)檎Z(yǔ)音識(shí)別要用到很多權(quán)限,所以要在AndroidManifest.xml中添加授權(quán),如果分不清的話就把下面的授權(quán)都添加。詳細(xì)說(shuō)明地址在【應(yīng)用開(kāi)發(fā)/開(kāi)發(fā)準(zhǔn)備/制定權(quán)限】中有詳細(xì)說(shuō)明。

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

但只在這里授權(quán)還不夠,后面還要使用動(dòng)態(tài)授權(quán)。

3. 界面代碼

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".LangActivity">
    <TextView
        android:id="@+id/text_lang"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="請(qǐng)先拍照"
        android:minHeight="200dp" />
    <Button
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:text="GO"
        android:onClick="go"/>
</LinearLayout>

4. 邏輯代碼

public class LangActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lang);
        MLApplication.getInstance().setApiKey("CgB6e3x9gLm4...aaxYEnxvjg9");
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 1);
    }
    public void go(View view) {
        // 通過(guò)intent進(jìn)行識(shí)別設(shè)置。
        Intent intent = new Intent(this, MLAsrCaptureActivity.class)
                .putExtra(MLAsrCaptureConstants.LANGUAGE, "en-US")
                .putExtra(MLAsrCaptureConstants.FEATURE, MLAsrCaptureConstants.FEATURE_wordFLUX);
        startActivityForResult(intent, 100);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        String text = "";
        if (requestCode == 100) {
            switch (resultCode) {
                case MLAsrCaptureConstants.ASR_SUCCESS:
                    if (data != null) {
                        Bundle bundle = data.getExtras();
                        if (bundle != null && bundle.containsKey(MLAsrCaptureConstants.ASR_RESULT)) {
                            text = bundle.getString(MLAsrCaptureConstants.ASR_RESULT);
                            TextView textView=findViewById(R.id.text_lang);
                            textView.setText(text);
                        }
                    }
                    break;
                case MLAsrCaptureConstants.ASR_FAILURE:
                    if(data != null) {
                        String msg="";
                        Bundle bundle = data.getExtras();
                        if(bundle != null && bundle.containsKey(MLAsrCaptureConstants.ASR_ERROR_CODE)) {
                            int errorCode = bundle.getInt(MLAsrCaptureConstants.ASR_ERROR_CODE);
                        }
                        if(bundle != null && bundle.containsKey(MLAsrCaptureConstants.ASR_ERROR_MESSAGE)){
                            String errorMsg = bundle.getString(MLAsrCaptureConstants.ASR_ERROR_MESSAGE);
                            msg=errorMsg;
                        }
                        if(bundle != null && bundle.containsKey(MLAsrCaptureConstants.ASR_SUB_ERROR_CODE)) {
                            int subErrorCode = bundle.getInt(MLAsrCaptureConstants.ASR_SUB_ERROR_CODE);
                        }
                        Toast.makeText(LangActivity.this,msg,Toast.LENGTH_LONG).show();
                    }
                default:
                    break;
            }
        }
    }
}

注意這里的ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 1);是動(dòng)態(tài)添加錄音權(quán)限。MLApplication.getInstance().setApiKey("CgB6e3x9gLm4...aaxYEnxvjg9");是添加ApiKey驗(yàn)證。
運(yùn)行后點(diǎn)擊GO按鈕啟動(dòng)語(yǔ)音識(shí)別。

非華為手機(jī)都不能正常運(yùn)行這個(gè)內(nèi)容。

內(nèi)容匯總

使用HMS配置很麻煩,既要遵循官方文檔,又要隨時(shí)解決各種奇怪問(wèn)題,而且?guī)缀跛泄δ芏际潜仨氃谌A為手機(jī)上才能進(jìn)行測(cè)試。一般要注意下面幾點(diǎn):

  • 本地項(xiàng)目的包名要和線上應(yīng)用完全一致。
  • 要下載AGC配置文件,放到project模式app根目錄。
  • 最好先設(shè)置好AGC的幾個(gè)配置,再配置一遍具體服務(wù)。
  • 要修改項(xiàng)目級(jí)構(gòu)建文件,添加classpath和2個(gè)maven倉(cāng)庫(kù)。
  • 要修改模塊級(jí)構(gòu)建文件,添加plugin行,添加各種dependencies。
  • 可能需要給Mainifest配置中添加用戶權(quán)限,還可能要在每個(gè)Activity里重復(fù)動(dòng)態(tài)添加權(quán)限。
  • 可能需要在Activity里面添加API key信息。

分享到:
標(biāo)簽:開(kāi)發(fā) HMS
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定