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 を使用してマルチクラウドのキー管理の課題に対処する方法

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

推薦する

外部リンクがウェブサイトのランキングに与える影響は、量よりも質が重要です。

外部リンクと内部リンクは、ウェブサイトのランキングの 8 割を占めています。外部リンクとコンテンツの...

クラウドAI市場は2028年までに2,700億ドルに達すると予想

デジタル時代の到来により前例のない進歩がもたらされ、人工知能(AI)はさまざまな業界でイノベーション...

アンカーはダブルイレブンを失った

今年のダブルイレブンは例年よりも早く盛り上がりました。李佳奇や魏亜など、タオバオのトップキャスターの...

Lovevps-6.99 USD/月 KVM/3 データセンター ケント/オーランド/ロサンゼルス

現在 lovevps が使用しているデータ センターは次のとおりです: - Custodian DC...

成功と失敗は細部によって決まる。内部リンク構築において無視できない細部

検索エンジンがますますユーザーフレンドリーになるにつれて、サイトの内部構造に対する要件もますます高く...

下流市場洞察レポート

QuestMobileのデータによると、2018年4月時点で、下位層市場の月間アクティブユーザー数は...

虚偽のメディア報道に遭遇した中小規模のウェブサイトが権利を守る事例の共有

インターネットの普及、特に電子商取引の急速な台頭に伴い、インターネット上でのさまざまな不正サービス、...

クラウドコンピューティングを諦める時が来た

スティーブ・マルティネリノアが編集制作 | 51CTO テクノロジースタック (WeChat ID:...

Huawei Cloud WeLinkがクラウドノート機能を開始

Huaweiのイントラネットクラウドノートの数は現在58万件に達しているとのことです。デジタル時代に...

あなたの性格はSEOに適していますか?

今日は、Yiyun がパーソナリティと SEO の関係についてお話しします。 SEOマーケティングの...

VPSUnlimited|Xen+1G メモリ+50G ハードディスク+500G トラフィック+4 コア|初月 $3.99|更新 $13.99

VPSUnlimited は、この中秋節のプロモーションで大きな割引を提供し、大容量メモリを備えた ...

Kingsoft CloudとJD Cloudが合併を否定。キングソフト・ソフトウェアはJDとの協力を協議中と発表

1月10日、「有識者」はJD CloudとKingsoft Cloudが合併し、人事を担当するHR部...

2022年ペットフード市場レポート

近年、ペット市場は爆発的な成長を遂げ、ペットフードを主産業とし、医療、サービスなどの産業を補助産業と...

ウェブ解析における群衆の知恵への挑戦(パート 2) — ヒートマップ

【1号につき1文】誰もが時間に浸り、過ぎ去る年月に流されていく。人々は一生をかけて時間と戦っています...

標準相互接続 - 香港VPS/3ネットワーク直接接続/中国電信CN2/年間支払い179元から

香港の VPS、特に安価なものには、まだ一定の需要があることがわかりました。帯域幅は少し高価ですが、...