- Android手机设备调用方式
之前的课程中我们介绍过,Android中硬件的驱动都在系统层,这些驱动都是由C/C++语言编写的,Java语言写的代码是无法直接调用的,并且每一台手机所使用的硬件可能都不一样,同样功能的设备驱动也可能不同,那该怎么办呢?
Android的系统开发工程师已经想到了这一点,在应用框架层统一给我们做好了用来调用这些设备的API(应用程序接口),方便APP开发者来调用,并且不用花费精力去关心这些硬件的驱动如何去运行。
这些API可以被分为两类:硬件API和功能API
- 硬件API调用举例camera
1) static Camera open():打开Camera,返回一个Camera实例。
2) static Camera open(int cameraId):根据cameraId打开一个Camera,返回一个Camera实例。
3) final void release():释放掉Camera的资源。
4) static int getNumberOfCameras():获取当前支持的Camera硬件个数。
5) Camera.Parameters getParameters():获取Camera的各项参数设置类。
6) void setParameters(Camera.Parameters params):通过params把Camera的各项参数写入到Camera中。
7) final void setDisplayOrientation(int degrees):摄像预览的旋转度。
8) final void setPreviewDisplay(SurfaceHolder holder):设置Camera预览的SurfaceHolder。
9) final void starPreview():开始Camera的预览
10) final void stopPreview():停止Camera的预览
11) final void autoFocus(Camera.AutoFocusCallback cb):自动对焦。
12) final takePicture(Camera.ShutterCallback shutter,Camera.PictureCallback raw,Camera.PictureCallback jpeg):拍照。
13) final void lock():锁定Camera硬件,使其他应用无法访问。
14) final void unlock():解锁Camera硬件,使其他应用可以访问。
- 硬件功能使用框架MediaRecord
getAudioSourceMax() 获取音频信号源的最高值。
getMaxAmplitude() 最后调用这个方法采样的时候返回最大振幅的绝对值
getMetrics() 返回当前Mediacorder测量的数据
pause() 暂停录制
prepare() 准备录制
resume() 恢复录制
release() 释放与此MediaRecorder对象关联的资源
reset() 重新启动mediarecorder到空闲状态
setAudioChannels(int numChannels) 设置录制的音频通道数
setAudioEncoder(int audio_encoder) 设置audio的编码格式
setAudioEncodingBitRate(int bitRate) 设置录制的音频编码比特率
setAudioSamplingRate(int samplingRate) 设置录制的音频采样率
setAudioSource(int audio_source) 设置用于录制的音源
setMaxDuration(int max_duration_ms) 设置记录会话的最大持续时间(毫秒)
setMaxFileSize(long max_filesize_bytes) 设置记录会话的最大大小(以字节为单位)
setOutputFile(FileDescriptor fd) 传递要写入的文件的文件描述符
setOutputFile(String path) 设置输出文件的路径
setOutputFormat(int output_format) 设置在录制过程中产生的输出文件的格式
setLocation(float latitude, float longitude) 设置并存储在输出文件中的地理数据(经度和纬度)
setOnErrorListener(MediaRecorder.OnErrorListener l) 注册一个用于记录录制时出现的错误的监听器
setOnInfoListener(MediaRecorder.OnInfoListener listener) 注册一个用于记录录制时出现的信息事件