• 实验6 在应用程序中播放音频和视频


    实验报告

    课程名称

    基于Android平台移动互联网开发

    实验日期

    4月15日

    实验项目名称

    在应用程序中播放音频和视频

    实验地点

    S3010

    实验类型

    □验证型    √设计型    □综合型

    学    时

    一、实验目的及要求(本实验所涉及并要求掌握的知识点)

    实现在应用程序中处理音频和视频。

    1) 实现播放音频,音频播放控制;

    2) 实现播放视频,视频播放控制;

    3) 使用Service服务播放项目源文件中的音乐。

    二、实验环境(本实验所使用的硬件设备和相关软件)

    (1)PC机

    (2)操作系统:Windows XP

    (3)软件: Eclipse, JDK1.6,Android SDK,ADT

    三、实验内容及步骤

    一、新建openvideo_main,MusicService的类和openvideo.xml                               

    二、导入歌曲与视频到本地手机

        

    三、完善关键代码

    四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)

    代码:

    MusicService关键代码:

    public class MusicService extends Service {

        private String TAG="Main";

        MediaPlayer mp=new MediaPlayer();

        @Override

        public IBinder onBind(Intent arg0) {

            // TODO Auto-generated method stub

            return null;

        }

        @Override

        public void onCreate() {

            super.onCreate();//初始化MediaPlayer对象,准备播放音乐,音乐文件放在文件夹/res/raw中

              String sdCard=Environment.getExternalStorageDirectory().getPath();

            try {

                mp.setDataSource(sdCard+File.separator+"bjmusic.mp3");

            } catch (IllegalArgumentException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (SecurityException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IllegalStateException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            try {

                mp.prepare();

            } catch (IllegalStateException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            }

        public int onStartCommand(Intent intent, int flags, int startId) {

            // TODO Auto-generated method stub

            //开始播放音乐

            mp.start();

            return super.onStartCommand(intent, flags,   startId);   

        }

        @Override

        public void onDestroy() {

        super.onDestroy();

        //停止播放音乐

        mp.stop();

            }

    Openvideo.xml布局关键代码

    <?xml version="1.0"   encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

          android:layout_width="match_parent"

          android:layout_height="match_parent"

          android:orientation="vertical"   >

        <SurfaceView

            android:id="@+id/VView1"

            android:layout_width="match_parent"

            android:layout_height="288dp"  

            android:keepScreenOn="true"/>

    </LinearLayout>

    Openvideo_main关键代码

    public class openvideo_main extends Activity{

        private SurfaceView sv;

        private MediaPlayer vi;

        @SuppressLint("SdCardPath") @Override

        protected void onCreate(Bundle savedInstanceState) {

            // TODO Auto-generated method stub

            super.onCreate(savedInstanceState);

            setContentView(R.layout.openvideo);

            vi=new MediaPlayer();

            sv=(SurfaceView)findViewById(R.id.VView1);

            //sv.getHolder().setKeepScreenOn(true);   

            //String sdCard=Environment.getExternalStorageDirectory().getPath();

            try {

                vi.setDataSource("/sdcard/Movies/vvv.mp4");

                vi.setDisplay(sv.getHolder());

                vi.prepare();

                vi.start();

            } catch (IllegalArgumentException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (SecurityException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IllegalStateException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

    Music_main中播放音乐关键代码

    who_group.setOnCheckedChangeListener(new   RadioGroup.OnCheckedChangeListener() {

               

                @Override

                public void onCheckedChanged(RadioGroup arg0,   int arg1) {

                    // TODO Auto-generated method stub

                    Intent intent=new Intent(music_main.this, MusicService.class);

                    if (arg1==R.id.opmusic) {

                        startService(intent);

     

                    }else if(arg1==R.id.clomusic){

                        stopService(intent);

                    }

                }

            });

        }

    运行结果:(截图)

    点击MainActivity系统菜单中的设置

        

    点击帮助,然后点击数独视频教学

        

    五、实验总结(对本实验结果进行分析,实验心得体会及改进意见)

        音乐可以通过service播放,但视频播放不了,一直黑屏,找不到错误,根据书本上的参考做的,单依然播放不了视频,暂时解决不了这个问题。还有待研究。

    实验评语

     

    实验成绩

     

    指导教师签名:              年   月   日

               
  • 相关阅读:
    Hook钩子程序
    KMeans笔记 K值以及初始类簇中心点的选取
    自己用C#写的一个俄罗斯方块的小程序(附源代码)。
    那些帮助你成为优秀前端工程师的讲座——《JavaScript篇》
    Mac技巧合集第二期
    WCF增加UDP绑定(应用篇)
    第一个MVC4 Web应用程序
    jQuery的页面加载事件
    通过网页进行 iOS 应用内部分发
    sql count效率
  • 原文地址:https://www.cnblogs.com/lijiahui/p/5419602.html
Copyright © 2020-2023  润新知