把SurfaceView隱藏一次,再顯示一次就行了
SurfaceView.visibility=View.GONE
SurfaceView.visibility=View.VISIBLE
解釋一下:
surfaceHolder=sv.holder
surfaceHolder?.addCallback(this)
surfaceHolder?.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS)
一般我們都這么初始化surfaceHolder,然后在callback會調(diào)中初始化camear
override fun surfaceChanged(holder:SurfaceHolder?, format:Int, width:Int, height:Int) {
}
override fun surfaceDestroyed(holder:SurfaceHolder?) {
}
override fun surfaceCreated(holder:SurfaceHolder?) {
}
這兒就會走surfaceCreated,在里面初始camera,但是在走這個方法之后,發(fā)現(xiàn)還沒申請權(quán)限,就去申請權(quán)限,權(quán)限申請成功了后,卻沒有預(yù)覽界面.
因為這兒已經(jīng)不會再走一次callback了,但是呢,只需要改變一次預(yù)覽界面的大小啊什么的就會再走callback,所以就有了開始的隱藏一次再顯示一次,就會再調(diào)用callback了,這樣就能再次初始化camera了,預(yù)覽界面就有了