在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開發TV端默認界面和視頻播放界面以及手機遙控端默認界面

電子發燒友開源社區 ? 來源:HarmonyOS官方合作社區 ? 作者:HarmonyOS官方合作社 ? 2022-05-26 11:06 ? 次閱讀

概述

目前家庭電視機主要通過其自帶的遙控器進行操控,實現的功能較為單一。例如,當我們要在TV端搜索節目時,電視機在遙控器的操控下往往只能完成一些字母或數字的輸入,而無法輸入其他復雜的內容。分布式遙控器將手機的輸入能力和電視遙控器的遙控能力結合為一體,從而快速便捷操控電視。

分布式遙控器的實現基于OpenHarmony的分布式能力和RPC通信能力,UI使用eTS進行開發。如下圖所示,分別用兩塊開發板模擬TV端和手機端。

分布式組網后可以通過TV端界面的Controller按鈕手動拉起手機端的遙控界面,在手機端輸入時會將輸入的內容同步顯示在TV端搜索框,點擊搜索按鈕會根據輸入的內容搜索相關節目。

還可以通過點擊方向鍵(上下左右)將焦點移動到我們想要的節目上,再點擊播放按鈕進行播放,按返回按鈕返回TV端主界面。

同時還可以通過手機遙控端關機按鈕同時關閉TV端和手機端界面。

實現TV端界面

在本章節中,您將學會開發TV端默認界面和TV端視頻播放界面,示意圖參考第一章圖1和圖3所示。

建立數據模型,將圖片ID、圖片源、圖片名稱和視頻源綁定成一個數據模型。詳情代碼可以查看MainAbility/model/PicData.ets和MainAbility/model/PicDataModel.ets兩個文件。

實現TV端默認頁面布局和樣式,在MainAbility/pages/TVIndex.ets 主界面文件中添加入口組件。頁面布局代碼如下:

// 入口組件

@Entry

@Component

struct Index {

private letters: string[] = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

private source: string

@State text: string = ''

@State choose: number = -1

build() {

Flex({ direction: FlexDirection.Column }) {

TextInput({text: this.text, placeholder: 'Search' })

.onChange((value: string) => {

this.text = value

})

Row({space: 30}) {

Text('Clear')

.fontSize(16)

.backgroundColor('#ABB0BA')

.textAlign(TextAlign.Center)

.onClick(() => {

this.text = ''

})

.clip(true)

.borderRadius(10)

Text('Backspace')

.fontSize(16)

.backgroundColor('#ABB0BA')

.textAlign(TextAlign.Center)

.onClick(() => {

this.text = this.text.substring(0, this.text.length - 1)

})

.clip(true)

.borderRadius(10)

Text('Controller')

.fontSize(16)

.backgroundColor('#ABB0BA')

.textAlign(TextAlign.Center)

.onClick(() => {

......

})

.clip(true)

.borderRadius(10)

}

Grid() {

ForEach(this.letters, (item) => {

GridItem() {

Text(item)

.fontSize(20)

.backgroundColor('#FFFFFF')

.textAlign(TextAlign.Center)

.onClick(() => {

this.text += item

})

.clip(true)

.borderRadius(5)

}

}, item => item)

}

.rowsTemplate('1fr 1fr 1fr 1fr')

.columnsTemplate('1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr')

.columnsGap(8)

.rowsGap(8)

.width('75%')

.height('25%')

.margin(5)

.backgroundColor('#D2D3D8')

.clip(true)

.borderRadius(10)

Grid() {

ForEach(this.picItems, (item: PicData) => {

GridItem() {

PicGridItem({ picItem: item })

}

}, (item: PicData) => item.id.toString())

}

.rowsTemplate('1fr 1fr 1fr')

.columnsTemplate('1fr 1fr')

.columnsGap(5)

.rowsGap(8)

.width('90%')

.height('58%')

.backgroundColor('#FFFFFF')

.margin(5)

}

.width('98%')

.backgroundColor('#FFFFFF')

}

}

(左右移動查看全部內容)

其中PicGridItem將PicItem的圖片源和圖片名稱綁定,實現代碼如下:

// 九宮格拼圖組件

@Component

struct PicGridItem {

private picItem: PicData

build() {

Column() {

Image(this.picItem.image)

.objectFit(ImageFit.Contain)

.height('85%')

.width('100%')

.onClick(() => {

......

})

})

Text(this.picItem.name)

.fontSize(20)

.fontColor('#000000')

}

.height('100%')

.width('90%')

}

}

(左右移動查看全部內容)

實現TV端視頻播放界面,在MainAbility/pages/VideoPlay.ets 文件中添加組件。頁面布局代碼如下:


import router from '@system.router'

@Entry

@Component

struct Play {

// 取到Index頁面跳轉來時攜帶的source對應的數據。

private source: string = router.getParams().source

build() {

Column() {

Video({

src: this.source,

})

.width('100%')

.height('100%')

.autoPlay(true)

.controls(true)

}

}

}

