Xamarin.Androidにて、カメラで撮影する画像をリアルタイムプレビューするようなアプリを作成しています。
そこで、以下のようにSurfaceviewクラスを定義し、MainActivityのOnCreateにて表示するようにコーディングしました。
public class CameraView : SurfaceView, ISurfaceHolderCallback {
Camera camera;
public CameraView (Context context, Camera camera) : base(context) { this.camera = camera; Holder.AddCallback(this); // deprecated setting, but required on // Android versions prior to 3.0 Holder.SetType(SurfaceType.PushBuffers); } public void SurfaceChanged (ISurfaceHolder holder, Android.Graphics.Format format, int width, int height) { if (Holder.Surface == null){ // preview surface does not exist return; } try { camera.StopPreview(); } catch (Exception e){ } try { camera.SetPreviewDisplay(Holder); camera.StartPreview(); } catch (Exception e){ Android.Util.Log.Debug ("CameraView", e.ToString ()); } } public void SurfaceCreated (ISurfaceHolder holder) { try { camera.SetPreviewDisplay(holder); camera.StartPreview(); } catch (Exception e) { Android.Util.Log.Debug ("CameraView", e.ToString ()); } } public void SurfaceDestroyed (ISurfaceHolder holder) { }
}
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button>(Resource.Id.myButton); this.mySurfaceView = FindViewById<SurfaceView>(Resource.Id.surfaceview1); this.mySurfaceView.Holder.AddCallback(new CameraView(this, cm));
}
このままデバッグした結果、Activity起動時に一度だけ、さつえいされた画像がSurfaceViewに表示され、それ以降は画像が変わりません。
リアルタイムで撮影されている画像をSurfaceViewに表示するにはどのように記述すべきでしょうか?
お手数おかけしますが、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/09 14:04