public interface AliyunICameraCapture extends AliyunIBaseCapture
Modifier and Type | Method and Description |
---|---|
int |
addImage(EffectImage effectImage)
添加贴图素材,如果需要使用文字贴图,可以通过Bitmap工具把文字转成贴图
通过接口
setEffectView(float, float, float, float, EffectBase) 调整贴图的位置 |
int |
addPaster(EffectPaster effectPaster)
添加人脸动图,人脸动图与普通动图要严格区分,如果把普通动图素材当作人脸动图使用,则会出现动图不显示的情况,要使用人脸动图,必须先设置
rotation,通过
setRotation(int) 实现。rotation的具体计算方式,请参考Demo中的代码。
添加普通动图不能使用该接口,而需要使用addPaster(EffectPaster, float, float, float, float, float, boolean) |
int |
addPaster(EffectPaster effectPaster,
float sx,
float sy,
float sw,
float sh,
float rotation,
boolean flip)
添加普通动图,人脸动图可以当作普通动图,但是普通动图不能当作人脸动图
注意
AliyunIRecorder#setEffectView(float, float, float, float, EffectBase) 的执行效果会和此函数的执行效果进行叠加 |
int |
applyAnimationFilter(EffectFilter effectFilter)
设置动效滤镜,通过
EffectFilter.Builder 来构建滤镜资源对象 |
int |
applyFilter(EffectFilter effectFilter)
设置滤镜效果
|
int |
getBeautyLevel()
获取当前美颜度
|
int |
getCameraCount()
获取摄像头数量
|
float |
getCurrentExposureCompensationRatio()
获取当前曝光度的比例值
|
java.util.List<Camera.Size> |
getSupportedPictureSize()
获取当前摄像头支持的照片尺寸
|
java.util.SortedSet<Size> |
getSupportedPictureSizes()
获取当前摄像头支持的照片尺寸
|
void |
needFaceTrackInternal(boolean need)
是否需要开启内置人脸识别
|
void |
removeAnimationFilter(EffectFilter effectFilter)
删除动效滤镜
|
void |
removeFilter()
删除滤镜效果
|
void |
removeImage(EffectImage effectImage)
删除贴图
|
void |
removePaster(EffectPaster effectPaster)
删除动图素材,普通动图和人脸动图都通过该接口移除
|
int |
resizePreviewSize(int width,
int height)
重新设置预览窗口大小(可以实现动态切换预览画幅)
|
void |
setAutoPreviewAfterTakePhoto(boolean autoPreviewAfterTakePhoto)
设置拍照后是否继续预览
|
void |
setBeautyLevel(int level)
设置美颜度
|
void |
setBeautyStatus(boolean on)
设置美颜开/关
|
void |
setCamera(CameraType camera)
设置开启预览时的摄像头类型。仅在第一次打开时生效,后面如果要切换摄像头使用
switchCamera() |
void |
setCameraCaptureDataMode(int captureDataMode)
设置Camera 数据回调方式
|
void |
setCameraParam(CameraParam cameraParam)
设置摄像头预览参数
|
void |
setDisplayView(SurfaceView displayView)
设置显示预览的
SurfaceView |
int |
setEffectView(float xRatio,
float yRatio,
float widthRatio,
float heightRatio,
EffectBase effectBase)
设置特效信息(位置,大小)
widthRatio和heightRatio参数需要符合素材宽高/屏幕宽高的比例
比如: 素材的宽高为200,300, 屏幕的宽高为 540,720 sw = (float)200/540, sh = (float)300/720。sx,sy是归一化的屏幕比例参数,坐标是以资源的中心点作为锚点的
|
int |
setExposureCompensationRatio(float value)
设置曝光度比例
|
void |
setFaceDetectRotation(int rotation)
设置单独的人脸识别角度,如果使用本接口,请不要使用setRotation
|
int |
setFaces(float[][] faces)
设置人脸坐标点,而二维组每个元素,代表一张脸的6个特征点。
|
void |
setFaceTrackInternalMaxFaceCount(int maxFaceCount)
设置内置人脸识别的最大识别数,最大为3个,大于3个为3个
|
int |
setFaceTrackInternalModelPath(java.lang.String path)
设置人脸识别模型文件夹路径
这里必须是包含模型文件的目录路径,模型文件的文件名不能修改
|
void |
setFocus(float xRatio,
float yRatio)
设置对焦点,仅当
setFocusMode(int) 的参数为CameraParam.FOCUS_MODE_AUTO 时有效 |
void |
setFocus(Point point)
Deprecated.
|
void |
setFocusMode(int mode)
设置聚焦模式
|
boolean |
setLight(FlashType flashType)
设置闪光灯模式
|
void |
setOnChoosePictureSizeCallBack(OnChoosePictureSizeCallback callback)
设置拍照分辨率回调
|
void |
setOnFaceDetectInfoListener(OnFaceDetectInfoListener listener)
设置人脸检测信息变化的回调,当人脸检测信息发生改变时将触发
OnFaceDetectInfoListener.onFaceInfoChange(FaceDetectInfo) |
void |
setOnFrameCallback(OnFrameCallback callback)
设置采集帧回调,每采集一帧数据都通过该回调返回帧数据
|
void |
setOnTextureIdCallback(OnTextureIdCallback callback)
设置纹理ID回调
|
void |
setOutputFlip(boolean flip)
设置摄像头录制输出视频是否进行镜像处理
注意:仅对输出视频有效,预览不改变
|
int |
setPictureSize(int width,
int height)
设置照片尺寸
|
void |
setRecordRotation(int rotation)
设置单独的录制视频角度,如果使用本接口,请不要使用setRotation
如果需要根据传感器角度来设置录制角度,需要加上计算
if (rotation == 90 || rotation == 270) {
rotation = (rotation + 90) % 360;
if (mAliyunCamera.getCameraInfo().facing == CameraInfo.CAMERA_FACING_BACK) {
rotation += 180;
rotation %= 360;
}
} else if (rotation == 0 || rotation == 180) {
rotation = (rotation + 270) % 360;
}
|
void |
setRotation(int rotation)
设置传感器的角度值,如果传感器返回的角度值不是0,90,180,270四个值中的,需要根据范围来确定
Sets the rotation angle of the gyro sensor.
|
void |
setShutterSound(boolean bNeedShutterSound)
设置拍照时是否存在咔嚓声
|
int |
setZoom(float rate)
设置摄像头缩放比例
|
void |
snapshot(boolean needBitmap,
OnPictureCallback pictureCallback)
预览画面截图(包含特效)
该接口为异步接口,通过
OnPictureCallback#onPicture(byte[]) 返回图像数据;
再根据是否转换为 bitmap 回调OnPictureCallback.onPicture(Bitmap) |
int |
startPreviewAfterTakePicture()
默认情况时,拍照结束会自动启动预览,故默认情况下用户不必调用 startPreviewAfterTakePicture;
若拍照结束后不自启预览时,用户需要手动调用 startPreviewAfterTakePicture 来启动预览.
|
int |
switchCamera()
切换摄像头
|
FlashType |
switchLight()
切换闪光灯
|
void |
takePhoto(boolean needBitmap,
OnPictureCallback pictureCallback)
系统相机拍照(不包含特效)
该接口为异步接口,通过
OnPictureCallback#onPicture(byte[]) 返回图像数据;
再根据是否转换为 bitmap 回调OnPictureCallback.onPicture(Bitmap) |
int |
updateAnimationFilter(EffectFilter effectFilter)
更新动效滤镜,通过
EffectFilter.Builder 来构建滤镜资源对象 |
captureId, removeBorder, setBorderParam, setProperty, updateLayout
void setCamera(CameraType camera)
switchCamera()
camera
- CameraType.BACK
,
CameraType.FRONT
void setDisplayView(SurfaceView displayView)
SurfaceView
displayView
- void setCameraCaptureDataMode(int captureDataMode)
captureDataMode
- CameraCaptureDataMode
int addPaster(EffectPaster effectPaster)
setRotation(int)
实现。rotation的具体计算方式,请参考Demo中的代码。
添加普通动图不能使用该接口,而需要使用addPaster(EffectPaster, float, float, float, float, float, boolean)
effectPaster
- EffectPaster
int addPaster(EffectPaster effectPaster, float sx, float sy, float sw, float sh, float rotation, boolean flip)
AliyunIRecorder#setEffectView(float, float, float, float, EffectBase)
的执行效果会和此函数的执行效果进行叠加effectPaster
- sx
- 位置信息的x坐标(相对输出大小的比例值)sy
- 位置信息的y坐标(相对输出大小的比例值)sw
- 尺寸信息的宽度(相对输出大小的比例值)sh
- 尺寸信息的高度(相对输出大小的比例值)rotation
- 弧度flip
- 是否反转setEffectView(float, float, float, float, EffectBase)
void removePaster(EffectPaster effectPaster)
effectPaster
- int addImage(EffectImage effectImage)
setEffectView(float, float, float, float, EffectBase)
调整贴图的位置effectImage
- void removeImage(EffectImage effectImage)
effectImage
- int applyFilter(EffectFilter effectFilter)
effectFilter
- void removeFilter()
int applyAnimationFilter(EffectFilter effectFilter)
EffectFilter.Builder
来构建滤镜资源对象effectFilter
- int updateAnimationFilter(EffectFilter effectFilter)
EffectFilter.Builder
来构建滤镜资源对象effectFilter
- void removeAnimationFilter(EffectFilter effectFilter)
effectFilter
- int getCameraCount()
void setCameraParam(CameraParam cameraParam)
cameraParam
- CameraParam
int switchCamera()
FlashType switchLight()
FlashType.AUTO
,
FlashType.OFF
,
FlashType.ON
boolean setLight(FlashType flashType)
flashType
- int setZoom(float rate)
rate
- int setExposureCompensationRatio(float value)
value
- void setFocusMode(int mode)
mode
- CameraParam.FOCUS_MODE_CONTINUE
,
CameraParam.FOCUS_MODE_AUTO
@Deprecated void setFocus(Point point)
#setFocus(Point
point
- 点击事件时获取的屏幕坐标的绝对值void setFocus(float xRatio, float yRatio)
setFocusMode(int)
的参数为CameraParam.FOCUS_MODE_AUTO
时有效xRatio
- 坐标点x方向上相对预览显示窗口(并非屏幕大小)的比例值yRatio
- 坐标点y方向上相对预览显示窗口(并非屏幕大小)的比例值int getBeautyLevel()
void setBeautyLevel(int level)
level
- [0, 100], 0表示没有美颜,100表示最大美颜度void setBeautyStatus(boolean on)
on
- true:开, false:关int setEffectView(float xRatio, float yRatio, float widthRatio, float heightRatio, EffectBase effectBase)
xRatio
- 位置信息的x坐标(比例值)yRatio
- 位置信息的y坐标(比例值)widthRatio
- 大小信息的宽度(比例值)heightRatio
- 大小信息的高度(比例值)effectBase
- 对应的特效素材void setOnFrameCallback(OnFrameCallback callback)
callback
- OnFrameCallback
void setOnChoosePictureSizeCallBack(OnChoosePictureSizeCallback callback)
callback
- int setFaces(float[][] faces)
faces
- nx6的二维数组,6表示6个特征点
point[i][0] => LEFT_EYE_X 左眼X
point[i][1] => LEFT_EYE_Y 左眼Y
point[i][2] => RIGHT_EYE_X 右眼X
point[i][3] => RIGHT_EYE_Y 右眼Y
point[i][4] => MOUTH_X 嘴部X
point[i][5] => MOUTH_Y 嘴部Y
表示第i张脸的6个特征点。void setRotation(int rotation)
private int getSensorRotation() { int orientation = orientationDetector.getOrientation(); int rotation = 90; if (orientation >= 45 && orientation < 135) { rotation = 180; } if (orientation >= 135 && orientation < 225) { rotation = 270; } if (orientation >= 225 && orientation < 315) { rotation = 0; } if (mCameraType == CameraType.FRONT) { if (rotation != 0) { rotation = 360 - rotation; } } return rotation; }
rotation
- Do not use this method to control the angle when performing facial recognition or recording.setFaceDetectRotation(int)
,
setRecordRotation(int)
void setFaceDetectRotation(int rotation)
setRecordRotation(int)
,
setRotation(int)
void setRecordRotation(int rotation)
AliyunIRecorder#setRotation(int)
,
AliyunIRecorder#setFaceDetectRotation(int)
void setOnTextureIdCallback(OnTextureIdCallback callback)
callback
- OnTextureIdCallback
void setOnFaceDetectInfoListener(OnFaceDetectInfoListener listener)
OnFaceDetectInfoListener.onFaceInfoChange(FaceDetectInfo)
listener
- float getCurrentExposureCompensationRatio()
void takePhoto(boolean needBitmap, OnPictureCallback pictureCallback)
OnPictureCallback#onPicture(byte[])
返回图像数据;
再根据是否转换为 bitmap 回调OnPictureCallback.onPicture(Bitmap)
needBitmap
- 是否需要生成BitmappictureCallback
- 数据回调接口void snapshot(boolean needBitmap, OnPictureCallback pictureCallback)
OnPictureCallback#onPicture(byte[])
返回图像数据;
再根据是否转换为 bitmap 回调OnPictureCallback.onPicture(Bitmap)
needBitmap
- 是否需要生成BitmappictureCallback
- 数据回调接口void needFaceTrackInternal(boolean need)
need
- int setFaceTrackInternalModelPath(java.lang.String path)
path
- AliyunErrorCode.OK
-成功
AliyunErrorCode.ERROR_INVALID_ARGUMENTS
-失败,文件无效(文件路径错误,或者文件损坏/不完整)void setFaceTrackInternalMaxFaceCount(int maxFaceCount)
maxFaceCount
- void setShutterSound(boolean bNeedShutterSound)
bNeedShutterSound
- true: 有拍照时的咔嚓声, false: 无拍照时的咔嚓声;
默认为 true.void setAutoPreviewAfterTakePhoto(boolean autoPreviewAfterTakePhoto)
autoPreviewAfterTakePhoto
- true: 拍照后启动预览, false: 拍照后停留在拍完后的照片;
默认为 true.takePhoto(boolean, OnPictureCallback)
java.util.List<Camera.Size> getSupportedPictureSize()
java.util.SortedSet<Size> getSupportedPictureSizes()
int setPictureSize(int width, int height)
width
- height
- int startPreviewAfterTakePicture()
拍照结束后是否自启动预览setAutoPreviewAfterTakePhoto(boolean)
int resizePreviewSize(int width, int height)
width
- 预览宽度height
- 预览高度void setOutputFlip(boolean flip)
flip
- 是否镜像