Fix some bugs

pull/37/head
Mattia Iavarone 8 years ago
parent fbd381c40f
commit 0424f2e2b1
  1. 1
      cameraview/src/androidTest/AndroidManifest.xml
  2. 14
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraControllerIntegrationTest.java
  3. 19
      cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java
  4. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java

@ -3,6 +3,7 @@
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application>
<activity

@ -94,7 +94,7 @@ public class CameraControllerIntegrationTest extends BaseTest {
//region test open/close
@Test
public void testOpenClose() {
public void testOpenClose() throws Exception {
assertFalse(controller.isCameraAvailable());
camera.start();
@ -248,14 +248,14 @@ public class CameraControllerIntegrationTest extends BaseTest {
public void testSetHdr() {
camera.start();
CameraOptions options = waitForOpen(true);
WhiteBalance[] values = WhiteBalance.values();
WhiteBalance oldValue = camera.getWhiteBalance();
for (WhiteBalance value : values) {
camera.setWhiteBalance(value);
Hdr[] values = Hdr.values();
Hdr oldValue = camera.getHdr();
for (Hdr value : values) {
camera.setHdr(value);
if (options.supports(value)) {
assertEquals(camera.getWhiteBalance(), value);
assertEquals(camera.getHdr(), value);
} else {
assertEquals(camera.getWhiteBalance(), oldValue);
assertEquals(camera.getHdr(), oldValue);
}
}
}

@ -67,8 +67,15 @@ class Camera1 extends CameraController {
@Override
public void onSurfaceAvailable() {
LOG.i("onSurfaceAvailable, size is", mPreview.getSurfaceSize());
if (shouldSetup()) {
mHandler.post(new Runnable() {
@Override
public void run() {
if (shouldSetup()) setup();
}
});
}
}
/**
* Preview surface did change its size. Compute a new preview size.
@ -340,6 +347,8 @@ class Camera1 extends CameraController {
@Override
void setVideoQuality(VideoQuality videoQuality) {
if (mIsCapturingVideo) {
// TODO: actually any call to getParameters() could fail while recording a video.
// See. https://stackoverflow.com/questions/14941625/correct-handling-of-exception-getparameters-failed-empty-parameters
throw new IllegalStateException("Can't change video quality while recording a video.");
}
@ -545,21 +554,21 @@ class Camera1 extends CameraController {
mVideoFile = videoFile;
if (mIsCapturingVideo) return false;
if (!isCameraAvailable()) return false;
Camera.Parameters params = mCamera.getParameters();
params.setVideoStabilization(false);
if (mSessionType == SessionType.VIDEO) {
mIsCapturingVideo = true;
initMediaRecorder();
try {
mMediaRecorder.prepare();
mMediaRecorder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
Exception m = e; // FileNotFoundException: Read only file system.
LOG.e("Error while starting MediaRecorder.", e);
mVideoFile = null;
mCamera.lock();
endVideo();
return false;
}
mMediaRecorder.start();
return true;
} else {
throw new IllegalStateException("Can't record video while session type is picture");
}

@ -1106,7 +1106,7 @@ public class CameraView extends FrameLayout {
*/
public void startCapturingVideo(File file) {
if (file == null) {
file = new File(getContext().getExternalFilesDir(null), "video.mp4");
file = new File(getContext().getFilesDir(), "video.mp4");
}
if (mCameraController.startVideo(file)) {
mUiHandler.post(new Runnable() {

Loading…
Cancel
Save