5
5
6
6
import android .content .Context ;
7
7
import android .hardware .Camera ;
8
+ import android .view .Gravity ;
8
9
import android .util .Log ;
9
10
import android .view .SurfaceHolder ;
10
11
import android .view .SurfaceView ;
12
+ import android .view .WindowManager ;
11
13
import processing .core .PApplet ;
12
14
import processing .core .PConstants ;
13
15
import processing .core .PImage ;
@@ -18,7 +20,7 @@ public class Capture extends PImage implements PConstants {
18
20
private static final boolean DEBUG = true ;
19
21
public static void log (String log ) {if (DEBUG ) System .out .println (log );}
20
22
21
- private Context context ;
23
+ private PApplet context ;
22
24
23
25
private Camera mCamera ;
24
26
@@ -40,15 +42,36 @@ public void setCamera(String camera) {
40
42
selectedCamera = camerasList .indexOf (camera );
41
43
}
42
44
log ("Selected camera = " + selectedCamera );
43
- try {
45
+ createPreviewWindow ();
46
+ }
47
+
48
+ private void createPreviewWindow () {
49
+ final WindowManager .LayoutParams params = new WindowManager .LayoutParams (
50
+ WindowManager .LayoutParams .TYPE_SYSTEM_OVERLAY ,
51
+ WindowManager .LayoutParams .FLAG_NOT_TOUCHABLE |
52
+ WindowManager .LayoutParams .FLAG_NOT_FOCUSABLE |
53
+ WindowManager .LayoutParams .FLAG_NOT_TOUCH_MODAL |
54
+ WindowManager .LayoutParams .FLAG_WATCH_OUTSIDE_TOUCH );
55
+
56
+ params .gravity = Gravity .TOP | Gravity .LEFT ;
57
+ params .height = 1 ;
58
+ params .width = 1 ;
59
+
60
+ try {
44
61
mCamera = Camera .open (selectedCamera );
45
- CameraPreview mPreview = new CameraPreview (context , mCamera );
46
- mCamera .setPreviewCallback (previewCallback );
62
+ final WindowManager windowManager = (WindowManager ) context .getSystemService (Context .WINDOW_SERVICE );
63
+ context .runOnUiThread (new Runnable () {
64
+ @ Override
65
+ public void run () {
66
+ CameraPreview mPreview = new CameraPreview (context , mCamera );
67
+ windowManager .addView (mPreview , params );
68
+ mCamera .setPreviewCallback (previewCallback );
69
+ }
70
+ });
47
71
} catch (Exception e ) {
48
72
System .err .println ("Camera not avaialble to use." );
49
73
e .printStackTrace ();
50
74
}
51
-
52
75
}
53
76
54
77
public String [] list () {
@@ -74,7 +97,7 @@ public String[] list() {
74
97
private Camera .PreviewCallback previewCallback = new Camera .PreviewCallback () {
75
98
76
99
@ Override
77
- public void onPreviewFrame (byte [] arg0 , Camera arg1 ) {
100
+ public void onPreviewFrame (byte [] frame , Camera camera ) {
78
101
log ("Received Camera frame" );
79
102
}
80
103
};
0 commit comments