App funktioniert im Emulator und auf Samsung Galaxy S III aber nicht auf HTC One X?

  • Antworten:1
Julien Kindle
  • Forum-Beiträge: 6

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?


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 }

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}

Antworten
Stefan S.
  • Forum-Beiträge: 560

19.11.2012, 08:28:25 via Website

Hallo Julien

Steht was im Logger drin, weshalb die App crashed?

Antworten