- Forum-Beiträge: 33
23.08.2012, 20:09:39 via Website
23.08.2012 20:09:39 via Website
Ich stehe vor einem scheinbar fast unlösbaren Problem!
Folgendes: Ich habe eine Beta App erstellt, in der ich Videos aufnehmen kann. Über dem Video Preview liegen zwei Buttons und später sollen auch GPS Daten dort dargestellt werden. Das Ganze sollte soweit kein Thema sein.
Nun möchte ich aber die GPS Daten direkt mit auf dem Video aufnehmen!!! Da ich mir nicht vorstellen kann, dass ich diese in das Video rendern kann, bin ich auf die Idee gekommen, ein Video vom Display zu erstellen. Also ich starte die Video Preview und nehme aber nicht über die CameraLinse auf, sondern den Bildschirm. Das scheint aber nicht wirklich zu funktionieren! Dann habe ich mir überlegt, ich nehme einfach eine Serie von Screenshot vom Display auf, aber da musste ich feststellen, dass der (Gerade nur ein Screenshot, noch keine Serie) die Video Vorschau nicht mit aufnimmt. Vor allem stellt ich mir dann noch die Frage, wie ich später aus den Images ein Video generieren kann. Man bedenke: Ich möchte keinerlei Tools verwenden also PC, Mac oder ähnliches. Es geht hier wirklich darum, ein Video , in dem auch direkt andere Elemente die über dem Preview liegen, aufzunehmen.
Mein letzter Versuch war es wie gesagt, einzelne Screenshot aufzunehmen und diese dann später irgendwie in ein Video umzusetzen.
Mein Code der letzten Beta App:
2
3import java.io.File;
4import java.io.FileOutputStream;
5import java.io.IOException;
6
7import android.app.Activity;
8import android.graphics.Bitmap;
9import android.graphics.PixelFormat;
10import android.hardware.Camera;
11import android.os.Bundle;
12import android.os.Environment;
13import android.view.SurfaceHolder;
14import android.view.SurfaceView;
15import android.view.View;
16import android.view.View.OnClickListener;
17import android.widget.Button;
18import android.widget.RelativeLayout;
19
20public class MainActivity extends Activity implements OnClickListener, SurfaceHolder.Callback {
21
22 private Button startBtn, stopBtn, openCamera;;
23 private Camera camera;
24 private SurfaceView surfaceView;
25 private SurfaceHolder surfaceHolder;
26 boolean previewing = false;
27 private RelativeLayout view;
28
29 @Override
30 public void onCreate(Bundle savedInstanceState) {
31 super.onCreate(savedInstanceState);
32 setContentView(R.layout.main);
33
34 startBtn = (Button) findViewById(R.id.start);
35 stopBtn = (Button) findViewById(R.id.stop);
36 openCamera = (Button) findViewById(R.id.open);
37
38 startBtn.setOnClickListener(this);
39 stopBtn.setOnClickListener(this);
40 openCamera.setOnClickListener(this);
41
42
43 getWindow().setFormat(PixelFormat.UNKNOWN);
44 surfaceView = (SurfaceView) findViewById(R.id.surfaceView1);
45 surfaceHolder = surfaceView.getHolder();
46 surfaceHolder.addCallback(this);
47 surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
48
49
50
51 }
52
53
54
55 @Override
56 public void onClick(View v) {
57 long clickedElement = v.getId();
58
59
60
61 if(clickedElement == R.id.start){
62 File root = Environment.getExternalStorageDirectory();
63 File file = new File(root,"myImage.jpg");
64 SurfaceView mainLayout = (SurfaceView) findViewById(R.id.surfaceView1);
65
66 View v1=mainLayout.getRootView();
67 v1.setDrawingCacheEnabled(true);
68 Bitmap bm=v1.getDrawingCache();
69
70 if(bm!=null){
71 System.out.println("Nicht leer");
72 FileOutputStream fos = null;
73
74 try {
75 fos = new FileOutputStream(file);
76 if(fos != null){
77 bm.compress(Bitmap.CompressFormat.JPEG, 100, fos);
78 fos.close();
79 }
80 } catch (Exception e) {
81 e.printStackTrace();
82 }
83 }
84
85 /* RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.rootlayout);
86 //SurfaceView mainLayout = (SurfaceView) findViewById(R.id.surfaceView1);
87 File root = Environment.getExternalStorageDirectory();
88 File file = new File(root,"androidlife.jpg");
89 Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(), mainLayout
90 .getHeight(), Bitmap.Config.ARGB_8888);
91 Canvas c = new Canvas(b);
92 mainLayout.draw(c);
93 FileOutputStream fos = null;
94 try {
95 fos = new FileOutputStream(file);
96
97 if (fos != null) {
98 b.compress(Bitmap.CompressFormat.JPEG, 100, fos);
99 fos.close();
100 }
101 } catch (Exception e) {
102 e.printStackTrace();
103 }*/
104
105
106 }
107 else if(clickedElement == R.id.stop){
108
109 }
110 else if(clickedElement == R.id.open){
111 camera = Camera.open();
112
113 try {
114 camera.setPreviewDisplay(surfaceHolder);
115 } catch (IOException e) {
116 // TODO Auto-generated catch block
117 e.printStackTrace();
118 }
119 camera.setDisplayOrientation(90);
120 camera.startPreview();
121 }
122
123 }
124
125
126
127 @Override
128 public void surfaceChanged(SurfaceHolder holder, int format, int width,
129 int height) {
130 // TODO Auto-generated method stub
131
132 }
133
134
135
136 @Override
137 public void surfaceCreated(SurfaceHolder holder) {
138 // TODO Auto-generated method stub
139
140 }
141
142
143
144 @Override
145 public void surfaceDestroyed(SurfaceHolder holder) {
146 // TODO Auto-generated method stub
147
148 }
149
150
151}
Hat jemand eine Idee, wie ich das noch umsetzen könnte? Ich hoffe ihr könnt mir weiter helfen...wenn ich Google noch weiter befrage, dann werde ich wohl als Stalker eingestuft -
Danke und Grüße
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.