手順
大体の手順は以下のスレッドの通り。
https://developer.vuforia.com/forum/unity-extension-technical-discussion/camera-focus-mode-android-unity
- ARCameraゲームオブジェクトに上記のCameraFocusController.csをアタッチ。
それでも実行されない
- Assets>Plugins>Android>AndroidManifest.xmlに 、android.hardware.camera.autofocusを追加。
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
それでも実行されない
問題発生状況
- Vuforia 6.2
- Unity 5.4.4f1 64bit (windows10)
- Sumsung GalaxyS7
以上でVuforiaアプリを起動すると、カメラのオートフォーカスが実行されない。
調べるにGalaxySシリーズで発生している様子。
https://developer.vuforia.com/forum/android/focus-problems-android
対応
上記のCameraFocusController.csに、タップ時にフォーカスを手動実行させる記述を追加。
using UnityEngine;
using System.Collections;
using Vuforia;
public class CameraFocusController : MonoBehaviour {
private bool mVuforiaStarted = false;
void Start ()
{
VuforiaARController vuforia = VuforiaARController.Instance;
if (vuforia != null)
vuforia.RegisterVuforiaStartedCallback(StartAfterVuforia);
}
private void StartAfterVuforia()
{
mVuforiaStarted = true;
SetAutofocus();
}
void OnApplicationPause(bool pause)
{
if (!pause)
{
// App resumed
if (mVuforiaStarted)
{
SetAutofocus();
}
}
}
private void SetAutofocus()
{
if (CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO))
{
Debug.Log("Autofocus set");
}
else
{
Debug.Log("this device doesn't support auto focus");
}
}
void Update()
{
foreach (Touch touch in Input.touches)
{
if (touch.phase == TouchPhase.Began)
{
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO);
Debug.Log("focus");
}
}
}
}