API を使用して Android 用の Eclipse でカメラ アプリをコーディングしようとしました。この例は以下のリンクから取得しましたが、SurfaceView の作成中にアプリが Nullpointerexception でクラッシュするようです (以下ではプレビューと呼ばれます)。
助けてくれて本当に本当にありがとう..アンドロイドカメラAPIを学ぼうとしていて、一日中これに固執しています!
これらは、メインのアクティビティである MainWindow.java からの数行です... 1 と 2 を出力してから終了します。
Log.i(TAG, "1");
preview = new Preview(this);
Log.i(TAG, "2 " + R.id.preview);
((FrameLayout) findViewById(R.id.preview)).addView(preview);
Log.i(TAG, "3");
buttonClick = (Button) findViewById(R.id.buttonClick);
Log.i(TAG, "4");
buttonClick.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.i(TAG, "5");
preview.camera.takePicture(shutterCallback, rawCallback,jpegCallback);
}
});
これらは Preview.java の最初の数行です
public class Preview extends SurfaceView implements SurfaceHolder.Callback {
private static final String TAG = "PreviewClass";
SurfaceHolder mHolder;
public Camera camera;
Preview(Context context) {
super(context);
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
Log.i(TAG, "11");
mHolder = getHolder();
Log.i(TAG, "12");
mHolder.addCallback(this);
Log.i(TAG, "13");
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.i(TAG, "trying pre 15");
camera = Camera.open();
try
{
Log.i(TAG, "15");