2020年論文募集 - 携帯電話でHongmeng分散型発散端末のプロトタイプを迅速に構築

2020年論文募集 - 携帯電話でHongmeng分散型発散端末のプロトタイプを迅速に構築

[[360501]]

詳細については、以下をご覧ください。

51CTOとHuaweiが共同で構築したHongmengテクノロジーコミュニティ

https://harmonyos..com/#zz

孔子はかつてこう言いました。「原初の混沌がある限り、すべては可能である。」

世界で戦争が絶えない理由

激化する紛争

根本的な原因は

意見の相違は公平に解決されない

私たちが子供の頃にみんなで遊んだゲームがありました。

ハンマー、紙、はさみ

それは実際には相違を解決する方法です。

最も独創的で効果的な方法

でも、なぜ大人になると

この方法を使用しないのはなぜですか?

彼には2つの欠点がある

1つはアクションのスピードです。

もう一つは、一時的に手の形を変えることです

多様な端末の出現

この問題を一挙に解決しました

[[360502]]

さて、ここで質問です

時代を超えた素晴らしい製品

なぜ宣伝されなかったのでしょうか?

2 つの欠点があるからです。

一つは持ち運びが不便だ

もう一つは...高価(取り消し線付き)...オープンソースではない

オープンソースのHongmeng分散端末の登場

一挙に問題を解決した

[[360503]]

では、このような Hongmeng 分散型分岐端末の **プロトタイプ** を構築するにはどのくらいの時間がかかりますか?

10分くらいですか?

いいえ、

おそらく...

週末。

具体的な手順は 3 つあります。

最初のステップは、自宅で赤ちゃんをなだめることです。

ステップ2: コンピュータを開いてバグ(取り消し線付き)コードを書きます

ステップ 3: デバッグします。問題がある場合は、手順 2 を繰り返します。

初めは何事も難しいものですが、最初の一歩が一番難しいものです。

最初のステップを実行したら、次の 2 つのステップは簡単です。 Hongmeng 分散型分岐端末プロトタイプの設計原理を詳しく分析してみましょう。

# Hongmeng分散型分岐端末プロトタイプの設計

## まず、需要分析

1)。自分の決定を**入力**することができます

2) **中立的な第三者による決定**

3)。最終決定結果を見ることができます

## 次に、モジュール分割です。

ニーズに基づき、Hongmeng の分散設計コンセプトを使用して、端末を 2 つのコア モジュールに分割します。

1)。 FAと呼ばれるダイバージェンス端末のインタラクティブモジュールは、決定を入力し、結果を表示するために使用されます。

2)。 PAと呼ばれる不一致端末の計算モジュールは中立的な第三者として機能し、最終決定を下す。


## 再度、処理します。

A と B の間に意見の相違があり、それを解決する必要があると仮定します。意見の相違を解決するための一般的なプロセスは次のとおりです。

1)。 Aは分岐端末の対話型モジュール(FA-A)を起動します。

2)。 Bは分岐端末の対話型モジュール(FA-B)を起動する

3)。 AとBは同じ分岐端末計算モジュールに接続され、計算モジュールA(PA-A)であると仮定します。

4)。 AとBは、それぞれの分岐端末のインタラクションモジュール(INPUT-A、INPUT-B)に決定を入力します。

5)。ダイバージェンス端末の計算モジュールは、AとBの入力に基づいて結果を自動的に計算します。結果

6)。 A と B は、それぞれの端末のインタラクティブ モジュールで結果 RESULT を表示します。 B が結果に満足しない場合は、満足するまで別の決定を下すことができます。


## 再度、詳細な設計。

### 1. ブランチターミナルインタラクションモジュール(FA)

インタラクティブ モジュールは、ユーザーに入力インターフェイスと表示インターフェイスを提供する必要があるため、Hongmeng の FA、つまり Feature Ability が使用されます。

FA はページ アビリティとも呼ばれ、ページにはサブページであるアビリティ スライスが複数存在することがあります。


意思決定プロセスのさまざまな段階に応じて、Ability Slice を使用して次の 3 つのサブページを設計します。

* 1)。分岐端末コンピューティングモジュール(PA)への接続に使用される初期準備ページ、HomeSlice

ここでは、Hongmeng分散ソフトバスを使用する必要があります。

a)。自動デバイス検出機能

同じネットワーク上にある Hongmeng デバイスは、条件が満たされると、自動的に互いを検出できます。ネットワーク インターフェイス (udp/tcp など) を呼び出したり、さまざまなネットワーク条件 (wifi/bluetooth/nfc など) に合わせて異なる実装を行う必要はありません。

b)デバイス直接接続機能

connectAbility インターフェースを使用すると、デバイスの実際のネットワーク状態を知らなくても、接続先のコンピューティング モジュールに直接接続できます。

