codecamp

鸿蒙OS 添加多媒体支持

本小节主要说明 HarmonyOS 车载多媒体的使用方法,以音乐 Demo 开发为例,开发步骤如下:

  1. 在布局中添加音乐播放控件。

   <?xml version="1.0" encoding="utf-8"?>
   <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
                      ohos:id="$+id:play_music_root"
                      ohos:width="-1"
                      ohos:height="-1"
                      ohos:left_padding="24vp"
                      ohos:right_padding="24vp"
                      ohos:orientation="1">
       <AdaptiveBoxLayout ohos:id="$+id:title_bar"
                          ohos:width="-1"
                          ohos:height="-2"
                          ohos:top_margin="24vp">
           <Image ohos:id="$+id:arrow_down_btn"
                  ohos:width="24vp"
                  ohos:height="24vp"
                  ohos:align_parent_left="$+id:title_bar"
                  ohos:image_src="$media:default.png"/>
           <Image ohos:id="$+id:music_heart_btn"
                  ohos:width="24vp"
                  ohos:height="24vp"
                  ohos:left_of="$+id:music_hiplay_btn"
                  ohos:image_src="$media:default.png"/>
           <Image ohos:id="$+id:music_hiplay_btn"
                  ohos:width="24vp"
                  ohos:height="24vp"
                  ohos:left_margin="16vp"
                  ohos:align_parent_right="$+id:title_bar"
                  ohos:image_src="$media:default.png"/>
       </AdaptiveBoxLayout>
       <DirectionalLayout ohos:id="$+id:cover_container"
                          ohos:width="-1"
                          ohos:height="-2"
                          ohos:weight="1"
                          ohos:orientation="1">
           <AdaptiveBoxLayout
                   ohos:id="$+id:music_cover_adapt"
                   ohos:width="-1"
                   ohos:height="-1">
               <DirectionalLayout
                       ohos:id="$+id:music_cover_wrap1"
                       ohos:width="-2"
                       ohos:height="-2"
                       ohos:padding="20vp"
                       ohos:orientation="1">
                   <Image ohos:id="$+id:music_cover"
                          ohos:width="300vp"
                          ohos:height="300vp"
                          ohos:layout_alignment="17"
                          ohos:image_src="$media:default.png"/>
               </DirectionalLayout>
               <DirectionalLayout
                       ohos:id="$+id:music_cover_wrap2"
                       ohos:width="-1"
                       ohos:height="-1"
                       ohos:orientation="1">
                   <DirectionalLayout
                           ohos:width="-1"
                           ohos:height="-2"
                           ohos:layout_alignment="17"
                           ohos:top_margin="20vp"
                           ohos:bottom_margin="20vp"
                           ohos:orientation="1">
                       <Text ohos:id="$+id:music_title"
                             ohos:text_size="20vp"
                             ohos:shape="0"
                             ohos:text_color="#FF000000"
                             ohos:text_alignment="72"
                             ohos:width="-1"
                             ohos:height="-2"
                             ohos:multiple_lines="false"/>
                       <Text ohos:id="$+id:music_auth"
                             ohos:text_size="14vp"
                             ohos:shape="0"
                             ohos:top_margin="4vp"
                             ohos:text_color="#FF000000"
                             ohos:text_alignment="72"
                             ohos:width="-1"
                             ohos:height="-2"
                             ohos:multiple_lines="false"/>
                   </DirectionalLayout>
                   <Text ohos:id="$+id:music_lrc"
                         ohos:width="-1"
                         ohos:height="-2"
                         ohos:layout_alignment="17"
                         ohos:text="See the lights see the party the ball grows"
                         ohos:text_size="13vp"
                         ohos:text_color="#FF000000"
                         ohos:text_alignment="72"/>
               </DirectionalLayout>
           </AdaptiveBoxLayout>
       </DirectionalLayout>

    
       <DirectionalLayout ohos:id="$+id:foot_wrap"
                          ohos:width="-1"
                          ohos:height="-2"
                          ohos:orientation="1">
           <DirectionalLayout ohos:id="$+id:progress_container"
                              ohos:width="-1"
                              ohos:height="-2"
                              ohos:top_margin="10vp"
                              ohos:orientation="0">
               <Text ohos:id="$+id:play_progress_time"
                     ohos:width="-2"
                     ohos:height="-2"
                     ohos:layout_alignment="16"
                     ohos:right_margin="6vp"
                     ohos:text_size="13vp"
                     ohos:text_color="#FF000000"
                     ohos:text_alignment="72"/>
               <SeekBar ohos:id="$+id:play_progress_bar"
                        ohos:width="-1"
                        ohos:height="14vp"
                        ohos:layout_alignment="16"
                        ohos:weight="1"/>
               <Text ohos:id="$+id:play_total_time"
                     ohos:width="-2"
                     ohos:height="-2"
                     ohos:layout_alignment="16"
                     ohos:left_margin="6vp"
                     ohos:text_size="13vp"
                     ohos:text_color="#FF000000"
                     ohos:text_alignment="72"/>
           </DirectionalLayout>
           <DirectionalLayout ohos:id="$+id:control_container"
                              ohos:width="-1"
                              ohos:height="96vp"
                              ohos:orientation="0">
               <DirectionalLayout ohos:id="$+id:control_box1"
                                  ohos:width="-2"
                                  ohos:height="-2"
                                  ohos:weight="1"
                                  ohos:layout_alignment="17"
                                  ohos:orientation="1">
                   <Image ohos:id="$+id:volume_down_btn"
                          ohos:width="24vp"
                          ohos:height="24vp"
                          ohos:layout_alignment="17"
                          ohos:image_src="$media:default.png"/>
               </DirectionalLayout>
               <DirectionalLayout ohos:id="$+id:control_box2"
                                  ohos:width="-2"
                                  ohos:height="-2"
                                  ohos:weight="1"
                                  ohos:layout_alignment="17"
                                  ohos:orientation="1">
                   <Image ohos:id="$+id:prev_btn"
                          ohos:width="40vp"
                          ohos:height="40vp"
                          ohos:layout_alignment="17"
                          ohos:image_src="$media:default.png"/>
               </DirectionalLayout>
               <DirectionalLayout ohos:id="$+id:control_box3"
                                  ohos:width="-2"
                                  ohos:height="-2"
                                  ohos:weight="1"
                                  ohos:layout_alignment="17"
                                  ohos:orientation="1">
                   <Image ohos:id="$+id:play_btn"
                          ohos:width="64vp"
                          ohos:height="64vp"
                          ohos:layout_alignment="17"
                          ohos:image_src="$media:default.png"/>
               </DirectionalLayout>
               <DirectionalLayout ohos:id="$+id:control_box4"
                                  ohos:width="-2"
                                  ohos:height="-2"
                                  ohos:weight="1"
                                  ohos:layout_alignment="17"
                                  ohos:orientation="1">
                   <Image ohos:id="$+id:next_btn"
                          ohos:width="40vp"
                          ohos:height="40vp"
                          ohos:layout_alignment="17"
                          ohos:image_src="$media:default.png"/>
               </DirectionalLayout>
               <DirectionalLayout ohos:id="$+id:control_box5"
                                  ohos:width="-2"
                                  ohos:height="-2"
                                  ohos:weight="1"
                                  ohos:layout_alignment="17"
                                  ohos:orientation="1">
                   <Image ohos:id="$+id:volume_up_btn"
                          ohos:width="24vp"
                          ohos:height="24vp"
                          ohos:layout_alignment="17"
                          ohos:image_src="$media:default.png"/>
               </DirectionalLayout>
           </DirectionalLayout>
       </DirectionalLayout>
   </DirectionalLayout>

  1. 加载播放控件。

   super.setUIContent(ResourceTable.Layout_play_music_layout);

  1. 实现音乐播放管理类。

   public class PlayManager {
       ...
       private Player player;
       public synchronized boolean play(String filePath, int startMilliSecond) {
           ...
           FileDescriptor fd = IoUtil.getFileDescriptor(filePath);
           Source source = new Source(fd);
           player.setSource(source);
           boolean isSuccess = player.prepare();

    
           isSuccess = player.rewindTo(startMilliSecond * MICRO_MILLI_RATE, REWIND_NEXT_SYNC);
           // 播放
           isSuccess = player.play();
           isPlaying.set(isSuccess);
           return isSuccess;
       }

    
       public synchronized void pause(int startMilliSecond) {
           ...
           player.pause();
       }

    
       public synchronized void stop() {
           if (player == null) {
               return;
           }
           player.stop();
           isPlaying.set(false);
           LogUtil.info(TAG, "stop success");
           player.release();
           player = null;
       }
   }

  1. 调用音乐播放管理类的接口播放音乐。

   // 指定歌曲播放
   String path = "/data/music/files/data/wonderful_life.mp3";
   PlayManager.getInstance().play(path,1);

  1. 在布局中增加视频播放控件。

   // 视频布局实现方法
   public class MySurfaceSlice extends AbilitySlice {
       ... 
       public void makeSurfaceView() {
           ... 
           mySurfaceProvider = new SurfaceProvider(this);
           adaptiveBoxLayoutSurfaceView.AdaptiveBoxLayout.LayoutConfig().addComponent(mySurfaceProvider);
       }
   }

  1. 实现视频播放管理类。

   public class VideoPlay {
       public synchronized void startPlay() {
           ...   
           ret = playImpl.play();
       }

    
       public synchronized void preParePlay() {
           ...    
           ret = playImpl.prepare();
       }

    
       public synchronized void pausePlay() {
           ...    
           boolean pauseRet = playImpl.pause();;
       }

    
       public synchronized void setSourcePlay(String filePath) {
            ...    
           FileDescriptor fd = IoUtil.getFileDescriptor(filePath);
           Source source = new Source(fd);
           playImpl.setSource(source);
       }

    
       @Override
       public synchronized void onStop() {
           ...    
           super.onStop();
       }
   }

  1. 调用视频播放管理类的接口播放视频。

   // 调用视频播放类进行播放
   String filePath = "/data/video/files/data/festival.mp4";
   VideoPlay videoPlay = new VideoPlay()
   videoPlay.setSourcePlay(filePath);
   videoPlay.startPlay();
鸿蒙OS 创建车载应用项目
鸿蒙OS 智能穿戴概述
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }