Kotlinを用いたナビゲーショングローブIOTアプリケーションにおけるHuaweiアカウントキットの統合—第1部
導入
このシリーズでは、ナビゲーショングローブアプリケーションについて学びます.また、ナビゲーショングローブIOTアプリケーションのHuaweiアカウントキットの統合について学びます.
これは本当に面白いアプリケーションです.完全な記事を読むために忍耐を持っている.偉大なことは時間がかかるから.
この製品の働き方を理解しましょう.
手袋
ナビゲーショングローブアプリケーション
何がiotですか?
iotは物事のインターネットを表します.IOTは、デバイスとクラウドの間の通信を容易にする、接続されたデバイスとテクノロジーの集合ネットワークを示します.安価なコンピュータチップとブロードバンド通信の出現のおかげで、今、我々は、インターネットに接続されたデバイスの数十億を持っています.これは、歯ブラシ、真空、自動車、およびマシンのような日常のデバイスは、データを収集し、インテリジェントユーザーに対応するセンサーを使用することができますを意味します.
ナビゲーショングローブアプリケーションの機能.
クイック、シームレス&携帯電話の少ない-ナビゲーション支援.
自動指標(左-右)のサポート.
増加した交通安全-規則に従う、より少ない違反、増加した安全性.
ドッキングポイントの提案とインセンティブ顧客.
クイック、シームレス&携帯電話レス-ナビゲーション支援
ナビゲーション携帯電話用のこのアプリケーションでは必要ありません.手袋は両手で右手を着用してください.アプリケーションのナビゲーション手袋、距離と方向にデバイスにデバイスからデバイスに送信されます接続されます.
自動指標(左と右)のサポート.
我々は左から右のコマンド左の手袋や右手袋が点滅に応じてモバイルアプリケーションから方向を送信しているので.
アプリケーション情報.
このアプリケーションでは、我々はすべてのキットは、アプリケーションとどのようにこの製品の動作に必要なものを学びます.
アカウントキット
マップキット
サイトキット
方向API
ロケーションキット
解析キット
広告キット
リモート設定キット
クラッシュサービスキット
プッシュキット
どのようにこのアプリケーションの作品ですか?
増加した交通安全性
ドッキングポイントの提案とインセンティブ
距離が50メートル未満であるとき、LEDは速く点滅します、それで、終わりユーザーは転換点を理解します.
アプリケーションをサポートします.
アプリは2つのモードをサポート-ウォーキングと運転.
単一のクリック(左/右)で自動的にインジケータシステムを駆動します
ノーマルとサテライトビュー
グローブ用ハードウェア部品
ハードウェアキットが埋め込まれることができる一対の手袋(専門的な入力に基づいて縫われるか、ペーストされる)
右手手袋のためのキット- ATTINY 85マイクロコントローラ、ブルートゥースモジュール、LED、9 Vのバッテリー、電力制御回路.
左手手袋のためのキット-ATTINY 85マイクロコントローラ、ブルートゥース・モジュール、LED、9 Vのバッテリー、電力制御回路、NFC読者.
上記の同じハードウェアは、手袋として、イメージの下でチェックすることができます.
前提条件
アカウントアカウント
アンドロイドスタジオ3 .X
SDKプラットフォーム19以降
Gradle 4.6以降
HMSコア(APK)
Huawei電話emui
非Huawei電話アンドロイド4.4以降
AppGalleryにおけるサービス統合
maven { url 'https://developer.huawei.com/repo/' }
classpath 'com.huawei.agconnect:agcp:1.5.2.300'
apply plugin: 'com.huawei.agconnect'
implementation 'com.huawei.hms:hwid:6.1.0.300'
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
private fun signIn() {
val authParams =
AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setIdToken()
.createParams()
val service = AccountAuthManager.getService(this@LoginActivity, authParams)
startActivityForResult(service.signInIntent, 8888)
}
LoginActivity.KT
package com.huawei.navigationglove.ui
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.huawei.navigationglove.R
import com.huawei.hms.common.ApiException
import android.widget.Toast
import com.huawei.hms.support.account.result.AuthAccount
import com.huawei.hms.support.account.AccountAuthManager
import android.content.Intent
import android.util.Log
import androidx.annotation.Nullable
import com.huawei.hmf.tasks.Task
import com.huawei.hms.support.account.request.AccountAuthParams
import com.huawei.hms.support.account.request.AccountAuthParamsHelper
import kotlinx.android.synthetic.main.activity_login.*
class LoginActivity : AppCompatActivity() {
private val TAG: String = LoginActivity::class.java.name
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
huaweiLogin.setOnClickListener {
signIn()
}
}
private fun signIn() {
val authParams =
AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setIdToken()
.createParams()
val service = AccountAuthManager.getService(this@LoginActivity, authParams)
startActivityForResult(service.signInIntent, 8888)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, @Nullable data: Intent?) {
// Process the authorization result and obtain an ID token from AuthAccount.
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 8888) {
val authAccountTask: Task<AuthAccount> =
AccountAuthManager.parseAuthResultFromIntent(data)
if (authAccountTask.isSuccessful()) {
// The sign-in is successful, and the user's ID information and ID token are obtained.
val authAccount: AuthAccount = authAccountTask.getResult()
Log.i(TAG, "idToken:" + authAccount.idToken)
Toast.makeText(
this,
"Welcome " + authAccount.displayName,
Toast.LENGTH_LONG
).show()
startActivity(Intent(this, HomeScreenActivity::class.java))
} else {
// The sign-in failed. No processing is required. Logs are recorded for fault locating.
Log.e(
TAG,
"sign in failed : " + (authAccountTask.getException() as ApiException).statusCode
)
}
}
}
}
アクティブログイン.XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:background="@drawable/background"
tools:context=".ui.LoginActivity">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/txtUsername"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="271dp"
android:layout_height="63dp"
android:layout_marginStart="70dp"
android:layout_marginTop="240dp"
android:layout_marginEnd="70dp"
android:hint="Username"
android:textColorHint="#A7A7A7"
app:boxStrokeColor="#EAEAEE"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputUsername"
android:layout_width="match_parent"
android:layout_height="55dp"
android:textColor="#5B5B5B"
android:textSize="15sp"
android:textStyle="bold"
tools:ignore="TouchTargetSizeCheck" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/txtPassword"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="271dp"
android:layout_height="63dp"
android:layout_marginStart="70dp"
android:layout_marginTop="310dp"
android:layout_marginEnd="70dp"
android:hint="Password"
android:textColorHint="#A7A7A7"
app:endIconMode="password_toggle"
app:boxStrokeColor="#EAEAEE"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputPassword"
android:layout_width="match_parent"
android:layout_height="55dp"
android:textColor="#5B5B5B"
android:textSize="15sp"
android:textStyle="bold"
tools:ignore="TouchTargetSizeCheck" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/button4"
android:layout_width="271dp"
android:layout_height="55dp"
android:layout_marginTop="200dp"
android:text="Login"
android:textAllCaps="false"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView4"
android:layout_width="139dp"
android:layout_height="15dp"
android:layout_marginStart="70dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="283dp"
android:text="Don't have account?"
android:textColor="#A7A7A7"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button4" />
<TextView
android:id="@+id/textView6"
android:layout_width="135dp"
android:layout_height="16dp"
android:layout_marginStart="7dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="68dp"
android:text="Create a new account"
android:textColor="#3BA8BE"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView4"
app:layout_constraintTop_toBottomOf="@+id/button4" />
<TextView
android:id="@+id/textView7"
android:layout_width="286dp"
android:layout_height="66dp"
android:text="Navigation Glove"
android:textAlignment="center"
android:textColor="#4E4E4E"
android:textSize="24sp"
android:textStyle="normal|bold"
app:layout_constraintBottom_toTopOf="@+id/txtUsername"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.407" />
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="228dp"
android:layout_marginTop="6dp"
android:layout_marginEnd="70dp"
android:text="Forgot Password?"
android:textColor="#3BA8BE"
app:layout_constraintBottom_toTopOf="@+id/button4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtPassword" />
<Button
android:id="@+id/tb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="Forgot Password?"
android:textColor="#fff"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
android:visibility="gone"/>
<com.huawei.hms.support.hwid.ui.HuaweiIdAuthButton
android:id="@+id/huaweiLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4" />
</androidx.constraintlayout.widget.ConstraintLayout>
Creating an App in the Project結果
ヒントとトリック
結論
この記事では、Android StudioとKotlinを使用してモバイルアプリケーションでHuaweiアカウントキットの統合への主な流れを学んだ.また、製品の詳細を学び、どのようにこのアプリケーションを動作し、アカウントキットよりも、HMSコアHuaweiプラットフォームとユーザーエクスペリエンスを高めるためにサービスの広い範囲を提供します.我々は、プロジェクトキットを統合するための手順と手順を作成する手順を学んだ.
リファレンス
アカウントキット
アカウントキット
アカウントキット
Reference
この問題について(Kotlinを用いたナビゲーショングローブIOTアプリケーションにおけるHuaweiアカウントキットの統合—第1部), 我々は、より多くの情報をここで見つけました https://dev.to/hmscommunity/integration-of-huawei-account-kit-in-navigation-glove-iot-application-using-kotlin-part-1-1929テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol