我正在尝试使用我的电脑的内置网络摄像头在我的Android应用程序中拍照。我正在使用eclipse Android模拟器并将AVD设置为使用webcam0作为后置摄像头,但是当我运行程序时它总是崩溃,说“不幸的是,相机已停止”。我已将以下行添加到我的Manifest xml:
<uses-permission android:name="android.permission.CAMERA"/>
虽然它似乎仍然不起作用。我已经在一些地方读过AVD管理器编辑/创建屏幕中应该有一个“硬件”部分,但是我没有它。
我错过了什么吗?这是我尝试运行应用程序时出现的logcat:
有关可能发生的事情的任何想法?我一直在寻找解决方案,似乎无法找到任何解决这个问题的方法。谢谢你的帮助。
修改 这是我的图像捕获按钮/方法代码:
/* Create capture button */
Button capture = (Button) findViewById(R.id.btnCapture);
capture.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//create directory/picture file
count++;
file = dir + count + ".jpg";
File picFile = new File(file);
try {
picFile.createNewFile();
} catch (IOException e) {}
Uri outputFileUri = Uri.fromFile(picFile);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}
});
/* Check if valid photo */
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
Log.d("CameraDemo", "Pic saved");
}
}
这段代码主要基于我在SO上找到的一个帖子创建,我恐怕不记得是哪一个。
答案 0 :(得分:0)
你添加了:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
在你的清单中?
答案 1 :(得分:0)
如果您觉得自己遵循了所有正确的步骤来激活相机,但没有成功,那么对于我来说,我必须尝试在模拟器中使用内置相机,以排除它是我的密码的可能性。我意识到默认相机应用程序正在产生相同的错误-如您所报告的。
因此,经过几次试验:(添加空间,ram,更多清单文件,清除Google Play服务数据,更新Play服务等),我决定在Windows 10 x64机器上使用Android Studio(早期是Windows) 7 x64)。令我惊讶的是,错误消失了,相机也没有崩溃。现在,我不知道它是否与OS(Win 7)或处理器或任何其他硬件或软件问题有关。如果您尚未使用Windows 10,可以尝试一下。