Android

Android智能手机上的音频浅析

手机可以说是现在人日常生活中最离不开的电子设备了。它自诞生以来,从模拟的发展到数字的,从1G发展到目前的4G以及不久将来的5G,从最初的只有唯一的功能(打电话)发展到目前的全功能,从功能机(feature phone)发展到智能机(smart phone),可谓变化巨大。对于手机上的音频来说,刚开始只有语音通信功能,现在不仅语音通信,还可以听音乐、录音、智能语音(语音输入/语音交互)等。智能手机中的音频场景众多,可以说是手机多媒体系统中最复杂的子系统了。今天我们就谈谈Android智能手机上的音频。

先从硬件谈起吧。下图是android智能手机中目前主流的跟音频相关的硬件框图。

Android智能手机上的音频浅析

了解一下——Android 几个版本新特性

一、Android 4.x

1.新锁屏界面:
Android4.0重新设计了锁屏幕UI,下方的解锁虚拟按键向周围发射出微光,轻轻拖动就可以解锁,比原来在UI上确实有很大的进步。

2.全新Widget排列:
主屏幕上的Widget插件是Android区别于其他系统最大的特点,新的Widget将会像程序界面那样排列。程序和Widget插件分为两个标签,清楚明了。

3.更直观的程序文件夹:
现在直接拖动程序到另一个程序图标上会生成文件夹,像iOS所作的那样,但区别在于拖动联系人快捷方式会生成一个快速拨号快捷方式,很智能,比原来便捷很多。

4.人脸识别解锁:
Google在现场进行了演示,虽然最开始遇到点小麻烦失败了,但人脸识别解锁对于安全性保障还是挺有必要的。

5.截屏功能:
同时按下电源键和音量“下”即可,对于反馈系统Bug和分享手机信息是一个很实用的升级。

6.全新通知栏:
现在在锁屏界面也可以下拉通知栏查看新通知。如果不想要某条通知,水平滑动即可取消。

7.语音识别的键盘:
现场识别中Androd4.0将Man识别成了Map,但令人惊讶的是它识别出了笑脸符号:-)的英文。用户可以通过增强的语音输入来发短信。

8.浏览器:

Android APP 性能优化的一些思考(三)

Android 应用的稳定性定义很宽泛,影响稳定性的原因很多,比如内存使用不合理、代码异常场景考虑不周全、代码逻辑不合理等,都会对应用的稳定性造成影响。其中最常见的两个场景是:Crash 和 ANR,这两个错误将会使得程序无法使用...

Android APP 性能优化的一些思考(二)

在 Android 系统中有个垃圾内存回收机制,在虚拟机层自动分配和释放内存,因此不需要在代码中分配和释放某一块内存,从应用层面上不容易出现内存泄漏和内存溢出等问题,但是需要内存管理。

Android APP 性能优化的一些思考(一)

说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才感觉运行速度稍微提高了点,就算手机在各种性能跑分软件面前分数遥遥领先,还是感觉无论有多大的内存空间都远远不够用。相信每个使用 Android 系统的用户都有过以上类似经历,确实,Android 系统在流畅性方面不如 IOS 系统,为何呢,明明在看手机硬件配置上时,Android 设备都不会输于 IOS 设备,甚至都强于它,关键是在于软件上。

造成这种现象的原因是多方面的,简单罗列几点如下:

  •   其实近年来,随着 Android 版本不断迭代,Google 提供的Android 系统已经越来越流畅,目前最新发布的版本是 Android 8.0 Oreo 。但是在国内大部分用户用的 Android 手机系是各大厂商定制过的版本,往往不是最新的原生系统内核,可能绝大多数还停留在 Android 5.0 系统上,甚至 Android 6.0 以上所占比例还偏小,更新存在延迟性。

Android性能优化

