国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

用鴻蒙的分布式助力七夕

系統 分布式
如果升級了最新的B站服務卡片,那么當桌面上添加頭像卡片時,只要點擊頭像,就會看到下圖的效果。一個應用鴻蒙分布式能力的小功能。

[[418672]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

在情人節后,為之前的B站卡片項目增加一個隱藏功能。如果升級了最新的B站服務卡片,那么當桌面上添加頭像卡片時,只要點擊頭像,就會看到下圖的效果。一個應用鴻蒙分布式能力的小功能。

視頻預覽地址:https://harmonyos.51cto.com/show/7762

完整項目地址:https://gitee.com/liangzili/bilibili-cards

1.添加一個播放頁

比如PlayerSlice,這個頁面用來實現視頻的播放。

用鴻蒙的分布式助力七夕-鴻蒙HarmonyOS技術社區

2.為頭像卡片添加點擊事件

當點擊卡片上的頭像時實現頁面跳轉,代碼如下

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

  1. <div class="card_root_layout" else
  2.     <div class="div_left_container"
  3.         <stack class="stack-parent" onclick="sendRouterEvent"
  4.             <image src="{{src}}" class="image_src"></image> 
  5.             <image src="{{vip}}" class="image_vip"></image> 
  6.         </stack> 
  7.     </div> 
  8.     <text class="item_title">{{follower}}</text> 
  9. </div> 

actions中設置跳轉到剛才新建的播放頁面。

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

  1. "actions": { 
  2.   "sendRouterEvent": { 
  3.     "action""router"
  4.     "abilityName""com.liangzili.demos.Player"
  5.     "params"true 
  6.   } 

3.在播放頁判斷拉起方式

從intent中提取參數params,如果播放頁是服務卡片拉起的,得到true。如果是分布式拉起的得到false。

  1. params = intent.getStringParam("params");//從intent中獲取 跳轉事件定義的params字段的值 
  2. if(params.equals("true")){ 
  3.     Intent intent0 = new Intent(); 
  4.     Operation 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.要跳轉的ability名 
  8.         .withFlags(Intent.FLAG_ABILITYSLICE_MULTI_DEVICE) 
  9.         .build(); 
  10.     intent0.setOperation(op); 
  11.     intent0.setParam("params","false"); 
  12.     startAbility(intent0); 
  13.     videoSource = "resources/base/media/right.mp4"
  14. }else
  15.     videoSource = "resources/base/media/left.mp4"

4.申請分布式拉起頁面權限

如果params就調用分布式拉起頁面,得提前為應用獲取權限。

在app首次啟動時提醒用戶獲取分布式權限。

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

  1. requestPermissionsFromUser(new String[]{"ohos.permission.DISTRIBUTED_DATASYNC"},0); 

5.獲取遠端設備ID

要拉起遠端設備上的頁面,得先獲取設備的ID。

  1. public class DistributedUtils { 
  2.     public static String getDeviceId(){ 
  3.         //獲取在線設備列表,getDeviceList拿到的設備不包含本機。 
  4.         List<DeviceInfo> deviceList = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE); 
  5.         if(deviceList.isEmpty()){ 
  6.             return null
  7.         } 
  8.         int deviceNum = deviceList.size(); 
  9.         List<String> deviceIds = new ArrayList<>(deviceNum);    //提取設備Id 
  10.         List<String> deviceNames = new ArrayList<>(deviceNum);  //提取設備名 
  11.         deviceList.forEach((device)->{ 
  12.             deviceIds.add(device.getDeviceId()); 
  13.             deviceNames.add(device.getDeviceName()); 
  14.         }); 
  15.  
  16.         String devcieIdStr = deviceIds.get(0); 
  17.         return devcieIdStr; 
  18.     } 

6.獲取資源地址播放視頻

視頻播放參考的是軟通動力HarmonyOS學院的拜年視頻代碼,官方的demo和CadeLabs還沒跑通,時間有點來不及了,原諒我大段復制。

  1. //設置沉浸式狀態欄 
  2. getWindow().addFlags(WindowManager.LayoutConfig.MARK_TRANSLUCENT_STATUS); 
  3. initPlayer(); 
  4.  
  5. //需要重寫兩個回調:VideoSurfaceCallback 、VideoPlayerCallback 
  6. private void initPlayer() { 
  7.     sfProvider=(SurfaceProvider) findComponentById(ResourceTable.Id_surfaceProvider); 
  8.     //        image=(Image) findComponentById(ResourceTable.Id_img); 
  9.     sfProvider.getSurfaceOps().get().addCallback(new 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.     player=new Player(getContext()); 
  15.     //sfProvider添加監聽事件 
  16.     sfProvider.setClickedListener(new Component.ClickedListener() { 
  17.         @Override 
  18.         public void onClick(Component component) { 
  19.             if(player.isNowPlaying()){ 
  20.                 //如果正在播放,就暫停 
  21.                 player.pause(); 
  22.                 //播放按鈕可見 
  23.                 image.setVisibility(Component.VISIBLE); 
  24.             }else { 
  25.                 //如果暫停,點擊繼續播放 
  26.                 player.play(); 
  27.                 //播放按鈕隱藏 
  28.                 image.setVisibility(Component.HIDE); 
  29.             } 
  30.         } 
  31.     }); 
  32. private class VideoSurfaceCallback implements SurfaceOps.Callback { 
  33.     @Override 
  34.     public void surfaceCreated(SurfaceOps surfaceOps) { 
  35.         HiLog.info(logLabel,"surfaceCreated() called."); 
  36.         if (sfProvider.getSurfaceOps().isPresent()) { 
  37.             Surface surface = sfProvider.getSurfaceOps().get().getSurface(); 
  38.             playLocalFile(surface); 
  39.         } 
  40.     } 
  41.     @Override 
  42.     public void surfaceChanged(SurfaceOps surfaceOps, int i, int i1, int i2) { 
  43.         HiLog.info(logLabel,"surfaceChanged() called."); 
  44.     } 
  45.     @Override 
  46.     public void surfaceDestroyed(SurfaceOps surfaceOps) { 
  47.         HiLog.info(logLabel,"surfaceDestroyed() called."); 
  48.     } 
  49. private void playLocalFile(Surface surface) { 
  50.     try { 
  51.         RawFileDescriptor filDescriptor = getResourceManager().getRawFileEntry(videoSource).openRawFileDescriptor(); 
  52.         Source source = new Source(filDescriptor.getFileDescriptor(),filDescriptor.getStartPosition(),filDescriptor.getFileSize()); 
  53.         player.setSource(source); 
  54.         player.setVideoSurface(surface); 
  55.         player.setPlayerCallback(new VideoPlayerCallback()); 
  56.         player.prepare(); 
  57.         sfProvider.setTop(0); 
  58.         player.play(); 
  59.     } catch (Exception e) { 
  60.         HiLog.info(logLabel,"playUrl Exception:" + e.getMessage()); 
  61.     } 

參考文章:

【軟通動力】SurfaceProvider實現視頻播放Demo-熱乎乎的拜年視頻-鴻蒙HarmonyOS技術社區-鴻蒙官方合作伙伴-51CTO.COM

鴻蒙應用開發入門(六):頁面間跳轉-鴻蒙HarmonyOS技術社區-鴻蒙官方合作伙伴-51CTO.CO

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-08-23 10:49:02

鴻蒙HarmonyOS應用

2021-08-23 11:03:54

鴻蒙HarmonyOS應用

2012-08-24 10:49:51

備份恢復

2023-08-22 21:39:25

2018-08-19 14:30:42

女性分析網站

2015-08-21 17:10:03

云安全

2020-08-26 06:04:25

信息泄露密鑰加密信息安全

2019-06-19 15:40:06

分布式鎖RedisJava

2021-05-28 09:52:00

鴻蒙HarmonyOS應用

2021-05-17 09:32:18

分布式存儲問題數據

2025-08-05 08:30:08

2020-11-06 12:12:35

HarmonyOS

2021-08-15 19:00:14

算法floydDijkstra

2017-08-23 10:01:00

搜狗

2011-08-06 23:25:49

筆記本導購

2019-05-05 08:37:39

分布式PyTorchGPU

2021-07-22 10:20:21

鴻蒙HarmonyOS應用

2013-08-13 09:24:25

程序員七夕節

2021-07-23 08:57:32

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

91网上在线视频| 性欧美精品一区二区三区在线播放| 国产精品美女久久久久aⅴ| 日韩国产在线观看| 欧美日韩爆操| 女优一区二区三区| 成人资源在线播放| 亚洲mmav| 精品裸体bbb| 18video性欧美19sex高清| 一级二级三级在线观看| av在线dvd| 成人免费淫片| 色琪琪丁香婷婷综合久久| 欧洲熟妇精品视频| aa免费在线观看| 天堂社区在线视频| 国产视频九色蝌蚪| 国产又粗又大又爽的视频| 欧美连裤袜在线视频| 亚洲综合在线中文字幕| 91久久夜色精品国产网站| 国产精品久久久久av免费| 国产精品99久久久久久www| 日本亚洲欧洲色| 91中文字幕在线观看| 色黄网站在线观看| 日本黄色播放器| 黄色国产网站在线观看| 亚洲精品一区二区网址| 欧美一区国产二区| 午夜毛片在线| 男人本色网站| 精品亚洲综合| 在线中文免费视频| 日本视频在线播放| 深夜影院在线观看| 人人超碰在线| 国产导航在线| 天堂av在线资源| 最美情侣韩剧在线播放| 在线激情小视频| 毛片网站在线看| 亚洲制服国产| 国产亚洲一区二区手机在线观看| 日本欧美一区| 精品国产乱码久久久久久蜜坠欲下| 免费亚洲一区| 亚洲精品视频一区二区| 欧美大片一区二区| zzjj国产精品一区二区| 日本精品久久久久影院| 久久精品国产精品国产精品污 | 欧美激情综合| 国产一区二区美女诱惑| 成人精品视频一区二区三区 | 污影院在线观看| 国产素人在线观看| 国产日韩亚洲欧美在线| 91免费精品| 免费久久精品| 男女精品网站| 自拍偷拍欧美激情| 亚洲国产高清高潮精品美女| 青青久久aⅴ北条麻妃| 亚洲美免无码中文字幕在线| 国产理论电影在线| 亚洲在线黄色| 欧美一二三四在线| 欧美日韩在线观看一区二区三区| 91欧美在线视频| 日韩高清不卡一区二区三区| 成人avav影音| 色88888久久久久久影院按摩| 亚洲天堂视频在线观看| 国产91精品网站| 欧美v在线观看| 国产黄a三级三级三级av在线看 | 久久久国产一区二区三区四区小说| 欧美三级视频在线| 日韩免费观看av| 人妻熟女一二三区夜夜爱| 九色porny丨入口在线| 奇米亚洲午夜久久精品| 91精品91久久久中77777| 日韩av电影在线网| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 91探花在线观看| 国产日韩一区二区三区在线播放| 色综合婷婷久久| 亚洲一区二区三| 中文字幕在线网| 欧美精品啪啪| 色综合久久久久久久久| 国产精品久久久久91| 裸体av在线| 精品国产sm最大网站免费看| 欧美精品久久久久久久免费观看| 精品99在线视频| 中文字幕成在线观看| 国产在线播放一区二区三区| 日韩大陆欧美高清视频区| 一区二区在线高清视频| 麻豆国产在线| 国产成人日日夜夜| 国产亚洲一区二区精品| 日韩美女爱爱视频| 性高爱久久久久久久久| 国产欧美一区二区精品性| 日韩免费中文字幕| 男人的天堂在线| 日本欧美一区二区三区乱码| 亚洲人午夜精品免费| 中文久久久久久| 欧美激情另类| 日韩成人中文字幕在线观看| 欧美成人一区二区在线观看| 国产精品自在线拍| 欧美日韩中文字幕在线| 一区二区国产日产| 日韩精品视频中文字幕| 欧美色另类天堂2015| 丝袜美腿玉足3d专区一区| 日韩电影精品| 欧美午夜xxx| 日韩精品综合在线| 第一sis亚洲原创| 日韩久久午夜影院| 高清av影院| 久久电影一区| 午夜精品久久久久久久白皮肤| 神马久久久久| 粉嫩一区二区三区性色av| 成人激情电影一区二区| 国产亚洲精品精品国产亚洲综合| 色悠悠亚洲一区二区| 国产av人人夜夜澡人人爽麻豆| 亚洲乱码电影| 色爱av美腿丝袜综合粉嫩av| 欧美成人免费| 久久精品男人的天堂| 精品国产一区二区三区麻豆小说 | 久久综合久久美利坚合众国| 欧美女同网站| 久久夜色精品一区| 女同一区二区| 青青草国产免费一区二区下载| 亚洲人成电影网站色xx| 黄污在线观看| 国产无遮挡一区二区三区毛片日本| 亚洲国内在线| 午夜精品电影| 高清一区二区三区日本久| freexxx性亚洲精品| 黄色成人av在线| 成年人网站大全| 国产成a人亚洲精| 亚洲欧洲精品一区二区三区波多野1战4| 99成人超碰| 国产精品天天狠天天看| 白嫩白嫩国产精品| 伊人青青综合网站| 91在线中文| 制服丝袜日韩国产| av电影在线网| 欧美性xxxx在线播放| 91干在线观看| 国产亚洲精aa在线看| 亚洲免费视频一区二区| 神马影院一区二区| 一本色道精品久久一区二区三区| 精品久久一区二区三区蜜桃| 99精品电影| 国产一区视频在线| 欧美在线免费一级片| 成人淫片在线看| 亚洲综合色站| 久久青青草原| 黑人巨大精品欧美一区二区免费| 精品国产乱码久久久久久郑州公司| 九九热hot精品视频在线播放| 91精品国产综合久久久久久丝袜| www.日本不卡| 欧洲在线视频一区| 伊人成年综合电影网| 成人性色av| 99精品国产在热久久婷婷| 亚洲iv一区二区三区| 欧美激情视频一区二区三区在线播放| 国产精品激情av在线播放 | 亚洲校园欧美国产另类| 亚洲一区二区三区在线| 国产一级在线| 欧美成人伊人久久综合网| 丁香六月综合| 欧美国产日韩xxxxx| 成人3d精品动漫精品一二三| 久久99精品久久久久久秒播放器| 首页国产欧美久久| 人妻熟女一二三区夜夜爱|