Julien Kindle
- Forum-Beiträge: 6
17.11.2012, 23:03:43 via Website
17.11.2012 23:03:43 via Website
Hi, mein App funktioniert sowohl im Emulator, alsauch auf dem Handy des Freundes. Doch auf meinem HTC one x crasht es, wenn es ein Foto macht und ausdem die Pixel, schlussendlich die Steigung berechnet :S Kann mir wer da helfen?
Steigung berechnen:
1package com.example.camtest;
2
3import java.io.IOException;
4
5import android.graphics.Bitmap;
6import android.graphics.BitmapFactory;
7import android.graphics.Color;
8import android.hardware.Camera;
9import android.os.Bundle;
10import android.app.Activity;
11import android.view.Menu;
12import android.view.View;
13import android.widget.Button;
14import android.widget.EditText;
15import android.widget.FrameLayout;
16import android.widget.ImageView;
17
18public class MainActivity extends Activity {
19
20
21 private CameraSurfaceView cameraView;
22 private ImageView imageResult;
23 private FrameLayout frameNew;
24 private Button snapPhoto;
25 private EditText ste;
26 private boolean takePicture = false;
27 private Bitmap image = null;
28
29 @Override
30 protected void onCreate(Bundle savedInstanceState) {
31
32 super.onCreate(savedInstanceState);
33 setContentView(R.layout.activity_main);
34
35
36
37 //private CanvasDrawing canvasDrawing;
38 //canvasDrawing = (CanvasDrawing) this.findViewById(R.id.cd);
39 setUpCamera();
40
41 }
42
43
44
45 public void setUpCamera() {
46
47
48 cameraView = new CameraSurfaceView(getApplicationContext());
49 imageResult = new ImageView(getApplicationContext());
50
51 imageResult.setBackgroundColor(Color.GRAY);
52
53 frameNew = (FrameLayout) findViewById(R.id.frame);
54 snapPhoto = (Button) findViewById(R.id.capture);
55
56 frameNew.addView(imageResult);
57 frameNew.addView(cameraView);
58
59 frameNew.bringChildToFront(imageResult);
60
61
62
63 }
64
65 public void captureHandler(View view) {
66
67 if (takePicture) {
68
69
70 cameraView.capture(jpegHandler);
71
72
73 } else {
74 takePicture = true;
75 frameNew.bringChildToFront(cameraView);
76 imageResult.setImageBitmap(null);
77 snapPhoto.setText("Capture");
78
79 }
80 }
81
82 public Camera.PictureCallback jpegHandler = new Camera.PictureCallback() {
83
84 @Override
85 public void onPictureTaken(byte[] data, Camera camera) {
86 // TODO Auto-generated method stub
87 image = BitmapFactory.decodeByteArray(data, 0, data.length);
88 imageResult.setImageBitmap(image);
89 frameNew.bringChildToFront(imageResult);
90 snapPhoto.setText("Take Picture");
91 takePicture = false;
92
93 snapPhoto.setText("x:" + image.getHeight());
94
95 Steigung s = new Steigung();
96 try {
97 ste = (EditText) findViewById(R.id.st);
98
99 ste.setText("St: " + s.Steigung(image, 500, 500));
100
101
102 } catch (IOException e) {
103 // TODO Auto-generated catch block
104 e.printStackTrace();
105 }
106
107
108 }
109 };
110
111
112
113
114
115 @Override
116 public boolean onCreateOptionsMenu(Menu menu) {
117 // Inflate the menu; this adds items to the action bar if it is present.
118 getMenuInflater().inflate(R.menu.activity_main, menu);
119 return true;
120 }
121
122
123 }
2
3import java.io.IOException;
4
5import android.graphics.Bitmap;
6import android.graphics.BitmapFactory;
7import android.graphics.Color;
8import android.hardware.Camera;
9import android.os.Bundle;
10import android.app.Activity;
11import android.view.Menu;
12import android.view.View;
13import android.widget.Button;
14import android.widget.EditText;
15import android.widget.FrameLayout;
16import android.widget.ImageView;
17
18public class MainActivity extends Activity {
19
20
21 private CameraSurfaceView cameraView;
22 private ImageView imageResult;
23 private FrameLayout frameNew;
24 private Button snapPhoto;
25 private EditText ste;
26 private boolean takePicture = false;
27 private Bitmap image = null;
28
29 @Override
30 protected void onCreate(Bundle savedInstanceState) {
31
32 super.onCreate(savedInstanceState);
33 setContentView(R.layout.activity_main);
34
35
36
37 //private CanvasDrawing canvasDrawing;
38 //canvasDrawing = (CanvasDrawing) this.findViewById(R.id.cd);
39 setUpCamera();
40
41 }
42
43
44
45 public void setUpCamera() {
46
47
48 cameraView = new CameraSurfaceView(getApplicationContext());
49 imageResult = new ImageView(getApplicationContext());
50
51 imageResult.setBackgroundColor(Color.GRAY);
52
53 frameNew = (FrameLayout) findViewById(R.id.frame);
54 snapPhoto = (Button) findViewById(R.id.capture);
55
56 frameNew.addView(imageResult);
57 frameNew.addView(cameraView);
58
59 frameNew.bringChildToFront(imageResult);
60
61
62
63 }
64
65 public void captureHandler(View view) {
66
67 if (takePicture) {
68
69
70 cameraView.capture(jpegHandler);
71
72
73 } else {
74 takePicture = true;
75 frameNew.bringChildToFront(cameraView);
76 imageResult.setImageBitmap(null);
77 snapPhoto.setText("Capture");
78
79 }
80 }
81
82 public Camera.PictureCallback jpegHandler = new Camera.PictureCallback() {
83
84 @Override
85 public void onPictureTaken(byte[] data, Camera camera) {
86 // TODO Auto-generated method stub
87 image = BitmapFactory.decodeByteArray(data, 0, data.length);
88 imageResult.setImageBitmap(image);
89 frameNew.bringChildToFront(imageResult);
90 snapPhoto.setText("Take Picture");
91 takePicture = false;
92
93 snapPhoto.setText("x:" + image.getHeight());
94
95 Steigung s = new Steigung();
96 try {
97 ste = (EditText) findViewById(R.id.st);
98
99 ste.setText("St: " + s.Steigung(image, 500, 500));
100
101
102 } catch (IOException e) {
103 // TODO Auto-generated catch block
104 e.printStackTrace();
105 }
106
107
108 }
109 };
110
111
112
113
114
115 @Override
116 public boolean onCreateOptionsMenu(Menu menu) {
117 // Inflate the menu; this adds items to the action bar if it is present.
118 getMenuInflater().inflate(R.menu.activity_main, menu);
119 return true;
120 }
121
122
123 }
Steigung berechnen:
1package com.example.camtest;
2
3import java.io.File;
4import java.io.IOException;
5
6
7import android.graphics.Bitmap;
8import android.graphics.BitmapFactory;
9import android.graphics.Color;
10
11
12public class Steigung {
13
14 public Integer finaly1;
15 public Integer finaly2;
16 public Double Steigung (Bitmap file, Integer npx, Integer npy) throws IOException {
17
18
19 Bitmap image = file;
20
21 Integer x1 = npx+30;
22 Integer x2 = npx+90;
23 Integer y1 = image.getHeight()-1;
24 Integer y2 = image.getHeight()-1;
25
26 //Getting finaly1
27 while(y1 > 0) {
28
29
30
31 int red = image.getPixel(x1,y1) >> 16 & 0xff;
32 int green = image.getPixel(x1,y1) >> 8 & 0xff;
33 int blue = image.getPixel(x1,y1) & 0xff;
34
35 int red2 = image.getPixel(x1,y1-1) >> 16 & 0xff;
36 int green2 = image.getPixel(x1,y1-1) >> 8 & 0xff;
37 int blue2 = image.getPixel(x1,y1-1) & 0xff;
38
39
40
41
42 if (red - red2 > 20 && blue-blue2 > 20 && green-green2 > 20) {
43
44 if (y1 > npy+7 || y1 < npy-7) {
45
46 finaly1 = y1;
47
48 }
49
50 }
51 y1 = y1-1;
52 }
53
54 //getting finaly2
55
56 while(y2 > 0) {
57 int red = image.getPixel(x2,y2) >> 16 & 0xff;
58 int green = image.getPixel(x2,y2) >> 8 & 0xff;
59 int blue = image.getPixel(x2,y2) & 0xff;
60
61 int red2 = image.getPixel(x2,y2-1) >> 16 & 0xff;
62 int green2 = image.getPixel(x2,y2-1) >> 8 & 0xff;
63 int blue2 = image.getPixel(x2,y2-1) & 0xff;
64
65
66
67 if (red - red2 > 20 && blue-blue2 > 20 && green-green2 > 20) {
68
69 if (y2 > npy+7 || y2 < npy-7) {
70
71 finaly2 = y2;
72
73 }
74
75 }
76 y2 = y2-1;
77 }
78
79
80 System.out.println("y: " + finaly1 + " " + finaly2);
81
82 Double St = (double) (finaly1-finaly2) / 60;
83 System.out.println("Steigung: " +St);
84 return St;
85
86
87}
88}
2
3import java.io.File;
4import java.io.IOException;
5
6
7import android.graphics.Bitmap;
8import android.graphics.BitmapFactory;
9import android.graphics.Color;
10
11
12public class Steigung {
13
14 public Integer finaly1;
15 public Integer finaly2;
16 public Double Steigung (Bitmap file, Integer npx, Integer npy) throws IOException {
17
18
19 Bitmap image = file;
20
21 Integer x1 = npx+30;
22 Integer x2 = npx+90;
23 Integer y1 = image.getHeight()-1;
24 Integer y2 = image.getHeight()-1;
25
26 //Getting finaly1
27 while(y1 > 0) {
28
29
30
31 int red = image.getPixel(x1,y1) >> 16 & 0xff;
32 int green = image.getPixel(x1,y1) >> 8 & 0xff;
33 int blue = image.getPixel(x1,y1) & 0xff;
34
35 int red2 = image.getPixel(x1,y1-1) >> 16 & 0xff;
36 int green2 = image.getPixel(x1,y1-1) >> 8 & 0xff;
37 int blue2 = image.getPixel(x1,y1-1) & 0xff;
38
39
40
41
42 if (red - red2 > 20 && blue-blue2 > 20 && green-green2 > 20) {
43
44 if (y1 > npy+7 || y1 < npy-7) {
45
46 finaly1 = y1;
47
48 }
49
50 }
51 y1 = y1-1;
52 }
53
54 //getting finaly2
55
56 while(y2 > 0) {
57 int red = image.getPixel(x2,y2) >> 16 & 0xff;
58 int green = image.getPixel(x2,y2) >> 8 & 0xff;
59 int blue = image.getPixel(x2,y2) & 0xff;
60
61 int red2 = image.getPixel(x2,y2-1) >> 16 & 0xff;
62 int green2 = image.getPixel(x2,y2-1) >> 8 & 0xff;
63 int blue2 = image.getPixel(x2,y2-1) & 0xff;
64
65
66
67 if (red - red2 > 20 && blue-blue2 > 20 && green-green2 > 20) {
68
69 if (y2 > npy+7 || y2 < npy-7) {
70
71 finaly2 = y2;
72
73 }
74
75 }
76 y2 = y2-1;
77 }
78
79
80 System.out.println("y: " + finaly1 + " " + finaly2);
81
82 Double St = (double) (finaly1-finaly2) / 60;
83 System.out.println("Steigung: " +St);
84 return St;
85
86
87}
88}
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.