Android开发

Android 视频播放器 (二):使用MediaPlayer播放视频

Android 视频播放器 (一):使用VideoView播放视频 我们讲了一下如何使用VideoView播放视频,了解了基本的播放器的一些知识和内容。也知道VideoView内部封装的就是MediaPlayer,本文就介绍如何使用MediaPlayer播放视频。

一、简介

MediaPlayer是Android中的一个多媒体播放类,其提供的API能满足简单的大部分音视频的播放需求。

下面简单介绍一下MediaPlayer:

  •   MediaPlayer是使用Surface进行视频的展示的。
  •   MediaPlayer只支持mp4、avi、3gp格式的视频,支持格式相对单一。
  •   MediaPlayer可以播放网络视频,支持的网络视频的协议为:Http协议和RTSP协议两种。

二、MediaPlayer 使用方法

MediaPlayer 的提供的方法如下:

Android 视频播放器 (一):使用VideoView播放视频

一、简介

作为Android开发,我们不可避免的会接触到视频播放,VideoView做为最简单的播放器,我们是不应该不会的。

下面简单介绍一下VideoView:

  •  VideoView是使用MediaPlayer来对视频文件进行控制的。
  •  VideoView只支持mp4、avi、3gp格式的视频,支持格式相对单一,VideoView支持的格式可以参考MediaPlayer。
  •  VideoView可以播放网络视频,支持的网络视频的协议为:Http协议和RTSP协议两种。

二、VideoView常用方法

Android VideoView类为我们提供了十分方便的视频播放API,其主要方法如下:

  •  setVideoPath:设置要播放的视频文件的位置
  •  start:开始或继续播放视频
  •  pause:暂停播放视频
  •  resume:将视频从头开始播放

Android开发之如何避免ANR(Keeping Your App Responsive)

一:什么是ANR

如果应用程序不能响应用户的输入了,那么就可以说应用ANR了。

如果需要运行一个耗时较长的操作的时候,不要把这个任务放在UI线程上运行,而是单独创建一个线程运行那些操作。

以下情况会出现ANR提示对话框:

(1). 5秒内对一个输入动作没有反应。
(2). 一个BroadcastReceiver在10秒内没有完成运行。

二:如何避免ANR

在activity的关键的生命周期方法: onCreate 和 onResume方法上尽可能处理越少越好的事情。

下面列举的操作都是长时间运行的:网络工作、数据库操作、精确的计算,例如重新定制图片(应该在单独的工作线程中)、或者通过异步请求操作数据库的情况下。

MVP模式在Android开发中的应用

随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责。为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Model-View-Presenter)模式应运而生。

Android开发——MVC、MVP和MVVM的异同

No1:

Model一般用来保持程序的数据状态,比如数据存储、网络请求等

No2:

Android开发中应用到MVC的地方:比如ListView与Adapter,如果把ListView看作View层,那么Adapter则可以看作Controller,获取ListView展示数据的相关实现类则看作Model。

如果把思维放大,也可以把Android中的xml布局/View类看作View层,而把Activity看作是Controller层,Model层则由相关的数据操作类承担。

No3:

MVP模式可以分离显示层和逻辑层,它们之间通过接口进行通信,降低耦合。

No4:

NavigationView就是MVP设计模式的一个真实案例,Toolbar的菜单解析也遵循MVP设计模式。

No5:

MVVM:Model-View-ViewModel

View和ViewModel内部通过一个Binder进行事件交互,该Binder通过双向绑定将View与ViewModel中与对于数据操作的部分链接,当对应数据由更新时同样会自动地反馈到View层上。

Android开发者选项之GPU过度绘制

GPU过度绘制定义

如果你粉刷过一个房间或一所房子,就会知道给墙壁涂上颜色需要做大量的工作。假如你还要重新粉刷一次的话,第二次粉刷的颜色会覆盖住第一次的颜色,第一次的颜色就永远不可见了,等于你第一次粉刷做的大量工作就完全被浪费掉。这太可怕了。

同样的道理,如果在你的应用程序中浪费精力去绘制一些东西同样会产生性能问题。过度绘制这个名词就是用来描述屏幕上一个像素在单个帧中被重绘了多少次。

GPU过度绘制就指的是在屏幕一个像素上绘制多次(超过一次),GPU过度绘制或多或少对性能有些影响。

