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 を使用しています。