相关疑难解决方法(0)

Android Canvas锁定会抛出IllegalArgumentException

我正在尝试实现我自己的自定义SurfaceView,当触摸时,在用户触摸屏幕的位置绘制一个圆圈.但是,当我打电话时,mSurfaceHolder.lockCanvas()我得到一个例外.每当画布锁定时,就会出现非法参数.示例代码发布在下面.

public class TapArea extends SurfaceView implements SurfaceHolder.Callback {
    private static final int TAP_RADIUS = 4;
    private boolean mLoaded = false;
    private Paint mTapPaint;
    private SurfaceHolder mSurfaceHolder;

    protected OnTouchListener mTouchEvent = new OnTouchListener() {
        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
            if (!mLoaded)
                return false;

            Canvas c = null;
            c = mSurfaceHolder.lockCanvas();
            drawTap(c, arg1);

            return true;
        }
    };

    public TapArea(Context context, AttributeSet attrs) {
        super(context, attrs);

        this.setOnTouchListener(mTouchEvent);
        mHandler = new Handler();
        mSurfaceHolder = getHolder();
        mSurfaceHolder.addCallback(this);
        mTapPaint = …
Run Code Online (Sandbox Code Playgroud)

java android android-layout

12
推荐指数
1
解决办法
2万
查看次数

Android在相机预览上绘制

我正在制作一个虚拟现实应用程序,摄像机应该检测到面部,找到它们并在摄像机预览中显示它们的位置.

我知道有3种方法可以做到,我想尽可能快地使用GLSurfaceView(根据这篇文章),但是目前我正在尝试使用相机用于预览的相同 SurfaceView.我的回调onFaceDetection就是这样:

public class MyActivity extends Activity implements SurfaceHolder.Callback, Camera.FaceDetectionListener {
    Camera camera;
    SurfaceView svPreview;
    SurfaceHolder previewHolder;
    TextView tvInfo;
    Paint red;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        svPreview = (SurfaceView) findViewById(R.id.svPreview);
        tvInfo = (TextView) findViewById(R.id.tvInfo);

        red = new Paint();
        red.setStyle(Paint.Style.STROKE);
        red.setStrokeWidth(3);

        previewHolder = svPreview.getHolder();
        previewHolder.addCallback(this);
        previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder arg0) {
        camera = Camera.open();
        try {
            camera.setDisplayOrientation(90);
            camera.setFaceDetectionListener(this);
            camera.setPreviewDisplay(previewHolder);
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void surfaceChanged(SurfaceHolder holder, …
Run Code Online (Sandbox Code Playgroud)

android glsurfaceview android-camera

8
推荐指数
2
解决办法
2万
查看次数