Hongmengの​​分散コンピューティングを使用して七夕祭りを支援します

Hongmengの​​分散コンピューティングを使用して七夕祭りを支援します

[[418672]]

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

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

https://harmonyos..com

バレンタインデー以降、これまでのBステーションカード企画に隠し機能が追加されます。最新の B ステーション サービス カードにアップグレードした場合、デスクトップにアバター カードを追加するときに、アバターをクリックするだけで、下の図のような効果が表示されます。 Hongmeng の分散機能を適用する小さな機能。

動画プレビューアドレス: https://harmonyos..com/show/7762

完全なプロジェクトアドレス: https://gitee.com/liangzili/bilibili-cards

1. プレイページを追加する

たとえば、PlayerSlice の場合、このページはビデオを再生するために使用されます。


2. アバターカードにクリックイベントを追加する

カード上のアバターをクリックするとページがジャンプします。コードは次のとおりです

src/main/js/fans/pages/index/index.hml

  1. <div クラス = "card_root_layout"  そうでなければ>
  2. <div クラス = "div_left_container" >
  3. <stack class= "stack-parent" onclick= "sendRouterEvent" >
  4. <画像 src= "{{src}}"クラス= "image_src" ></画像>
  5. <画像 src= "{{vip}}"クラス= "image_vip" ></画像>
  6. </スタック>
  7. </div>
  8. <text class= "item_title" >{{フォロワー}}</text>
  9. </div>

新しく作成された再生ページにジャンプするアクションを設定します。

src/main/js/fans/pages/index/index.json

  1. 「アクション」 : {
  2. 「ルーターイベントを送信」 : {
  3. 「アクション」 「ルーター」
  4. "abilityName" : "com.liangzili.demos.Player"
  5. "パラメータ" : true  
  6. }
  7. }

3.再生ページでプルアップ方法を決定する

インテントからパラメータ params を抽出します。サービス カードによって再生ページが開かれた場合、結果は true になります。分散プルアップの場合は false になります。

  1. パラメータ = intent.getStringParam( "パラメータ" ); // インテントからジャンプイベントで定義された params フィールドの値を取得します
  2. (パラメータが「真」の場合){
  3. インテントintent0 = 新しいIntent();
  4. 操作 op = new Intent.OperationBuilder()
  5. .withDeviceId(DistributedUtils.getDeviceId()) //パラメータ1。デバイスをまたぐかどうか、空、デバイスをまたがない
  6. .withBundleName( "com.liangzili.demos" ) //パラメータ 2. config.json の bundleName
  7. .withAbilityName( "com.liangzili.demos.Player" ) //パラメータ3. ジャンプ先のアビリティ名
  8. .withFlags(Intent.FLAG_ABILITYSLICE_MULTI_DEVICE)
  9. 。建てる();
  10. オペレーションを設定します。
  11. intent0.setParam( "params" , "false" );
  12. 開始アビリティ(intent0);
  13. ビデオソース = "resources/base/media/right.mp4" ;
  14. }それ以外{
  15. ビデオソース = "resources/base/media/left.mp4" ;
  16. }

4. 分散プルアップページの権限を申請する

params が分散プルアップページを呼び出す場合は、事前にアプリケーションの権限を取得する必要があります。

アプリを初めて起動するときに、分散権限を取得するようにユーザーに通知します。

src/main/java/com/liangzili/demos/MainAbility.java

  1. requestPermissionsFromUser(新しい文字列[]{ "ohos.permission.DISTRIBUTED_DATASYNC" },0);

5. リモートデバイスIDを取得する

