0

VideoView携帯電話のカメラ ビューを要素に表示するだけの基本的な Android アプリケーションを開発しました。マニフェストにカメラへのアクセス許可を追加しました

<uses-permission android:name="android.permission.CAMERA" />

また、アプリケーションはメイン アクティビティMainActivity.javaのみで構成されます。コードのスナップは、次の数行で提供されます。ただし、実際のデバイスで apk ファイルを実行すると問題が発生します。アプリケーションが予期せず停止したというエラーが表示され、その理由がわかりません。

これは、メイン アクティビティのコードです。

public class MainActivity extends Activity implements SurfaceHolder.Callback {

    private Button StartButton = null;
    private VideoView videoView = null;
    private SurfaceHolder holder = null;
    private Camera camera = null;
    private static final String TAG = "Video";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        StartButton = (Button) findViewById(R.id.StartButton);
        videoView = (VideoView) this.findViewById(R.id.videoView);

        StartButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try{
                    camera = Camera.open();
                    Camera.Parameters camParams = camera.getParameters();
                    camera.lock();

                } catch(RuntimeException re){
                    Log.v(TAG, "Could not initialize the Camera");
                    re.printStackTrace();
                }
            }
        });

        holder = videoView.getHolder();
        holder.addCallback(this);
    }


    @Override
    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
        // TODO Auto-generated method stub

    }


    @Override
    public void surfaceCreated(SurfaceHolder arg0) {
        Log.v(TAG, "in surfaceCreated");

        try {
            camera.setPreviewDisplay(holder);
            camera.startPreview();
        } catch(IOException e) {
            Log.v(TAG, "Could not start the preview");
            e.printStackTrace();
        }
    }

xml ファイルには基本的に、VideoView と [開始] ボタンの 2 つの要素が含まれています。アプリケーションが予期せず停止する理由は何ですか? この概念を実装するためのより良い方法はありますか? 私の場合、スタートボタンは必要ありません。実際には、[スタート] ボタンを使用せずにこれを行う方がよいでしょう。

私は Android 開発と Java コーディングに非常に慣れていません。Android 開発に Eclipse adt-bundle を使用しています。

4

1 に答える 1