* 2)。待機ページ、WaitingSlice。最初に意見の相違解決に参加する人は、このページで他の人が参加するのを待つ必要があります。

全員が参加したことが確認されると、自動的に次のページ「分岐意思決定ページ」に進みます。


* 3)。決定ページ、GameSlice。紛争解決に携わる人々が決定を入力し、最終的な裁定結果を表示します。


このモジュールの技術的なポイント:

1)。サブページ間の切り替え:現在の方法を使用する

2)。決定結果の更新: タイマーを使用して結果をポーリングし、更新することができます。

知らせ

タイマーで UI を更新する場合、関連するコードを UI スレッドで実行する必要があります。 EventRunner を使用できます。コードを参照してください:

  1. パブリックvoid runInMainThread(実行可能なタスク){
  2.  
  3. EventRunner ランナー = EventRunner.getMainEventRunner();
  4.  
  5. EventHandler ハンドラー = 新しい EventHandler(ランナー);
  6.  
  7. ハンドラ.postTask(タスク);
  8.  
  9. }
  10.  
  11. プライベートvoid startGameLoop(){
  12.  
  13. ゲームタイマーnullの場合
  14.  
  15. ゲームタイマー = 新しいインターバルタイマー(1000, 1000) {
  16.  
  17. @オーバーライド
  18.  
  19. パブリックvoid onInterval(long l) {
  20.  
  21. runInMainThread(新しいRunnable() {
  22.  
  23. @オーバーライド
  24.  
  25. パブリックボイド実行(){
  26.  
  27. onLoop(l);
  28.  
  29. }
  30.  
  31. });
  32.  
  33. }
  34.  
  35. @オーバーライド
  36.  
  37. パブリックvoid onFinish() {
  38.  
  39. ゲームタイマーをスケジュールします。
  40.  
  41. }
  42.  
  43. };
  44.  
  45. ゲームタイマーをスケジュールします。
  46.  
  47. }
  48.  
  49. }
  50.  
  51. プライベートvoid stopGameLoop(){
  52.  
  53. ゲームタイマーがnull場合
  54.  
  55. ゲームタイマーをキャンセルします。
  56.  
  57. ゲームタイマー = null ;
  58.  
  59. }
  60.  
  61. }

参照ドキュメント

1)。ページ能力開発ガイド

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-concept-0000000000033573

2)。 JAVA UI フレームワーク開発ガイド

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-overview-0000000000500404

### 2. 分岐端末コアコンピューティングモジュール (PA)

コンピューティング モジュールの中心的なタスクは、表示を必要とせずにデータを処理することです。そのため、Hongmeng の PA (Particle Ability) が使用されます。

計算モジュールが実装する必要がある機能は次のとおりです。

a)。インタラクティブモジュールから意思決定の入力を収集する

b)。それぞれの決定に基づいて最終決定を下す

意思決定のプロセスは、基本的に a > b かどうかを判断するプロセスなので、詳細には触れません。

技術的なポイント

1)。 PAに接続する場合はconnectAbilityを使用する

2)。マルチスレッドデータ同期に問題が発生する可能性がある

3)。デバイス間の操作を実行するには、コード内で必要な権限を手動で申請する必要があります。

プロジェクト モジュールの config.json 内:

  1. 「必要な権限」 : [
  2.  
  3. {  
  4. 「名前」 : 「ohos.permission.DISTRIBUTED_DATASYNC」    
  5. },
  6.  
  7. {  
  8. 「名前」 : 「ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE」    
  9. },
  10.  
  11. {  
  12. 「名前」 : 「ohos.permission.GET_DISTRIBUTED_DEVICE_INFO」    
  13. },
  14.  
  15. {  
  16. 「名前」 : 「ohos.permission.GET_BUNDLE_INFO」    
  17. },
  18.  
  19. {  
  20. 「名前」 : 「ohos.permission.servicebus.ACCESS_SERVICE」    
  21. },
  22.  
  23. {  
  24. 「名前」 : 「ohos.permission.servicebus.DISTRIBUTED_DEVICE_STATE_CHANGE」    
  25. },
  26.  
  27. {  
  28. 「名前」 : 「ohos.permission.servicebus.GET_BUNDLE_INFO」    
  29. }
  30.  
  31. ]、

MainAbility の起動時に権限を申請します:

  1. パブリッククラスMainAbilityはAbilityを拡張します{
  2.  
  3. プライベート静的最終文字列 TAG = MainAbility.class.getSimpleName();
  4.  
  5. @オーバーライド
  6.  
  7. パブリックvoid onStart(インテント インテント) {
  8.  
  9. super.onStart(インテント);
  10.  
  11. super.setMainRoute(HomeSlice.class.getName());
  12.  
  13. GameClient.getInstance().init();
  14.  
  15. ユーザーからの権限をリクエスト(
  16.  
  17. 新しい文字列[]{
  18.  
  19. 「ohos.permission.DISTRIBUTED_DATASYNC」
  20.  
  21. 「ohos.permission.GET_DISTRIBUTED_DEVICE_INFO」
  22.  
  23. 「ohos.permission.servicebus.ACCESS_SERVICE」  
  24.  
  25. }, 0);
  26.  
  27. }
  28.  
  29. }