(左右移動查看全部內容)

在MainAbility/pages/TVIndex.ets中,給PicGridItem的圖片添加點擊事件,點擊圖片即可播放PicItem的視頻源。實現代碼如下:

Image(this.picItem.image)

......

.onClick(() => {

router.push({

uri: 'pages/VideoPlay',

params: { source: this.picItem.video }

})

})

(左右移動查看全部內容)

實現手機遙控端界面

在本章節中,您將學會開發手機遙控端默認界面,示意圖參考第一章圖2所示。

PhoneAbility/pages/PhoneIndex.ets 主界面文件中添加入口組件。頁面布局代碼如下:


@Entry

@Component

struct Index {

build() {

Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center }) {

Row() {

Image($rawfile('TV.png'))

.width(25)

.height(25)

Text('華為智慧屏').fontSize(20).margin(10)

}

// 文字搜索框

TextInput({ placeholder: 'Search' })

.margin(20)

.onChange((value: string) => {

if (connectModel.mRemote){

......

}

})

Grid() {

GridItem() {

// 向上箭頭

Button({ type: ButtonType.Circle, stateEffect: true }) {

Image($rawfile('up.png')).width(80).height(80)

}

.onClick(() => {

......

})

.width(80)

.height(80)

.backgroundColor('#FFFFFF')

}

.columnStart(1)

.columnEnd(5)

GridItem() {

// 向左箭頭

Button({ type: ButtonType.Circle, stateEffect: true }) {

Image($rawfile('left.png')).width(80).height(80)

}

.onClick(() => {

......

})

.width(80)

.height(80)

.backgroundColor('#FFFFFF')

}

GridItem() {

// 播放鍵

Button({ type: ButtonType.Circle, stateEffect: true }) {

Image($rawfile('play.png')).width(60).height(60)

}

.onClick(() => {

......

})

.width(80)

.height(80)

.backgroundColor('#FFFFFF')

}

GridItem() {

// 向右箭頭

Button({ type: ButtonType.Circle, stateEffect: true }) {

Image($rawfile('right.png')).width(70).height(70)

}

.onClick(() => {

......

})

.width(80)

.height(80)

.backgroundColor('#FFFFFF')

}

GridItem() {

// 向下箭頭

Button({ type: ButtonType.Circle, stateEffect: true }) {

Image($rawfile('down.png')).width(70).height(70)

}

.onClick(() => {

......

})

.width(80)

.height(80)

.backgroundColor('#FFFFFF')

}

.columnStart(1)

.columnEnd(5)

}

.rowsTemplate('1fr 1fr 1fr')

.columnsTemplate('1fr 1fr 1fr')

.backgroundColor('#FFFFFF')

.margin(10)

.clip(new Circle({ width: 325, height: 325 }))

.width(350)

.height(350)

Row({ space:100 }) {

// 返回鍵

Button({ type: ButtonType.Circle, stateEffect: true }) {

Image($rawfile('return.png')).width(40).height(40)

}

.onClick(() => {

......

})

.width(100)

.height(100)

.backgroundColor('#FFFFFF')

// 關機鍵

Button({ type: ButtonType.Circle, stateEffect: true }) {

Image($rawfile('off.png')).width(40).height(40)

}

.onClick(() => {

......

})

.width(100)

.height(100)

.backgroundColor('#FFFFFF')

// 搜索鍵

Button({ type: ButtonType.Circle, stateEffect: true }) {

Image($rawfile('search.png')).width(40).height(40)

}

.onClick(() => {

......

})

.width(100)

.height(100)

.backgroundColor('#FFFFFF')

}

.padding({ left:100 })

}

.backgroundColor('#E3E3E3')

}

}

(左右移動查看全部內容)

原文標題:OpenHarmony 實例:DAYU200 分布式遙控器

文章出處:【微信公眾號:HarmonyOS官方合作社區】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 遙控器
    +關注

    關注

    18

    文章

    841

    瀏覽量

    66645
  • 電視機
    +關注

    關注

    7

    文章

    398

    瀏覽量

    44232
  • OpenHarmony
    +關注

    關注

    25

    文章

    3753

    瀏覽量

    16668

