Mit android-Kamera2-API display-Kamera-Feeds
Ich versuche, erstellen Sie eine sehr einfache app, die zeigt das Bild erhielt von der Kamera auf dem display. Ich bin mit der Kamera2-API, denn ich bin neu hier, also ich versuche es mal mit der neuesten Technologie.
Ich den Punkt erreichen, wo ich anrufen createCaptureSession()
, aber dann onConfigureFailed()
aufgerufen wird, und ich weiß nicht, was das problem ist oder wie es zu finden.
Hier ist meine Quelle:
SurfaceView mSurfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate() start");
setContentView(R.layout.activity_main);
mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView);
}
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume() start");
initCamera();
}
private void initCamera() {
Log.d(TAG, "initCamera() start");
CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
Log.d(TAG, "acquired cameraManager: " + cameraManager);
String[] cameraIdList;
try {
cameraIdList = cameraManager.getCameraIdList();
} catch (CameraAccessException e) {
Log.e(TAG, "couldn't get camera list", e);
return;
}
Log.d(TAG, "acquired cameraIdList: length: " + cameraIdList.length);
if (cameraIdList.length == 0) {
Log.w(TAG, "couldn't detect a camera");
return;
}
String camera0Id = cameraIdList[0];
Log.d(TAG, "chosen camera: " + camera0Id);
try {
cameraManager.openCamera(camera0Id, deviceCallback, null);
} catch (CameraAccessException e) {
Log.e(TAG, "couldn't open camera", e);
}
Log.d(TAG, "called cameraManager.openCamera()");
}
CameraDevice.StateCallback deviceCallback = new CameraDevice.StateCallback() {
@Override
public void onOpened(CameraDevice camera) {
Log.d(TAG, "deviceCallback.onOpened() start");
Surface surface = mSurfaceView.getHolder().getSurface();
Log.d(TAG, "surface: " + surface);
List<Surface> surfaceList = Collections.singletonList(surface);
try {
camera.createCaptureSession(surfaceList, sessionCallback, null);
} catch (CameraAccessException e) {
Log.e(TAG, "couldn't create capture session for camera: " + camera.getId(), e);
return;
}
}
@Override
public void onDisconnected(CameraDevice camera) {
Log.d(TAG, "deviceCallback.onDisconnected() start");
}
@Override
public void onError(CameraDevice camera, int error) {
Log.d(TAG, "deviceCallback.onError() start");
}
};
CameraCaptureSession.StateCallback sessionCallback = new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(CameraCaptureSession session) {
Log.i(TAG, "capture session configured: " + session);
}
@Override
public void onConfigureFailed(CameraCaptureSession session) {
Log.e(TAG, "capture session configure failed: " + session);
}
};
Und die Ausgabe ist:
...﹕ onCreate() start
...﹕ onResume() start
...﹕ initCamera() start
...﹕ acquired cameraManager: android.hardware.camera2.CameraManager@5d68786
...﹕ acquired cameraIdList: length: 2
...﹕ chosen camera: 0
...﹕ called cameraManager.openCamera()
...﹕ deviceCallback.onOpened() start
...﹕ surface: Surface(name=null)/@0x52c91e3
...﹕ capture session configure failed: android.hardware.camera2.impl.CameraCaptureSessionImpl@1a8c7a99
Folgendes ist in meinem AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera2" />
Laufen Sie auf Android 5.0?
Ja, mein Test-Gerät ist ein GS4 mit 5.0.1 drauf.
Ja, mein Test-Gerät ist ein GS4 mit 5.0.1 drauf.
InformationsquelleAutor Daniel S. | 2015-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
sollten Sie die Größe der Vorschau
InformationsquelleAutor yydcdut
Legen Sie Benutzerdefinierte Kamera-code:
Können Sie stellen Sie die Kamera Vorschau-Größe in "surfaceChanged ()" - Methode.
Dieser code ist für mich arbeiten in Android 5.0.1 und 5.1.1 auch.
InformationsquelleAutor Dhruv
Da der Fragesteller erwähnt, dass er Tests auf dem Galaxy S4, vielleicht hatte es etwas mit der Tatsache zu tun, dass einige von den Samsung-Lollipop-Handys noch nicht implementiert, der Kamera2-API. DPReview
InformationsquelleAutor Rene Juuse