参照ドキュメント

1)。サービス能力開発ガイド

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-concept-0000000000044457

2)。分散タスクスケジューリング

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-distributed-overview-0000001050419345

### 3. インタラクションモジュールとコンピューティングモジュール間のデータ通信

2 つのモジュールが相互作用する必要があるため、必然的にデータ通信が必要になります。

データ通信のプロセスでは、関連する通信インターフェイスを呼び出すことに加えて、データをパッケージ化およびアンパックすることも非常に重要なポイントです。

通信プロセス全体は、Hongmeng 分散ソフト バスを通じて完了します。

ソフト バスによって提供されるインターフェイスを使用して、通信プロセスを実装し、データ構造、およびパッケージ化とアンパックの方法を定義することができます。

ただし、これは 10 分以内に完了しません。

幸いなことに、Hongmeng は、この頭の痛い作業を完了するのに役立つ非常に便利なツール、IDL (Hongmeng Interface Definition Language) を提供しています。

> IDL公式ドキュメント

> https://developer.harmonyos.com/cn/docs/documentation/doc-references/idl-overview-0000001050762835

IDL ツールを使用すると、わずか 3 つのステップでデータ通信機能を実現できます。

1)。 IDLファイルでメソッドのインターフェース、メソッド、入力および出力パラメータを定義します。

2)。 DevEco Studioを使用してIDLファイルをコードに変換する

3)。特定のビジネスロジックを実装する

インターフェースを定義した後、ローカル メソッドを呼び出すのと同じようにリモート メソッドを呼び出すことができます。

IDLコードの例:

  1. // IGameServiceInterface.idl
  2.  
  3. //宣言する シーケンス可能またはインターフェースステートメントを持つデフォルト以外
  4.  
  5. // シリアル化可能な構造体を宣言します。具体的な定義はJavaで記述されています。詳細についてはIDLドキュメントを参照してください。
  6.  
  7. シーケンス可能な com.blackshadowgame.rps.GameResultData;
  8.  
  9. インターフェース com.blackshadowgame.rps.IGameServiceInterface {
  10.  
  11. int echo([ in ] int a);
  12.  
  13. // ゲームに参加する
  14.  
  15. int joinGame([ in ] String プレイヤーID);
  16.  
  17. // AIとの決闘
  18.  
  19. int playWithAI([ in ] int pid);
  20.  
  21. // 現在のゲームの対戦相手リストを取得します
  22.  
  23. int [] getPlayers([ in ] int pid);
  24.  
  25. // パンチ
  26.  
  27. int sendInput([ in ] int pid、[ in ] int入力コード);
  28.  
  29. // クエリ結果
  30.  
  31. GameResultData クエリGameResult([ in ] int pid);
  32.  
  33. // ゲームを終了する
  34.  
  35. int leaveGame([ in ] int pid);
  36.  
  37. int nextGame([ in ] int pid);
  38.  
  39. }

### 4. 組み立てとテスト

すべてのモジュールの準備ができたので、FA/PA/IDLを組み立てて続行します。

接触...

調整する...

テスト...

試す......

[[360511]]

運が良ければ、10 分でデバッグを完了できるかもしれません。運が悪ければ、数え切れないほどのテストと修正を経て、最終的には明らかなバグのないバージョンをデバッグできるようになるでしょう。


こうして、Hongmeng 分散分岐端末のプロトタイプが完成しました!

### 6. インターフェースの美化について

インターフェースを美しくする必要があるとおっしゃいましたね?

## プロ版

Hongmeng 分散型分岐端末は、Pro バージョンにアップグレードして、さらに多くの「プロフェッショナル」機能を追加することもできます。これらはすべて、Hongmeng の分散機能を使用して簡単に実現できます。次に例を示します。

1)。 AIディスカッション:退屈な人たちが議論する場

2)。視聴:相違点の意思決定プロセスを一般の人々が視聴できるようにする

3)。マルチプレイヤー: 2人以上が対戦するゲーム

4)。招待/強制競争: 他の人を競争に参加するよう招待する

5)。あらゆるデバイスでディスカッション: 携帯電話に加えて、時計などの他のデバイスもディスカッションの入力として使用できます。

6) 大画面での共同競争: プレイヤーは自分のデバイスで入力し、結果は大画面に表示されます。

## オープンソースコード

プロジェクトのコードは参考のために gitee にアップロードされています。

> https://gitee.com/devonzhang/じゃんけん


