- 25 Nis 2020
- 102
- 6
Bu yöntemleri kullanarak nasıl apk yapabilirim?
Bu kod, bir `SurfaceView` üzerinde kamera önizlemesini başlatır. `surfaceCreated`, `surfaceChanged` ve `surfaceDestroyed` yöntemleri, `SurfaceHolder.Callback` arabirimini uygular ve kamera önizlemesi için gerekli olan yaşam döngüsü olaylarını ele alır.
Bununla birlikte, bu kod Android 9 ve öncesinde kullanılabilir. Android 10 ve sonrasında, `Camera` sınıfı yerine `Camera2` API'si kullanılması önerilir. Bu API'nin kullanımı biraz daha karmaşıktır, ancak daha yeni cihazlarla uyumlu ve daha güncel bir yöntemdir.
Bu kod, bir `SurfaceView` üzerinde kamera önizlemesini başlatır. `surfaceCreated`, `surfaceChanged` ve `surfaceDestroyed` yöntemleri, `SurfaceHolder.Callback` arabirimini uygular ve kamera önizlemesi için gerekli olan yaşam döngüsü olaylarını ele alır.
Bununla birlikte, bu kod Android 9 ve öncesinde kullanılabilir. Android 10 ve sonrasında, `Camera` sınıfı yerine `Camera2` API'si kullanılması önerilir. Bu API'nin kullanımı biraz daha karmaşıktır, ancak daha yeni cihazlarla uyumlu ve daha güncel bir yöntemdir.
Kod:
```java
import android.hardware.Camera;
import android.os.Bundle;
import android.app.Activity;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import java.io.IOException;
public class MainActivity extends Activity implements SurfaceHolder.Callback {
Camera camera;
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
[USER=931120]@Override[/USER]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = findViewById(R.id.surfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
}
[USER=931120]@Override[/USER]
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
try {
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
[USER=931120]@Override[/USER]
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// Yüzey değiştiğinde kamera ayarlarını güncelleme
if (surfaceHolder.getSurface() == null) {
return;
}
try {
camera.stopPreview();
} catch (Exception e) {
e.printStackTrace();
}
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
} catch (Exception e) {
e.printStackTrace();
}
}
[USER=931120]@Override[/USER]
public void surfaceDestroyed(SurfaceHolder holder) {
// Yüzey yok edildiğinde kamerayı serbest bırakma
camera.stopPreview();
camera.release();
}
}
```
Moderatör tarafında düzenlendi: