Raj*_*epe 15 android byte focus android-intent android-camera
我正在尝试制作一个自定义相机应用程序,我想让用户可以在此应用程序中选择焦点模式.
对焦模式是自动和触摸对焦
如果我们想在相机中使用触摸式对焦,那么如何才能开始?
Zit*_*hen 16
该功能取决于软件/硬件/制造,我的建议是你首先找到像Android 4.x一样闪过Galaxy Nexus的手机,然后尝试android.hardware.Camera.Parameters.getMaxNumFocusAreas()就可以了,如果返回值大于零然后你很幸运,然后可以使用setFocusAreas()来实现"触摸聚焦"功能.
为什么:
在旧的Android版本中,没有用于设置焦点区域的公共API.虽然许多制造商设法创建自己的API和实现,但他们不会分享.
Android在API级别14中引入了重点领域API,但手机制造商可能会选择不实施它(即选择坚持自己的解决方案).要检查API是否受支持,您可以先调用getMaxNumFocusAreasa(),如果它返回一个正整数,表示手机确实实现了API,您可以继续在相机应用程序中启用"触摸焦点"功能.(API也是"面部检测"功能的推动者之一,当识别出面部时,相机应用程序使用API让相机自动对焦于它们.)
您可以参考vanilla Android Camera应用程序源代码,了解如何正确使用API.
参考文献:
mInitialParams.getMaxNumFocusAreas()
问候
陈子腾
试试这个:
public void takePhoto(File photoFile, String workerName, int width, int height, int quality) {
if (getAutoFocusStatus()){
camera.autoFocus(new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
});
}else{
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
Run Code Online (Sandbox Code Playgroud)
但是,我也看到了这个,可能更准确:
if (getAutoFocusStatus()){
camera.autoFocus(new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
if(success) camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
});
}else{
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
Run Code Online (Sandbox Code Playgroud)
最后一个在聚焦成功完成时拍摄照片.它适用于QR扫描码.我认为这同样适用于这种情况.
它已经实现但是如果我想添加触摸来聚焦,可以修改它吗?
public void takePhoto(File photoFile, String workerName, int width, int height, int quality) {
if (getAutoFocusStatus()){
camera.autoFocus(new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
});
}else{
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
this.photoFile = photoFile;
this.workerName = workerName;
this.imageOutputWidth = width;
this.imageOutputHeight = height;
}
public void takePhoto(File photoFile, int width, int height, int quality) {
takePhoto(photoFile, null, width, height, quality);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29115 次 |
最近记录: |