- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试创建我自己的相机 View ,除了自动对焦之外,我的一切都正常,我似乎无法弄清楚为什么它不起作用。这是我的 CameraView.java 代码
public class CameraView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder surface_Holder;
private Camera main_Camera;
boolean on;
public CameraView(Context context, Camera camera){
super(context);
main_Camera = camera;
main_Camera.setDisplayOrientation(90);
surface_Holder = getHolder();
surface_Holder.addCallback(this);
surface_Holder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL);
}
public boolean isOn(){
return on;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try{
main_Camera.setPreviewDisplay(holder);
main_Camera.startPreview();
}catch (Exception e){
Log.d("Error", "Canmera error on surfaceCreated" + e.getMessage());
main_Camera.release();
main_Camera = null;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if(holder.getSurface()==null){
return;
}
try{
main_Camera.stopPreview();
}catch (Exception e){
}
try{
main_Camera.setPreviewDisplay(surface_Holder);
main_Camera.startPreview();
}catch (IOException e){
Log.d("Error", "Camera error on surfaceChanged " + e.getMessage());
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
main_Camera.setPreviewCallback(null);
main_Camera.stopPreview();
main_Camera.release();
main_Camera= null;
}
}
在我的 list 中,我有以下内容:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
最佳答案
如果你添加了 <uses-feature android:name="android.hardware.camera.autofocus" />
对于您的 list ,这并不意味着相机会制作 autofocus
.这意味着您允许您的应用使用负责自动对焦的相机硬件或软件。
The purpose of a declaration is to inform any external entity of the set of hardware and software features on which your application depends.
要将相机设置为对焦,您可以将此方法添加到您的 CameraView
类:
private void setFocus(String mParameter) {
Camera.Parameters mParameters = mCamera.getParameters();
mParameters.setFocusMode(mParameter);
mCamera.setParameters(mParameters);
}
然后在surfaceChanged()
中调用这个方法像这样:
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
...//your code here
// Set focus mode to continuous picture
setFocus(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
// Start camera preview
mCamera.startPreview();
}
您可以在这些之间进行选择 focus parameters
:
String FOCUS_MODE_AUTO Auto-focus mode.
String FOCUS_MODE_CONTINUOUS_PICTURE Continuous auto focus mode intended for taking pictures.
String FOCUS_MODE_CONTINUOUS_VIDEO Continuous auto focus mode intended for video recording.
String FOCUS_MODE_EDOF Extended depth of field (EDOF).
String FOCUS_MODE_FIXED Focus is fixed.
String FOCUS_MODE_INFINITY Focus is set at infinity.
String FOCUS_MODE_MACRO Macro (close-up) focus mode.
关于java - 创建相机 View 后,Android 自动对焦不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34490276/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!