原文標題:OpenHarmony 實例:DAYU200 分布式遙控器

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Ubuntu界面開發

    原網址傳送門手動分割線手動分割線手動分割線手動分割線手動分割線手動分割線正片開始在ROS librviz 人機交互軟件開發系列教程中我們實現了Ubuntu界面開發。但是很多小伙伴問
    發表于 08-18 08:09

    HarmonyOS教程—基于分布式能力,將手機作為智慧屏的虛擬控制器,控制文字輸入和遙控播放

    、實現類以及代理。service:RemoteService為TVservice,供手機遠程調用。slice:MainAbilitySl
    發表于 09-08 10:39

    DistributedVideoPlayer分布式視頻播放器的設計資料

    和電視之間傳輸視頻.應用分為手機(entry)和TV(entrytv),以及一個依賴模塊(c
    發表于 03-22 11:55

    DAYU200 | 分布式遙控

    主頁默認頁面圖2 手機遙控頁面圖3 TV視頻播放
    發表于 05-25 15:47

    VxWorks下圖形用戶界面開發

    VxWorks下圖形用戶界面開發
    發表于 03-25 10:45 ?19次下載

    基于LABVIEW的數字電源控制界面開發

    基于LABVIEW的數字電源控制界面開發詳解
    發表于 11-10 16:50 ?124次下載
    基于LABVIEW的數字電源控制<b class='flag-5'>界面</b><b class='flag-5'>開發</b>

    Linux字符界面轉圖形界面

    視頻主要詳細介紹了Linux字符界面轉圖形界面的操作教程,具體的跟隨小編一起來了解一下。
    的頭像 發表于 03-02 14:14 ?7436次閱讀

    pc是什么意思_PC與移動區別

    PC是和移動終端相對應的名詞,就是指網絡世界里可以連接到電腦主機的那個端口,是基于電腦的界面體系,它有別于移動手機界面體系。
    發表于 05-08 10:28 ?6.5w次閱讀

    YouTub正在為某些平臺推出經過改進的界面

    在過去幾周左右的時間里,Android TV和Fire TV上都提供了YouTube應用的服務器更改。目前,視頻播放器用戶
    的頭像 發表于 09-30 10:25 ?2054次閱讀

    亞馬遜新的Fire TV用戶界面即將揭曉

    據外媒消息,亞馬遜將于下個月推出新的Fire TV用戶界面,以支持Fire TV Stick 4K和Fire TV Cube。根據一份新報告,亞馬遜的新Fire
    的頭像 發表于 02-19 15:30 ?1896次閱讀

    HarmonyOS UI界面活動可實現不同屏幕的界面適配能力

    HarmonyOS的界面設計/組件設計需要擁有良好的自適應能力,可快速進行不同尺寸屏幕的開發。其次,界面中的元素設計以及交互方式保持一致,減少了用戶的學習成本。
    的頭像 發表于 12-23 09:50 ?1870次閱讀

    SkinMagic界面開發控件下載

    SkinMagic ? 界面開發控件
    發表于 02-15 10:28 ?1次下載

    如何在CubeMx配置界面將DMA中斷的默認使能關閉

    能不能在CubeMx配置界面將DMA中斷的默認使能關閉? 這里再順便分享一個跟CubeMx配置有關的話題。目前來看,我相信對不少人還是有幫助的! 我們在使用CubeMx對STM32芯片做初始化配置
    的頭像 發表于 09-09 16:01 ?1747次閱讀
    如何在CubeMx配置<b class='flag-5'>界面</b>將DMA中斷的<b class='flag-5'>默認</b>使能關閉

    【AWTK開源智能串口屏方案】設計UI界面并上傳到串口屏

    本篇文章將介紹如何使用AWStudio設計串口屏的UI界面和添加綁定規則,以及怎么將資源文件上傳到串口屏。引言:AWTK-HMI是基于AWTK與AWTK-MVVM
    的頭像 發表于 02-22 08:24 ?825次閱讀
    【AWTK開源智能串口屏方案】設計UI<b class='flag-5'>界面</b>并上傳到串口屏

    HarmonyOS開發案例:【視頻播放器】

    使用ArkTS語言實現視頻播放器,主要包括主界面視頻播放界面
    的頭像 發表于 04-23 17:25 ?794次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【<b class='flag-5'>視頻</b><b class='flag-5'>播放</b>器】
    主站蜘蛛池模板: 日韩免费观看一级毛片看看 | 四虎永久免费地址在线网站 | baoyu168成人免费视频 | 日本一区不卡在线观看 | 免费看日本黄色片 | 色综合亚洲天天综合网站 | 亚洲国产成人久久99精品 | 成人中文字幕一区二区三区 | 一级特黄牲大片免费视频 | 成人国产精品一级毛片了 | 美女扒开尿口给男人爽免费视频 | 天堂资源在线种子资源 | 97久久草草超级碰碰碰 | 手机看片免费福利 | 中文字幕一区二区三区在线播放 | 国产精品99r8在线观看 | 五月婷婷丁香综合网 | 天天艹天天操 | 国产午夜精品久久久久免费视小说 | 午夜毛片免费观看视频 | 三级黄色录像 | 在线观看天堂 | 乱码一区二区三区完整视频 | 精品99久久 | semimi亚洲综合在线观看 | 97射射| 三级视频网站在线观看 | 22sihu国产精品视频影视资讯 | 99热在线获取最新地址 | 天天狠狠弄夜夜狠狠躁·太爽了 | 日本free护士姓交 | 色天使在线播放 | 男女www视频在线看网站 | 四虎影院免费在线播放 | 午夜视频在线观看免费观看在线观看 | 国产农村妇女毛片精品久久久 | 四虎永久网址影院 | 三级在线观看国产 | 国产精品夜夜春夜夜 | 尻逼尻逼 | 天天做日日干 |