2つのSurfaceViewを含むFrameLayoutがあります。1つはカメラのプレビューを表示し、もう1つは描画に使用するカスタムサーフェスビューです。問題は、サーフェスビューが表示されないことです。カメラがプレビューを開始する行をコメントアウトすると、黒の背景にコメントアウトされます。これは、サーフェスビューが適切に配置されていることを示していますが、カメラプレビューが描画されるときに、問題が発生していると思われます。
カメラビュー:
public CameraView(Context context, AttributeSet a) {
super(context, a);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
カスタムビュー:
public InclinaisonGauge(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
getHolder().setFormat(PixelFormat.TRANSLUCENT);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
run = true;
updateThread = new Thread()
{
public void run()
{
Canvas c = null;
final SurfaceHolder inclHolder = getHolder();
while (run) {
try {
c = inclHolder.lockCanvas();
if(c!=null)
{
synchronized (inclHolder) {
onDraw(c);
}
}
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
inclHolder.unlockCanvasAndPost(c);
}
}
}
}
};
そして、カスタムビューでこの非常に単純な描画方法を使用して、フレームレートの問題ではないことを確認します
public void doDraw(final Canvas canvas, final boolean bigSize, float daDirection)
{
canvas.drawARGB(255, 255, 255, 255);
}
誰かがこれを経験しましたか?
ありがとう