尚硅谷实战项目---手机影音APP

项目总结

1.Activity 横竖屏切换的生命周期

默认情况:(会导致重新播放)
onPause—>onStop—>onDestroy—>onCreate—>onStart—>onResume

屏幕横竖切换导致生命周期重新执行

解决:

<activity android:name=".activity.SystemVideoPlayer" 
		  android:configChanges="keyboardHidden|screenSize|orientation" />        

2.视频的SeekBar更新

视频的总时长和SeekBar的setMax(总时长)
实例化Handler,每秒得到当前视频播放的进度,SeekBar,setProgress(当前进度);

3.SeekBar的拖拽

视频的总时长和SeekBar的setMax(总时长)
设置SeekBar状态变化的监听

4.注册广播有俩种方式:动态注册和静态注册

静态注册:在功能清淡文件注册,只要软件安装在手机上,就算软件不启动,也能收到对应的广播;
…___________…
但是有局限:比如电量,锁屏开屏等监听就不能再静态中注册
(频繁变化的,底层系统不允许)

动态注册:只有注册的代码被执行后,才能收到对应的广播

5.释放资源时

 @Override
    protected void onDestroy() {

        //取消广播
        if (receiver!=null){
            unregisterReceiver( receiver );
            receiver=null;
        }
        super.onDestroy();

    }

要在super()之前
因为要先释放子类,后释放父类

6.swich 和 if

swich可以的if都可以,反之不可以
因为if可以取范围

7.传递列表数据到Activity中,列表中的数据有可能是对象,或者是String,int;如果要传列表数据是对象 需要 序列化

报错提示:Parcel: unable to marshal…
自定义的对象可以通过bundle传递,前提条件就是自定义的类实现Parcelable,Serializable俩个接口之一

在Activity之间传递对象有俩个选择

Parcelable和Serializable的选择
Parcelable是android自带的,Serializable兼容性更好,也更简便
1.在使用内存的时候,Parcelable类比Serializable性能高,所以推荐使用Parcelable类
Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC
Parcelable不能使用在要将数据存储在磁盘上的情况

对象为什么要序列化

1.永久性保存对象,保存对象的字节序列到本地文件
2.通过序列化对象在网络中传递对象
3.通过序列化对象在进程中传递对象

8.手势识别器

1.定义:private GestureDetector detector;
2.实例化(重写方法:双击,单击,长按)
3.onTouchEvent():方法中把事件传递给手势识别器(重要)

解决BUG:拖动进度条,音量条的时候,超过4秒,控制面板隐藏

9.调节音量

1.实例化AudioManger :当前音量,最大音量
2.SeekBar.setMax(最大音量)
SeeKBar.setProGress(当前的音量)
3.设置SeekBar状态变化,

10.在屏幕滑动改变声音

从上往下
float distanceY=startY-endY<0
start+负数:音量变小

从上往下
float distanceY=startY-endY>0
start+正数:音量变大

滑动屏幕的总距离:总距离=改变声音:音量最大值(比值)

改变声音=(滑动屏幕的距离:总距离)*音量最大值

最终声音=原来的+改变声音

实现
1.onTouchEvent方法里,在down的时候:startY touchRang:总距离
移除消息
mVol
2.在move
float endy=envent.getY();
float distanceY=endY-startY;
updataVoice();
3.在up的时候重新发消息

11.让其它软件调用自己写的播放器

方法:参照系统源代码

 			<intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="rtsp" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />

                <data android:mimeType="video/*" />
                <data android:mimeType="application/sdp" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="http" />
                <data android:mimeType="video/mp4" />
                <data android:mimeType="video/3gp" />
                <data android:mimeType="video/3gpp" />
                <data android:mimeType="video/3gpp2" />
            </intent-filter>

12.点击调起所有播放器

		Intent intent=new Intent(  );

        //重要!不加这个不行
        intent.setAction(Intent.ACTION_VIEW);

        intent.setDataAndType( 		  Uri.parse("http://192.168.137.1:8080/zjq.mp4"),"video/*");
        startActivity( intent );

13.手机连接电脑播放的tomcat的配置

1.用手机连上pc的wifi
2.开启电脑tomcat,并且把一个视频放入
3.查看ip地址(cmd-ipconfig),找Ipv4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值