이전 활동으로 돌아가는 방법을 알고 있습니다. 현재 활동 (VideoActivity.java
)에 MediaRecorder
에 비디오를 기록하려면 SurfaceView
이 있습니다. 내가 이전 활동으로 돌아갑니다 finish()
을 구현할 때마다 아래 로그 캣 같은 오류의 원인 :SurfaceView를 사용하는 현재 활동이있을 때 이전 활동으로 돌아 오는 방법?
E/BufferQueueProducer: [SurfaceView] dequeueBuffer: BufferQueue has been abandoned
E/EmulatedCamera_Preview: onNextFrameAvailable: Unable to dequeue preview window buffer: 19 -> No such device
로그 캣은 그러므로 난 그냥이이 선을 보여, 매우 긴 목록을 위의 2 라인을 반복하게된다.
위 logcat 외에, VideoActivity.java
을 입력 할 때마다 응용 프로그램이 중지됩니다. 이 코드는 잘 작동
public class VideoActivity extends AppCompatActivity implements SurfaceHolder.Callback{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
surfaceHolder = videoSurface.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isRecording){
stopRecording();
finish();
}else{
finish();
}
}
});
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try{
mCamera = Camera.open();
}catch (RuntimeException ex){
ex.printStackTrace();
}
try{
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
}catch (Exception e){
e.printStackTrace();
}
prepareRecorder();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mRecorder.reset();
mRecorder.release();
mCamera.release();
// once the objects have been released they can't be reused
mRecorder = null;
mCamera = null; }
}
내가 이전 활동으로 돌아 전에 :이 내가
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isRecording){
stopRecording();
finish();
}else{
finish();
}
}
});
기본적으로 나는이 같은 서피스 뷰 SurfaceView를 구현하는 이전 작업으로 돌아 구현하는 방법이다
finish()
을 사용하십시오.
내 질문에 액서스가 SurfaceView
인 경우 어떻게 이전 활동으로 돌아갈 수 있습니까? 나에게 올바른 방법을 보여주십시오.