~paparazzi-uav/paparazzi/v5.0-manual

« back to all changes in this revision

Viewing changes to sw/ext/opencv_bebop/opencv/samples/android/tutorial-3-cameracontrol/src/org/opencv/samples/tutorial3/Tutorial3Activity.java

  • Committer: Paparazzi buildbot
  • Date: 2016-05-18 15:00:29 UTC
  • Revision ID: felix.ruess+docbot@gmail.com-20160518150029-e8lgzi5kvb4p7un9
Manual import commit 4b8bbb730080dac23cf816b98908dacfabe2a8ec from v5.0 branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.opencv.samples.tutorial3;
 
2
 
 
3
import java.text.SimpleDateFormat;
 
4
import java.util.Date;
 
5
import java.util.List;
 
6
import java.util.ListIterator;
 
7
 
 
8
import org.opencv.android.BaseLoaderCallback;
 
9
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
 
10
import org.opencv.android.LoaderCallbackInterface;
 
11
import org.opencv.android.OpenCVLoader;
 
12
import org.opencv.core.Mat;
 
13
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
 
14
 
 
15
import android.annotation.SuppressLint;
 
16
import android.app.Activity;
 
17
import android.hardware.Camera.Size;
 
18
import android.os.Bundle;
 
19
import android.os.Environment;
 
20
import android.util.Log;
 
21
import android.view.Menu;
 
22
import android.view.MenuItem;
 
23
import android.view.MotionEvent;
 
24
import android.view.SubMenu;
 
25
import android.view.SurfaceView;
 
26
import android.view.View;
 
27
import android.view.View.OnTouchListener;
 
28
import android.view.WindowManager;
 
29
import android.widget.Toast;
 
30
 
 
31
public class Tutorial3Activity extends Activity implements CvCameraViewListener2, OnTouchListener {
 
32
    private static final String TAG = "OCVSample::Activity";
 
33
 
 
34
    private Tutorial3View mOpenCvCameraView;
 
35
    private List<Size> mResolutionList;
 
36
    private MenuItem[] mEffectMenuItems;
 
37
    private SubMenu mColorEffectsMenu;
 
38
    private MenuItem[] mResolutionMenuItems;
 
39
    private SubMenu mResolutionMenu;
 
40
 
 
41
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
 
42
        @Override
 
43
        public void onManagerConnected(int status) {
 
44
            switch (status) {
 
45
                case LoaderCallbackInterface.SUCCESS:
 
46
                {
 
47
                    Log.i(TAG, "OpenCV loaded successfully");
 
48
                    mOpenCvCameraView.enableView();
 
49
                    mOpenCvCameraView.setOnTouchListener(Tutorial3Activity.this);
 
50
                } break;
 
51
                default:
 
52
                {
 
53
                    super.onManagerConnected(status);
 
54
                } break;
 
55
            }
 
56
        }
 
57
    };
 
58
 
 
59
    public Tutorial3Activity() {
 
60
        Log.i(TAG, "Instantiated new " + this.getClass());
 
61
    }
 
62
 
 
63
    /** Called when the activity is first created. */
 
64
    @Override
 
65
    public void onCreate(Bundle savedInstanceState) {
 
66
        Log.i(TAG, "called onCreate");
 
67
        super.onCreate(savedInstanceState);
 
68
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
 
69
 
 
70
        setContentView(R.layout.tutorial3_surface_view);
 
71
 
 
72
        mOpenCvCameraView = (Tutorial3View) findViewById(R.id.tutorial3_activity_java_surface_view);
 
73
 
 
74
        mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
 
75
 
 
76
        mOpenCvCameraView.setCvCameraViewListener(this);
 
77
    }
 
78
 
 
79
    @Override
 
80
    public void onPause()
 
81
    {
 
82
        super.onPause();
 
83
        if (mOpenCvCameraView != null)
 
84
            mOpenCvCameraView.disableView();
 
85
    }
 
86
 
 
87
    @Override
 
88
    public void onResume()
 
