Ich bin an einem Punkt fest, dass ich die Ausrichtung des Bildes nicht ändern kann, wenn ich das Bild mit benutzerdefinierten Kamera aufgenommen habe. Ich möchte die Ausrichtung manuell handhaben. Ich weiß nicht, wie man ein Bild in onConfiguration ändert, wenn Camera.PictureCallback aufgerufen wird. Ich habe die Ausrichtung erfolgreich geändert, wenn das Foto nicht aufgenommen wurde. Ich stelle kein Bild in einer Bildansicht ein, sondern zeige es in der Oberflächenansicht an. Hier ist mein Code framelayout und Oberfläche der Einstellung für sie:Android, wie ein Foto je nach Ausrichtung zu drehen, wenn das Bild benutzerdefinierte Kamera
Framelayout camera_view = (FrameLayout) findViewById(R.id.camera_view);
CameraSurfaceCreater mCameraView = new CameraSurfaceCreater(this, mCamera, CameraSetter.this);//create a SurfaceView to show camera data
camera_view.addView(mCameraView);//add the SurfaceView to the layout
wenn Bild aufgenommen wird:
Camera.PictureCallback mPicture = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
pictaken = true;
}
};
und in onConfiguration Geändert:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
if(!isPictureTaken){
setCameraDisplayOrientation(CameraSetter.this, 0, mCamera);
}else {
//dont know how to rotate a photo when picture is taken
}
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
if(!isPictureTaken){
setCameraDisplayOrientation(CameraSetter.this, 0, mCamera);
}
}
}
Jede Hilfe sehr geschätzt wird. Muss ich framelayout drehen oder was ich tun muss, nachdem das Foto aufgenommen wurde und der Benutzer die Ausrichtung ändert.
Danke für Ihre Antwort. Aber wo sollte ich diesen OrientationEventListener im Code hinzufügen? oder sollte ich die onkonfiguration entfernen? – exceptionnotgood
Sie können diesen Code in Ihrem onCreate() hinzufügen, aber stellen Sie sicher, dass Sie diesen Code verwenden, nachdem die Kamera initialisiert wurde. Aktivieren Sie dies von onResume() und Disable von onPause(). –
Dies hat ein Problem, dass, wenn Sie ein Bild aufnehmen und das Gerät in das Querformat bewegt wird, das Bild entfernt wird und die Kamera wieder eingeschaltet wird. – exceptionnotgood