Activity クラスに、SurfaceView 内で呼び出したい非静的なパッケージ プライベート メソッドがあります。たとえば、surfaceChanged() または surfaceDestroyed() です。
public class MyActivity extends Activity {
Camera mCamera = Camera.open();
Camera.Parameters parameters = mCamera.getParameters();
boolean hasFlash = false;
...
void destroyCamera() {
flashOff();
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
void updateCamera() {
mCamera.setParameters(parameters);
mCamera.startPreview();
}
...
class CameraView extends SurfaceView implements SurfaceHolder.Callback {
...
public void surfaceDestroyed(SurfaceHolder holder) {
destroyCamera();
}
...
これを行うより良い方法はありますか?また、同じアクティビティに toggleFlash() メソッドがあるため、キー リスナーを介してアクティビティ内からフラッシュを切り替えることができます。