89
    {
 
90
        super.onResume();
 
91
        if (!OpenCVLoader.initDebug()) {
 
92
            Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
 
93
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
 
94
        } else {
 
95
            Log.d(TAG, "OpenCV library found inside package. Using it!");
 
96
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
 
97
        }
 
98
    }
 
99
 
 
100
    public void onDestroy() {
 
101
        super.onDestroy();
 
102
        if (mOpenCvCameraView != null)
 
103
            mOpenCvCameraView.disableView();
 
104
    }
 
105
 
 
106
    public void onCameraViewStarted(int width, int height) {
 
107
    }
 
108
 
 
109
    public void onCameraViewStopped() {
 
110
    }
 
111
 
 
112
    public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
 
113
        return inputFrame.rgba();
 
114
    }
 
115
 
 
116
    @Override
 
117
    public boolean onCreateOptionsMenu(Menu menu) {
 
118
        List<String> effects = mOpenCvCameraView.getEffectList();
 
119
 
 
120
        if (effects == null) {
 
121
            Log.e(TAG, "Color effects are not supported by device!");
 
122
            return true;
 
123
        }
 
124
 
 
125
        mColorEffectsMenu = menu.addSubMenu("Color Effect");
 
126
        mEffectMenuItems = new MenuItem[effects.size()];
 
127
 
 
128
        int idx = 0;
 
129
        ListIterator<String> effectItr = effects.listIterator();
 
130
        while(effectItr.hasNext()) {
 
131
           String element = effectItr.next();
 
132
           mEffectMenuItems[idx] = mColorEffectsMenu.add(1, idx, Menu.NONE, element);
 
133
           idx++;
 
134
        }
 
135
 
 
136
        mResolutionMenu = menu.addSubMenu("Resolution");
 
137
        mResolutionList = mOpenCvCameraView.getResolutionList();
 
138
        mResolutionMenuItems = new MenuItem[mResolutionList.size()];
 
139
 
 
140
        ListIterator<Size> resolutionItr = mResolutionList.listIterator();
 
141
        idx = 0;
 
142
        while(resolutionItr.hasNext()) {
 
143
            Size element = resolutionItr.next();
 
144
            mResolutionMenuItems[idx] = mResolutionMenu.add(2, idx, Menu.NONE,
 
145
                    Integer.valueOf(element.width).toString() + "x" + Integer.valueOf(element.height).toString());
 
146
            idx++;
 
147
         }
 
148
 
 
149
        return true;
 
150
    }
 
151
 
 
152
    public boolean onOptionsItemSelected(MenuItem item) {
 
153
        Log.i(TAG, "called onOptionsItemSelected; selected item: " + item);
 
154
        if (item.getGroupId() == 1)
 
155
        {
 
156
            mOpenCvCameraView.setEffect((String) item.getTitle());
 
157
            Toast.makeText(this, mOpenCvCameraView.getEffect(), Toast.LENGTH_SHORT).show();
 
158
        }
 
159
        else if (item.getGroupId() == 2)
 
160
        {
 
161
            int id = item.getItemId();
 
162
            Size resolution = mResolutionList.get(id);
 
163
            mOpenCvCameraView.setResolution(resolution);
 
164
            resolution = mOpenCvCameraView.getResolution();
 
165
            String caption = Integer.valueOf(resolution.width).toString() + "x" + Integer.valueOf(resolution.height).toString();
 
166
            Toast.makeText(this, caption, Toast.LENGTH_SHORT).show();
 
167
        }
 
168
 
 
169
        return true;
 
170
    }
 
171
 
 
172
    @SuppressLint("SimpleDateFormat")
 
173
    @Override
 
174
    public boolean onTouch(View v, MotionEvent event) {
 
175
        Log.i(TAG,"onTouch event");
 
176
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
 
177
        String currentDateandTime = sdf.format(new Date());
 
178
        String fileName = Environment.getExternalStorageDirectory().getPath() +
 
179
                               "/sample_picture_" + currentDateandTime + ".jpg";
 
180
        mOpenCvCameraView.takePicture(fileName);
 
181
        Toast.makeText(this, fileName + " saved", Toast.LENGTH_SHORT).show();
 
182
        return false;
 
183
    }
 
184
}