Fix demo app null pointer, add null annotations

pull/360/head
Mattia Iavarone 6 years ago
parent bb0e08c731
commit 1b5a20b034
  1. 51
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
  2. 4
      cameraview/src/main/options/com/otaliastudios/cameraview/Gesture.java
  3. 6
      demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java
  4. 4
      demo/src/main/java/com/otaliastudios/cameraview/demo/Control.java
  5. 4
      demo/src/main/java/com/otaliastudios/cameraview/demo/ControlView.java

@ -445,7 +445,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* @param action which action should be assigned * @param action which action should be assigned
* @return true if this action could be assigned to this gesture * @return true if this action could be assigned to this gesture
*/ */
public boolean mapGesture(@NonNull Gesture gesture, GestureAction action) { public boolean mapGesture(@NonNull Gesture gesture, @NonNull GestureAction action) {
GestureAction none = GestureAction.NONE; GestureAction none = GestureAction.NONE;
if (gesture.isAssignableTo(action)) { if (gesture.isAssignableTo(action)) {
mGestureMap.put(gesture, action); mGestureMap.put(gesture, action);
@ -490,6 +490,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* @param gesture which gesture to inspect * @param gesture which gesture to inspect
* @return mapped action * @return mapped action
*/ */
@NonNull
public GestureAction getGestureAction(@NonNull Gesture gesture) { public GestureAction getGestureAction(@NonNull Gesture gesture) {
return mGestureMap.get(gesture); return mGestureMap.get(gesture);
} }
@ -583,7 +584,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param owner the owner activity or fragment * @param owner the owner activity or fragment
*/ */
public void setLifecycleOwner(LifecycleOwner owner) { public void setLifecycleOwner(@NonNull LifecycleOwner owner) {
if (mLifecycle != null) mLifecycle.removeObserver(this); if (mLifecycle != null) mLifecycle.removeObserver(this);
mLifecycle = owner.getLifecycle(); mLifecycle = owner.getLifecycle();
mLifecycle.addObserver(this); mLifecycle.addObserver(this);
@ -616,7 +617,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* @return true if we can go on, false otherwise. * @return true if we can go on, false otherwise.
*/ */
@SuppressLint("NewApi") @SuppressLint("NewApi")
protected boolean checkPermissions(Mode mode, Audio audio) { protected boolean checkPermissions(@NonNull Mode mode, @NonNull Audio audio) {
checkPermissionsManifestOrThrow(mode, audio); checkPermissionsManifestOrThrow(mode, audio);
// Manifest is OK at this point. Let's check runtime permissions. // Manifest is OK at this point. Let's check runtime permissions.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return true; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return true;
@ -641,7 +642,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* If the developer did not add this to its manifest, throw and fire warnings. * If the developer did not add this to its manifest, throw and fire warnings.
* (Hoping this is not caught elsewhere... we should test). * (Hoping this is not caught elsewhere... we should test).
*/ */
private void checkPermissionsManifestOrThrow(Mode mode, Audio audio) { private void checkPermissionsManifestOrThrow(@NonNull Mode mode, @NonNull Audio audio) {
if (mode == Mode.VIDEO && audio == Audio.ON) { if (mode == Mode.VIDEO && audio == Audio.ON) {
try { try {
PackageManager manager = getContext().getPackageManager(); PackageManager manager = getContext().getPackageManager();
@ -695,7 +696,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param control desired value * @param control desired value
*/ */
public void set(Control control) { public void set(@NonNull Control control) {
if (control instanceof Audio) { if (control instanceof Audio) {
setAudio((Audio) control); setAudio((Audio) control);
} else if (control instanceof Facing) { } else if (control instanceof Facing) {
@ -802,7 +803,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param gridMode desired grid mode * @param gridMode desired grid mode
*/ */
public void setGrid(Grid gridMode) { public void setGrid(@NonNull Grid gridMode) {
mGridLinesLayout.setGridMode(gridMode); mGridLinesLayout.setGridMode(gridMode);
} }
@ -811,6 +812,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Gets the current grid mode. * Gets the current grid mode.
* @return the current grid mode * @return the current grid mode
*/ */
@NonNull
public Grid getGrid() { public Grid getGrid() {
return mGridLinesLayout.getGridMode(); return mGridLinesLayout.getGridMode();
} }
@ -842,7 +844,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param hdr desired hdr value * @param hdr desired hdr value
*/ */
public void setHdr(Hdr hdr) { public void setHdr(@NonNull Hdr hdr) {
mCameraController.setHdr(hdr); mCameraController.setHdr(hdr);
} }
@ -859,7 +861,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param preview desired preview engine * @param preview desired preview engine
*/ */
public void setPreview(Preview preview) { public void setPreview(@NonNull Preview preview) {
mPreview = preview; mPreview = preview;
} }
@ -868,6 +870,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Gets the current hdr value. * Gets the current hdr value.
* @return the current hdr value * @return the current hdr value
*/ */
@NonNull
public Hdr getHdr() { public Hdr getHdr() {
return mCameraController.getHdr(); return mCameraController.getHdr();
} }
@ -894,7 +897,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param location current location * @param location current location
*/ */
public void setLocation(Location location) { public void setLocation(@Nullable Location location) {
mCameraController.setLocation(location); mCameraController.setLocation(location);
} }
@ -921,7 +924,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param whiteBalance desired white balance behavior. * @param whiteBalance desired white balance behavior.
*/ */
public void setWhiteBalance(WhiteBalance whiteBalance) { public void setWhiteBalance(@NonNull WhiteBalance whiteBalance) {
mCameraController.setWhiteBalance(whiteBalance); mCameraController.setWhiteBalance(whiteBalance);
} }
@ -930,6 +933,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Returns the current white balance behavior. * Returns the current white balance behavior.
* @return white balance value. * @return white balance value.
*/ */
@NonNull
public WhiteBalance getWhiteBalance() { public WhiteBalance getWhiteBalance() {
return mCameraController.getWhiteBalance(); return mCameraController.getWhiteBalance();
} }
@ -943,7 +947,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param facing a facing value. * @param facing a facing value.
*/ */
public void setFacing(Facing facing) { public void setFacing(@NonNull Facing facing) {
mCameraController.setFacing(facing); mCameraController.setFacing(facing);
} }
@ -952,6 +956,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Gets the facing camera currently being used. * Gets the facing camera currently being used.
* @return a facing value. * @return a facing value.
*/ */
@NonNull
public Facing getFacing() { public Facing getFacing() {
return mCameraController.getFacing(); return mCameraController.getFacing();
} }
@ -989,7 +994,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* @param flash desired flash mode. * @param flash desired flash mode.
*/ */
public void setFlash(Flash flash) { public void setFlash(@NonNull Flash flash) {
mCameraController.setFlash(flash); mCameraController.setFlash(flash);
} }
@ -998,6 +1003,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Gets the current flash mode. * Gets the current flash mode.
* @return a flash mode * @return a flash mode
*/ */
@NonNull
public Flash getFlash() { public Flash getFlash() {
return mCameraController.getFlash(); return mCameraController.getFlash();
} }
@ -1011,7 +1017,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param audio desired audio value * @param audio desired audio value
*/ */
public void setAudio(Audio audio) { public void setAudio(@NonNull Audio audio) {
if (audio == getAudio() || isStopped()) { if (audio == getAudio() || isStopped()) {
// Check did took place, or will happen on start(). // Check did took place, or will happen on start().
@ -1035,6 +1041,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Gets the current audio value. * Gets the current audio value.
* @return the current audio value * @return the current audio value
*/ */
@NonNull
public Audio getAudio() { public Audio getAudio() {
return mCameraController.getAudio(); return mCameraController.getAudio();
} }
@ -1062,7 +1069,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param mode desired session type. * @param mode desired session type.
*/ */
public void setMode(Mode mode) { public void setMode(@NonNull Mode mode) {
if (mode == getMode() || isStopped()) { if (mode == getMode() || isStopped()) {
// Check did took place, or will happen on start(). // Check did took place, or will happen on start().
@ -1086,6 +1093,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Gets the current mode. * Gets the current mode.
* @return the current mode * @return the current mode
*/ */
@NonNull
public Mode getMode() { public Mode getMode() {
return mCameraController.getMode(); return mCameraController.getMode();
} }
@ -1158,7 +1166,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param cameraListener a listener for events. * @param cameraListener a listener for events.
*/ */
public void addCameraListener(CameraListener cameraListener) { public void addCameraListener(@Nullable CameraListener cameraListener) {
if (cameraListener != null) { if (cameraListener != null) {
mListeners.add(cameraListener); mListeners.add(cameraListener);
} }
@ -1170,7 +1178,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param cameraListener a listener for events. * @param cameraListener a listener for events.
*/ */
public void removeCameraListener(CameraListener cameraListener) { public void removeCameraListener(@Nullable CameraListener cameraListener) {
if (cameraListener != null) { if (cameraListener != null) {
mListeners.remove(cameraListener); mListeners.remove(cameraListener);
} }
@ -1192,7 +1200,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param processor a frame processor. * @param processor a frame processor.
*/ */
public void addFrameProcessor(FrameProcessor processor) { public void addFrameProcessor(@Nullable FrameProcessor processor) {
if (processor != null) { if (processor != null) {
mFrameProcessors.add(processor); mFrameProcessors.add(processor);
} }
@ -1204,7 +1212,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param processor a frame processor * @param processor a frame processor
*/ */
public void removeFrameProcessor(FrameProcessor processor) { public void removeFrameProcessor(@Nullable FrameProcessor processor) {
if (processor != null) { if (processor != null) {
mFrameProcessors.remove(processor); mFrameProcessors.remove(processor);
} }
@ -1296,7 +1304,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* @param durationMillis recording max duration * @param durationMillis recording max duration
* *
*/ */
public void takeVideo(File file, int durationMillis) { public void takeVideo(@Nullable File file, int durationMillis) {
final int old = getVideoMaxDuration(); final int old = getVideoMaxDuration();
addCameraListener(new CameraListener() { addCameraListener(new CameraListener() {
@Override @Override
@ -1309,7 +1317,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
takeVideo(file); takeVideo(file);
} }
public void takeVideoSnapshot(File file, int durationMillis) { public void takeVideoSnapshot(@Nullable File file, int durationMillis) {
final int old = getVideoMaxDuration(); final int old = getVideoMaxDuration();
addCameraListener(new CameraListener() { addCameraListener(new CameraListener() {
@Override @Override
@ -1462,7 +1470,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* *
* @param codec requested video codec * @param codec requested video codec
*/ */
public void setVideoCodec(VideoCodec codec) { public void setVideoCodec(@NonNull VideoCodec codec) {
mCameraController.setVideoCodec(codec); mCameraController.setVideoCodec(codec);
} }
@ -1471,6 +1479,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Gets the current encoder for video recordings. * Gets the current encoder for video recordings.
* @return the current video codec * @return the current video codec
*/ */
@NonNull
public VideoCodec getVideoCodec() { public VideoCodec getVideoCodec() {
return mCameraController.getVideoCodec(); return mCameraController.getVideoCodec();
} }

@ -1,6 +1,8 @@
package com.otaliastudios.cameraview; package com.otaliastudios.cameraview;
import android.support.annotation.NonNull;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -74,7 +76,7 @@ public enum Gesture {
private List<GestureAction> mControls; private List<GestureAction> mControls;
boolean isAssignableTo(GestureAction control) { boolean isAssignableTo(@NonNull GestureAction control) {
return control == GestureAction.NONE || mControls.contains(control); return control == GestureAction.NONE || mControls.contains(control);
} }

@ -42,7 +42,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
camera = findViewById(R.id.camera); camera = findViewById(R.id.camera);
camera.setLifecycleOwner(this); camera.setLifecycleOwner(this);
camera.addCameraListener(new CameraListener() { camera.addCameraListener(new CameraListener() {
public void onCameraOpened(CameraOptions options) { onOpened(); } public void onCameraOpened(CameraOptions options) { onOpened(options); }
public void onPictureTaken(PictureResult result) { onPicture(result); } public void onPictureTaken(PictureResult result) { onPicture(result); }
public void onVideoTaken(VideoResult result) { onVideo(result); } public void onVideoTaken(VideoResult result) { onVideo(result); }
public void onCameraError(@NonNull CameraException exception) { public void onCameraError(@NonNull CameraException exception) {
@ -81,11 +81,11 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
Toast.makeText(this, content, length).show(); Toast.makeText(this, content, length).show();
} }
private void onOpened() { private void onOpened(CameraOptions options) {
ViewGroup group = (ViewGroup) controlPanel.getChildAt(0); ViewGroup group = (ViewGroup) controlPanel.getChildAt(0);
for (int i = 0; i < group.getChildCount(); i++) { for (int i = 0; i < group.getChildCount(); i++) {
ControlView view = (ControlView) group.getChildAt(i); ControlView view = (ControlView) group.getChildAt(i);
view.onCameraOpened(camera); view.onCameraOpened(camera, options);
} }
} }

@ -1,6 +1,7 @@
package com.otaliastudios.cameraview.demo; package com.otaliastudios.cameraview.demo;
import android.graphics.Color; import android.graphics.Color;
import android.support.annotation.NonNull;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -64,8 +65,7 @@ public enum Control {
return last; return last;
} }
public Collection<?> getValues(CameraView view) { public Collection<?> getValues(CameraView view, @NonNull CameraOptions options) {
CameraOptions options = view.getCameraOptions();
switch (this) { switch (this) {
case WIDTH: case WIDTH:
case HEIGHT: case HEIGHT:

@ -57,8 +57,8 @@ public class ControlView<Value> extends LinearLayout implements Spinner.OnItemSe
} }
@SuppressWarnings("all") @SuppressWarnings("all")
public void onCameraOpened(CameraView view) { public void onCameraOpened(CameraView view, CameraOptions options) {
values = new ArrayList(control.getValues(view)); values = new ArrayList(control.getValues(view, options));
value = (Value) control.getCurrentValue(view); value = (Value) control.getCurrentValue(view);
valuesStrings = new ArrayList<>(); valuesStrings = new ArrayList<>();
for (Value value : values) { for (Value value : values) {

Loading…
Cancel
Save