## 参考文献

このプロジェクトを完了するために必要なスキル ポイントは、Hongmeng OS 開発者 Web サイトで学習資料を見つけることで確認できます。

1)。 Hongmeng OS アプリケーション開発ガイド

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/document-outline-0000001064589184

2)。能力開発ガイド

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-ability-overview-0000000000029852

3)。ページ能力開発ガイド

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-concept-0000000000033573

4)。サービス能力開発ガイド

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-concept-0000000000044457

5)。分散タスクスケジューリング

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-distributed-overview-0000001050419345

6)。 JAVA UI フレームワーク開発ガイド

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-overview-0000000000500404

7)。 Hongmeng OS IDLインターフェース使用仕様

https://developer.harmonyos.com/cn/docs/documentation/doc-references/idl-overview-0000001050762835

## やっと

このプロジェクトのコードは学習目的のみに使用されます。本番環境で直接使用しないでください。万が一バグが発生した場合、当社は一切の責任を負いません。

# 最後

ここまで読んでくださった皆さん、私はフルスタックゲーム開発者のアビンです。ようこそ

1. 私の洪蒙学習コラム「Abin と一緒に洪蒙を学ぶ」を購読してください https://harmonyos..com/column/25

2. 私の個人公開アカウントをフォローしてください: Honest IT Man Abin

3. 私の技術ブログをご覧ください: https://xmanyou.com/

©著作権は著者とHarmonyOSテクノロジーコミュニティが共同で所有します。転載する場合は出典を明記してください。そうでない場合は法的責任を問われます。

詳細については、以下をご覧ください。

51CTOとHuaweiが共同で構築したHongmengテクノロジーコミュニティ

https://harmonyos..com/#zz

<<:  KMaaS を使用してマルチクラウドのキー管理の課題に対処する方法

>>:  クラウドコンピューティング業界に関する詳細なレポート: 企業のデジタル変革が加速し、クラウドコンピューティングには大きな可能性があります

推薦する

あまり知られていないが、非常に実用的な Docker 使用のヒント 10 選

日々の仕事では、docker に触れる機会が多くあります。 docker run や docker ...

高速ウェブサイト構築システムとは何ですか?なぜますます多くの企業がウェブサイトを迅速に構築することを選択するのでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますネットワー...

新エネルギー自動車産業における上流資源をめぐる争い

2016年に世界176カ国がパリで気候変動に関するパリ協定に署名した時、自動車の電動化への移行は世界...

月額 16 ドルから、Windows VPS、1Gbps 帯域幅、無制限トラフィック、香港/日本/ベトナム/シンガポール/米国の 30 のデータセンター

Greencloudvps は、デフォルトの帯域幅が 1Gbps、トラフィックが無制限のライセンス付...

中国のゲームで外国産ネギを収穫する正しい方法

2019年8月1日、世界的なデジタルエンターテインメントイベントChinaJoyの前日。テンセントア...

英語ウェブサイト初心者のためのSEOのヒント

グループ内では、英語のウェブサイトを最適化するにはどうしたらよいか、あるいはどのような英語のウェブサ...

友好的なリンクを交換する際に注意すべき点

フレンドリー リンクの交換は、SEO 最適化プロセスの非常に一般的かつ重要な部分であるため、フレンド...

ウェブサイトがブロックされる原因となった業界間の悪質な競争について簡単に説明します

長い間、このような記事を書いていませんでした。最近は忙しかったんです。まず第一に、SEO トラフィッ...

酸辣湯麺おばさんの話からウェブサイト運営経験を語る

最近、寧波SEOの暁旭は、次のような非常に人気のある面白いスタイルを目にしました。「ある日、私はノー...

Apple、iMessageを解放するツールをリリース

Appleは最近、ユーザーがiOSと他のスマートフォンをより簡単に切り替えられるようにする新しいツー...

5G時代になりましたが、モバイルエッジコンピューティング(MEC)が何なのかまだご存じないですか?

[[391854]] 「エッジ コンピューティング」の基本的な考え方は理解できたと思いますが、今、あ...

ウェブサイトの微調整の必要性:ユーザーにより良い体験を提供する

ウェブサイトの構築は一度で完了できないことはよく知られています。初期段階が完璧に行われていても、後の...

リンクとドメインに関する誤解を分析する

最近、いくつかの SEO フォーラムを閲覧していたのですが、投稿を読んでいると、一部の SEO 担当...

私たちのブログがインターネット上でいつも忘れられてしまう理由

ウェブマスターなら誰でも少なくとも 1 つのブログを運営していると思います。ブログが金儲けのツールに...

Google ウェブマスター プラットフォームがウェブサイト移行ガイドをリリース

Google ウェブマスター ツールは、ウェブサイト移行ガイドを更新しました。ウェブサイト移行とは何...