我开发了一个基本的 Android 应用程序,它只是在一个VideoView
元素中显示手机的相机视图。我在 Manifest 中添加了相机访问权限
<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 和开始按钮。知道是什么意外停止了应用程序吗?有没有更好的方法来实现这个概念?在我的情况下,不需要“开始”按钮。事实上,最好在没有“开始”按钮的情况下执行此操作。
我对 Android 开发和 Java 编码非常陌生。我正在使用 Eclipse adt-bundle 进行 Android 开发。