2016-11-16 2 views
0

Я разрабатываю приложение для Android с Xamarin. Мне нужно зафиксировать код QR с телефоном. Когда пользователь нажимает на экран, камера выполняет автоматическую фокусировку.Невозможно выполнить автоматическую фокусировку с помощью камеры

Существует мой код:

public class MainActivity 
{ 
    TextureView _textureView; 
    Camera _camera; 

    protected override void OnCreate(Bundle bundle) 
    { 
     _camera = Camera.Open(); 

     _textureView = FindViewById<TextureView>(Resource.Id.previewView); 
     _textureView.SurfaceTextureListener = this; 
     _textureView.Click += new EventHandler(clickFocus); 
    } 

    private void clickFocus(object sender, EventArgs e) 
    { 
     try 
     { 
      _camera.AutoFocus(this); 
     } 
     catch (Exception ex) 
     { 
     } 
    } 
} 

На другой класс:

private void _mainactivity_onFocus(object sender, EventArgs e) 
{ 
    bool focus = (bool)sender; 

    if (!focus) 
    { 
     Activity.RunOnUiThread(() => 
     { 
      // _ma is the MainActivity 
      Toast.MakeText(_ma, Resource.String.camerafocusfailed, ToastLength.Short).Show(); 
     }); 
    } 
} 

Я стараюсь с Nexus 5, этот код работает хорошо. Но с Sony Xperia Z3 compact всегда есть ошибка camerafocusfailed

Что я могу сделать?

ответ

0

Хотя я не уверен, как вы можете отдать отправителя на bool ... вы можете попытаться выяснить, поддерживает ли камера автофокус.

var autoFocus = PackageManager.HasSystemFeature("android.hardware.camera.autofocus"); 
+0

На Nexus 5 мой код работает, я стараюсь сосредоточиться на очень близкой поверхности, и фокус не удался. С «нормальным» расстоянием он работает. С компакт-диском Z3 он не прошел. Предварительный просмотр изменяется (пытается сфокусироваться), но всегда терпит неудачу. –