Ich mache eine App, die die Kamera als Hintergrund öffnet, wenn die App startet, ähnlich Snapchat. Der Code, den ich gerade verwende, hat Teile darin veraltet und ich weiß nicht, wie ich sie beheben kann. Jede Hilfe wird geschätzt. Mein Code ist unten.Kamera öffnen, wenn App startet
public class CameraView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
public CameraView(Context context, Camera camera) {
super(context);
mCamera = camera;
mCamera.setDisplayOrientation(90);
//get the holder and set this class as the callback, so we can get camera data here
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL);
}
public CameraView(Launcher launcher, android.hardware.Camera mCamera) {
super(launcher, (AttributeSet) mCamera);
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try{
//when the surface is created, we can set the camera to draw images in this surfaceholder
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
} catch (IOException e) {
Log.d("ERROR", "Camera error on surfaceCreated " + e.getMessage());
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {
//before changing the application orientation, you need to stop the preview, rotate and then start it again
if(mHolder.getSurface() == null)//check if the surface is ready to receive camera data
return;
try{
mCamera.stopPreview();
} catch (Exception e){
//this will happen when you are trying the camera if it's not running
}
//now, recreate the camera preview
try{
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (IOException e) {
Log.d("ERROR", "Camera error on surfaceChanged " + e.getMessage());
}
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
mCamera.stopPreview();
mCamera.release();
}
Das Problem ist, dass diese Zeilen veraltet sind.
mCamera.setDisplayOrientation(90);
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
mCamera.stopPreview();
mCamera.release();
Mein Xml ist unten.
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/camera_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</FrameLayout>
Es ist nur veraltet. Das bedeutet nicht, dass es nicht funktionieren wird. Verwenden Sie 'Camera2 API', wenn Sie den neuesten Code verwenden möchten. – Piyush
Wie implementiere ich das, wenn ich die App starte, funktioniert es nicht und der veraltete Code wird als Fehler angezeigt. –
Welchen Fehler sagt es? – Piyush