从现在开始一周时间研究录音,下周出来一个完整的博客,监督,激励!!!
2017-02-09--------2017-02-17
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Android源码录音功能说起来似乎也很简单,只不过就是一个录音的功能然后进行了一个保存的操作。为什么要研究这个呢?毕竟现
在语音通话、直播亦或者是语音助手比较流行,其中其实最基础的还是对录音的一些处理,所以还是有必要研究一下的。
说起来功能简单,但其实单单是录音功能其中又夹杂着一些别的东西,比如UI的实时更新,电话等各种状态的监控,音量大小的监
控。录音的保存也涉及到往手机中写数据,以及以何种格式写数据,比如当前流行的直播,音频流的传输到底以何种格式,手机可以
播放什么样的格式,这些都会涉及。但是手机的原生系统应用录音机不支持文件的播放。
代码所在目录为android\packages\apps\SoundRecorder
先从编译开始说起
chapter one 录音机编译脚本文件-Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := SoundRecorder
LOCAL_PRIVILEGED_MODULE := true
include $(BUILD_PACKAGE)
对于Android.mk文件的详细介绍可参考连接http://www.cnblogs.com/welhzh/p/4532142.html
简单介绍一下
LOCAL_MODULE_TAGS := optional表示模块在任何时候都参与编译
LOCAL_PACKAGE_NAME :=SoundRecorder表示编译完成后生成的应用名为SoundRecorder
LOCAL_PRIVILEGED_MODULD := true表示APP会安装在~/system/priv-app下拥有系统权限
编译脚本文件可以告诉我们APP的名字和APP会安装在哪里,以及APP是否参与编译
chapter two,模块的入口清单配置文件--Androidmanifest.xml
配置文件会告诉我们应用的入口,应用所需的权限以及应用的各种组件,看一个应用的复杂程度其实看配置文件即可
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.soundrecorder">
<original-package android:name="com.android.soundrecorder" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher_soundrecorder"
android:usesCleartextTraffic="false">
<activity android:name="SoundRecorder"
android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="unspecified"
android:clearTaskOnLaunch="true"
android:theme="@style/Theme.SoundRecorder">
<intent-filter>
<ac