Android App stürzt nach backpress mit Handler und KameraAndroid App stürzt nach backpress mit Handler und Kamera
I Kamera für einen SOS-App zu nutzen versuchen, der Code ausgeführt wird, wenn wir die sos Start Flash mit der Schaltfläche klicken in um das Blitzlicht am Laufen zu halten, ich bin mit Handler mit Deutsche Post verzögern
die App stürzt ab, wenn wir backpress verwenden, um zur vorherigen Aktivität zurück zu gehen
ich versucht habe handler.removeCallbacks(r);
verwenden, onbackpress aber immer noch die App stürzt
dies ist der Code, den ich
public class sos extends Activity {
String myMorseString = "111000111";
int sleepTime;
Camera cam;
Handler handler;
Runnable r;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sos);
ImageButton button = (ImageButton) findViewById(R.id.Start);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startsos();
}
});
}
public void startsos() {
// new Thread() {
handler = new Handler();
r = new Runnable() {
public void run() {
if (myMorseString != null) {
for (int x = 0; x < myMorseString.length(); x++) {
if (myMorseString.charAt(x) == '2') {
cam = Camera.open();
sleepTime = 500;
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
}
// power off after signal
cam.stopPreview();
cam.release();
cam = null;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
if (myMorseString.charAt(x) == '1') {
cam = Camera.open();
sleepTime = 250;
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
// power off after signal
cam.stopPreview();
cam.release();
cam = null;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (myMorseString.charAt(x) == '0') {
cam = Camera.open();
sleepTime = 250;
Parameters p = cam.getParameters();
cam.setParameters(p);
//cam.startPreview();
cam.stopPreview();
cam.release();
cam = null;
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
handler.postDelayed(this, 10000);
}
// }.start();
};
handler.postDelayed(r, 10000);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
public void onBackPressed() {
handler.removeCallbacks(r);
finish();
super.onBackPressed();
}
}
können Sie den Stacktrace buchen? – John
Ich denke, Aufruf von 'finish()' in 'onBackPressed' ist das Problem. Wenn Sie 'super.onBackPressed()' aufrufen, ist Ihre Aktivität beendet. Wenn Sie 'finish()' explizit aufrufen, denke ich, dass Sie den Fehler einführen. Sie können 'finish()' als 'super.onBackPressed()' auch zerstören Ihre Aktivität – 0xDEADC0DE
ohne zu beenden auch die App stürzt – 1234567