Android-Front-Kamera-API
Bekam ich-Aktivität, die zum Aufruf einer anderen Klasse, die haben ein Kamera-Vorschau.
Das problem ist, dass es ist, öffnen Sie die Kamera zurück und ich brauche die front.
wie kann ich das machen, dass in der Voreinstellung öffnen Sie die vordere Kamera(die ich suchte in google, aber jede Sache, die ich habe versucht, die app abgestürzt ist, wenn es geöffnet wird).
Hier ist die Aktivität:
package com.elichai.tfillin;
import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.widget.FrameLayout;
public class CameraActivity extends Activity {
private Camera mCamera;
private CameraPreview mPreview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCamera = getCameraInstance();
mPreview = new CameraPreview(this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mPreview);
}
public static Camera getCameraInstance(){
Camera c = null;
try {
c = Camera.open();
}
catch (Exception e){
}
return c;
}
}
Hier Ist die andere Klasse:
package com.elichai.tfillin;
import java.io.IOException;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
int cameraId=0;
@SuppressWarnings("deprecation")
public CameraPreview(Context context, Camera camera) {
super(context);
mCamera = camera;
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.release();
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
mCamera.setDisplayOrientation(90);
if (mHolder.getSurface() == null){
return;
}
try {
mCamera.stopPreview();
} catch (Exception e){
}
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (Exception e){
}
}
}
InformationsquelleAutor elichai2 | 2013-01-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre aktuelle
Camera.open()
hat keine parameter, was bedeutet, dass es wird, öffnen Sie die Standard-Kamera, die fast immer nach hinten gerichtet.Sollten Sie Durchlaufen die verfügbaren Kameras und finden Sie heraus die ID von der Vorderseite nach und verwenden, um es zu öffnen. So etwas wie:
Und dann verwenden Sie es in Ihrem app wie folgt:
Sehen, wie beide Methoden tun ist, öffnen und die Rückkehr der Camera-Instanz, könnte man leicht den code vereinfachen, indem Sie direkt Berufung
openFrontFacingCamera()
stattgetCameraInstance()
.Das ist unabhängig von deinem aktuellen problem. Öffnen Sie bitte eine neue Frage, und lassen Sie uns wissen, was Sie versucht haben.
OK,trotzdem Danke
InformationsquelleAutor Raghav Sood
Können Sie versuchen, diese:
Und Sie müssen auch hinzufügen Berechtigung in menifest-Datei für die Kamera.
danke. ich werde dort zu suchen.
können Sie mir ein Beispiel nennen?Danke!
Warum
android required: false
imuses-feature
InformationsquelleAutor Rahil2952