GPU过度绘制分析

过度绘制其实是一个性能和设计的交叉点。我们在设计上追求很华丽的视觉效果,但一般来说这种视觉效果会采用非常多的层叠组件来实现,这时候就会带来过度绘制的问题。我们再来看看具体显示在Android界面层级关系:

Android系统的安全设计与架构

一、安全策略

1、Android

的总体架构由5个主要层次上的组件构成,这5层是:Android应用层、Android框架层、Dalvik虚拟机层、用户空间原生代码层和Linux内核层。

Android系统的安全设计与架构

2、安全边界,有时也会称为信任边界,是系统中分隔不同信任级别的特殊区域。

一个最直接的例子就是内核空间与用户空间之间的边界。内核空间中的代码可以对硬件执行一些底层操作并访问所有的虚拟和物理内存,而用户空间中的代码则由于CPU的安全边界控制,无法访问所有内存。

3、Android沙箱的核

心机制基于以下几个概念:标准的Linux进程隔离、大多数进程拥有唯一的用户ID(UID),以及严格限制文件系统权限。

#define AID_SHELL 2000 / * adb shell 与 debug shell 用户* /
#define AID_CACHE 2001 / *缓存访问* /

为什么Android开发最抢手?

在100offer每周的拍卖会中,我们发现Android开发常常是收到最多面试机会的offer之王。那么,这些平均拿到48家企业面试机会的Android开发究竟有什么过人之处呢?

Android平台凭借着庞大的用户基础和开放的开发环境,吸引了越来越多的开发者。但是,Android开发真的是简单的「能写应用就行」吗?NO!

具备怎样的能力,才能成为受市场欢迎的Android开发?

一名Andriod开发的技能体现在「实际量级下解决问题的能力」,流畅地写出高质量的代码,快速地消灭出现的bug,完美地解决随时可能出现的问题。

更重要的是,一枚优秀的Android开发绝不会视野只局限在应用层,「对底层的理解」是决定你是否成为Top5%的关键,也是很多工作几年后的Android开发职业上升的瓶颈。

具体落实到技能点,一名有2~3年工作经验的Android开发,具备以下一半的技能点是合格,全部具备是优秀:

扎实的C++、Java基础
熟悉网络编程,了解常用网络协议

Android开发不得不去了解的网络知识

一 互联技术

虽然作为程序员来讲不必过多的去了解网络互联的相关技术,但是目前互联网已经转向了物联网时代,从刚开始的软件+网络,成为今天的硬件+软件+网络的模式(即物联网)智能家居, 人工智能的实现模式也是典型的物联网产物。因此有网络基础对成为一个高级软件架构师有着无比轻重的作用。

目前主流的互联技术包括小规模的主机互联(局域网)和大规模的主机互联(广域网)。

主机互联一般基于的通信模式有一对一通信(双方)和多对多通信(多方)由以下两种通信方式。

双方通信

–双方信息打包后放到通信线路上发送,就能到达对方。
–在通信线路上只有两方,所收到的信息必然是对方发过来给我的。

多方通信

只将信息打包后就放到通信线路上去发送,那么就无法知道到是从哪儿发来的然后到底底是发给谁的信息。
因此,我们需要给每一个通信终端都编一个号,也就是IP地址(IP地址)。
虽然程序员和硬件扯不上太大的关系,但是我们还是要知道早期的局域网是同过双绞线和同轴电缆当作通信介质,但是由于介质的损耗和带宽问题,目前已采用光纤通信,采用光速,不仅提高了传输速率,而且减少了损耗。以下两种介质的对比。

Android开发Tips(1)

介绍一些, 在Android开发中, 会经常使用的小知识点

1. Download文件夹

绝对路径
/storage/emulated/0/Download/xxx

遍历
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File[] files = file.listFiles();
for (int i = 0; i < files.length; ++i) {
Log.e(TAG, files[i].getAbsolutePath());
}

2. ButterKnife多参数

绑定多个参数
@OnClick({
R.id.dialog_dau_share_wx,
R.id.dialog_dau_share_wx_timeline,
R.id.dialog_dau_share_weibo,
R.id.dialog_dau_share_qq
})

同步内容
--电子创新网--
粤ICP备12070055号