リモート デバイスでページを開くには、まずデバイス ID を取得する必要があります。

  1. パブリッククラスDistributedUtils {
  2. 公共 静的文字列 getDeviceId(){
  3. //オンラインデバイスのリストを取得します。 getDeviceList によって取得されたデバイスにはこのデバイスは含まれません。
  4. リスト<DeviceInfo> deviceList = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE);
  5. デバイスリストが空の場合
  6. 戻る ヌル;
  7. }
  8. intデバイス番号 = デバイスリスト。サイズ();
  9. リスト<文字列> deviceIds = 新しいArrayList<>(deviceNum); //デバイスIDを抽出
  10. リスト<文字列> deviceNames = 新しいArrayList<>(deviceNum); //デバイス名を抽出
  11. デバイスリスト.forEach((デバイス)->{
  12. デバイス ID を追加します(デバイス ID を取得します)。
  13. デバイス名を追加します(デバイス.getDeviceName());
  14. });
  15.  
  16. 文字列 devcieIdStr = deviceIds.get(0);
  17. devcieIdStrを返します
  18. }
  19. }

6. ビデオを再生するためのリソースアドレスを取得する

ビデオ再生は、iSoftStone HarmonyOS Academy の新年挨拶ビデオ コードを参照します。公式デモとCadeLabsはまだ実行されておらず、少し遅すぎるため、大きなセクションをコピーしていることをお許しください。

  1. //没入型ステータスバーを設定する
  2. getWindow().addFlags(WindowManager.LayoutConfig.MARK_TRANSLUCENT_STATUS);
  3. プレイヤーを初期化します。
  4.  
  5. // 2 つのコールバックを書き直す必要があります: VideoSurfaceCallback、VideoPlayerCallback
  6. プライベートvoid initPlayer() {
  7. sfProvider=(SurfaceProvider) リソーステーブル Id_surfaceProvider でコンポーネント ID を検索します。
  8. // image=(画像) findComponentById(ResourceTable.Id_img);
  9. sfProvider.getSurfaceOps().get().addCallback(新しい VideoSurfaceCallback());
  10. // sfProvider.pinToZTop(boolean) --true に設定すると、ビデオ コントロールが最上位レイヤーに表示されますが、false に設定すると、最上位レイヤーには表示されず、黒い画面が表示されます。  
  11. // 次のコード行を追加する必要があります: WindowManager.getInstance().getTopWindow().get().setTransparent( true );
  12. sfProvider.pinToZTop( true );
  13. //WindowManager.getInstance().getTopWindow().get().setTransparent( true );
  14. プレイヤー=新しいプレイヤー(getContext());
  15. //sfProvider リスナーイベントを追加
  16. sfProvider.setClickedListener(新しいComponent.ClickedListener() {
  17. @オーバーライド
  18. パブリックvoid onClick(コンポーネント コンポーネント) {
  19. プレイヤーが現在再生中の場合
  20. // 再生中の場合は一時停止します
  21. プレーヤーを一時停止します。
  22. // 再生ボタンが表示されます
  23. コンポーネントの可視性を VISIBLE に設定します。
  24. }それ以外{
  25. //一時停止している場合はクリックして再生を続行します
  26. プレイヤーを再生します。
  27. //再生ボタンを非表示にする
  28. イメージの可視性を Component.HIDE に設定します。
  29. }
  30. }
  31. });
  32. }
  33. プライベートクラス VideoSurfaceCallback は SurfaceOps.Callback を実装します {
  34. @オーバーライド
  35. パブリックvoid サーフェスが作成されました (サーフェスオペレーション サーフェスオペレーション) {
  36. HiLog.info(logLabel, "surfaceCreated() が呼び出されました。" );
  37. sfProvider.getSurfaceOps().isPresent() の場合 {
  38. サーフェス サーフェス = sfProvider.getSurfaceOps().get().getSurface();
  39. ローカルファイルを再生します(サーフェス)。
  40. }
  41. }
  42. @オーバーライド
  43. パブリックvoid 表面が変更されました (SurfaceOps 表面Ops、 int i、 int i1、 int i2) {
  44. HiLog.info(logLabel, "surfaceChanged() が呼び出されました。" );
  45. }
  46. @オーバーライド
  47. パブリックvoid 表面を破棄します(SurfaceOps 表面Ops) {
  48. HiLog.info(logLabel, "surfaceDestroyed() が呼び出されました。" );
  49. }
  50. }
  51. プライベートvoid playLocalFile(サーフェスサーフェス) {
  52. 試す {
  53. RawFileDescriptor filDescriptor = getResourceManager().getRawFileEntry(videoSource).openRawFileDescriptor();
  54. ソースソース = new Source(filDescriptor.getFileDescriptor(),filDescriptor.getStartPosition(),filDescriptor.getFileSize());
  55. player.setSource(ソース);
  56. プレーヤーのビデオサーフェスを設定します。
  57. player.setPlayerCallback(新しいVideoPlayerCallback());
  58. player.prepare ();
  59. sfProvider.setTop(0);
  60. プレイヤーを再生します。
  61. } キャッチ (例外 e) {
  62. HiLog.info(logLabel, "playUrl 例外:" + e.getMessage());
  63. }
  64. }