Android设备作为一种移动设备,不管是内存还是CPU的性能都受到了一定的限制,无法做到像PC设备那样具有超大的内存和高性能的CPU,这也意味着Android程序不可能无限制地使用内存和CPU资源,过多地使用内存会导致程序内存溢出,即OOM。而过多地使用CPU资源,一般指做大量的耗时任务,会导致手机变得卡顿甚至出现无法响应的情况,即ANR。

Android的性能优化方法

1、布局优化

布局优化的思想很简单,就是尽量减少布局文件的层级,布局中的层级少了,这就意味着Android绘制时的工作量少了,那么程序的性能自然就高了。

那么如何进行布局优化呢?有以下两点:

• 首先删除布局中无用的看控件和层级,其次有选择地使用性能较低的ViewGroup,比如RelativeLayout。
• 可以采用标签、标签、ViewStub。标签主要用于布局重用,标签一般配合标签使用,它可以降低减少布局的层级,而ViewStub则提供了按需加载的功能。

2、绘制优化

绘制优化是指View的onDraw方法要避免执行大量的操作,主要体现在两个方面:

详解Android Activity启动模式

相关的基本概念:

1、任务栈(Task)

若干个Activity的集合的栈表示一个Task。

栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于保障用户体验,维护用户操作体验上的完整性。

例如:微信ActivityA 分享文章到QQActivityB,两个activity是存在于不同app中的,但是被系统放在一个任务中,分享后,用户按back键返回,可以返回到原来的微信Activity A中,这就确保了用户体验。

2、查看当前系统的任务栈

命令行中 -- > adb shell dumpsys activity

3、Activity 的相关属性

android:taskAffinity:是否定义了该属性,对接下来讨论到的singleTask影响甚大,如果设置了Activity的taskAffinity属性值,Activity将在TaskName为指定值的独立Task中启动,否则,将在原来的默认Task中。

Android View Animation(视图动画)使用详解

Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类:

• View Animation: 视图动画在古老的Android版本系统中就已经提供了,只能被用来设置View的动画。

• Drawable Animation: 这种动画(也叫Frame动画、帧动画)其实可以划分到视图动画的类别,专门用来一个一个的显示Drawable的resources,就像放幻灯片一样。

• Property Animation: 属性动画只对Android 3.0(API 11)以上版本的Android系统才有效,这种动画可以设置给任何Object,包括那些还没有渲染到屏幕上的对象。这种动画是可扩展的,可以让你自定义任何类型和属性的动画。

可以看见,当前应用程序开发涉及的主要动画也就这三大类,我们接下来以类别为基础来慢慢展开说明。

本文将详细讲解View Animation(视图动画)的使用。

视图动画概述

Android系统架构及启动流程

Google官方提供了一张经典的四层架构图,从下往上依次分为:Linux内核、系统库和Android运行时环境、框架层、应用层,其中每一层都包含大量的子模块或子系统。

Android系统启动过程从下往上的一个过程:Loader - > Kernel - > Native - > Framework - > App

Android系统架构及启动流程

1、Loader

Boot ROM:当手机处于关机状态时,长按Power键开机,引导芯片开始从固化在ROM里的预设出代码开始执行,然后加载引导程序到RAM;

Boot Loader:这是启动Android系统之前的引导程序,主要是检查RAM,初始化硬件参数等功能。

2、Kernel

Android内存管理机制

1、基于Linux内存管理

Android系统是基于Linux 2.6内核开发的开源操作系统,而linux系统的内存管理有其独特的动态存储管理机制。不过Android系统对Linux的内存管理机制进行了优化,Linux系统会在进程活动停止后就结束该进程,而Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。

2、Android内存分配机制

与java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阈值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。Android系统有六类进程:前台进程、可见进程、次要服务、后台进程、内容供应节点、空进程。有内存管理需求的人可以用MinFreeManager之类的软件进行进程管理,分别为六类进程设定不同的阈值来操纵系统的内存分配机制。不过对于一般用户而言,Android系统默认的分配机制已经可以满足使用需要,因此也不需要再去调整。

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