参考記事:

[Softcom] SurfaceProvider がビデオ再生デモを実装 - 温かい新年の挨拶ビデオ - Hongmeng HarmonyOS 技術コミュニティ - Hongmeng 公式パートナー - 51CTO.COM

Hongmeng アプリケーション開発入門 (VI): ページ間の移動 - Hongmeng HarmonyOS テクノロジー コミュニティ - Hongmeng 公式パートナー - 51CTO.CO

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

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

https://harmonyos..com

<<:  SAPと永泰生物科技が共同でデジタル運用管理プラットフォームを構築し、デジタルパワーでがんと闘う

>>:  エッジコンピューティングストレージはIoTの次のフロンティア

推薦する

IoTデバイスは爆発的に増加し、クラウドコンピューティングは「フォグコンピューティング」へと移行している

モノのインターネットは、インターネット経由で電源のオン/オフを切り替えられるトースターという最初の ...

Hostdime: トップ Tier IV 認定データセンター、コロンビア VPS、コロンビア専用サーバー

コロンビアの VPS、コロンビアのサーバー、コロンビアのデータセンターは、現在のホスティング市場では...

クラウドアーキテクチャにおけるローコードおよびノー​​コード開発のリスク

著者 |デビッド・リンシカム企画 |ヤン・ジェンコードがどんなに単純であっても、上司はそれを書きませ...

Kubecon 2022 概要: Kubernetes は産業化に向けて前進

クラウドネイティブエコシステムは現在、「産業革命」の真っ只中にあります。最近、Cloud Nativ...

Hadoop 分散ファイルシステム - RAID から始める

ビッグデータ技術が解決しなければならない主な問題は大規模データの計算処理であるため、最初に解決すべき...

Webmaster.com からの毎日のレポート: アリババが買い戻し計画を完了、12306 枚のチケット予約が困難

1. ゴールデンウィークの列車チケットが発売され、12306予約システムでログイン障害が頻発最近、中...

justvps: 月額 1.54 ドルから利用可能な英国の VPS、1G メモリ/1 コア/20g NVMe/300M 帯域幅/無制限トラフィック

justvps.pro は、今から 1 月 20 日まで、英国ロンドン データ センターの VPS ...

SEO最適化ウェブサイトURLディレクトリレベルの検索エンジンの自然な重み

ウェブサイトのページの重みレベルが検索エンジンに反映される方法は、基本的にホームページ→ディレクトリ...

ゲーム運営とは何かを徹底的に理解できる記事です。

ゲーム運営は、退屈ではありますが、非常に重要なポジションです。ゲームのドル箱とプレイヤーのベビーシッ...

ビッグデータの孤立を打破: 主流の SaaS ベンダーが共同でオープン スタンダードを構築

10月27日、2017 iResearch A10 ビッグデータサミットにおいて「Intellige...

ステーショングループソフトウェアの詳細な説明は長く続くでしょうか?

みなさんこんにちは。私はみんなに愛され、花を咲かせるヤン・フェンショウです。今日はサイトクラスターと...

BlazingSwitch-512M メモリ VPS/月額 1 ドル

Blazingswitch は、Authorize.net のビジネス認証に合格し、独自の ARIN...

無敵であり続けるために、サイトの詳細を最適化しましょう

今日では、ウェブサイトの最適化はますます困難になってきており、ウェブマスターはさまざまな最適化方法を...