我通过创建意图来使用相机:
Intent cameraI = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
然后以:
开始startActivityForResult(cameraI, request);
其中request是预定义的常量整数。
然后我有了onActivityResult():
public void onActivityResult(int req, int res, Intent data) throws NullPointerException
{
try{
super.onActivityResult(req, res, data);
if(req == request)
{
Bitmap picture = (Bitmap) data.getExtras().get("data");
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(picture);
}//if
else
{
Toast.makeText(getApplicationContext(), "No picture taken", 4);
}//else
}catch (NullPointerException e){
String error = "null pointer exception";
Toast.makeText(getApplicationContext(), error, 4);
}
}//onActivityResult
我的困境是我这台电脑上没有相机。我得到了eclipse的默认棋盘格和移动方形动画。这实际上有用吗?我一直在点击“拍照”按钮但没有发生任何事情。我想要发生的是拍摄一张照片,然后将其返回到调用i的活动中。这是默认操作还是我必须在拍摄一张照片后指定我希望它返回?
提前感谢您的帮助。
答案 0 :(得分:2)
YEah,较新的模拟器(2.3.3)应该可以进行测试。
某些设备存在以不同格式返回数据的问题。相反,你可以做的是,将一个位置(你可以选择)传递给相机应用程序,它会将新图像保存到该位置,你可以盲目地使用你指定的位置。
例如
File tempFolder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/myfolder"); tempFolder.mkdir(); file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/myfolder", String.valueOf(System.currentTimeMillis()) + ".jpg"); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); startActivityForResult(intent, TAKE_PICTURE);
答案 1 :(得分:0)
我不确定模拟器及其功能,但这是一个你可能会觉得有用的教程:
http://achorniy.wordpress.com/2010/04/26/howto-launch-android-camera-using-intents/
答案 2 :(得分:0)
有问题的代码最终起作用了。在设备上测试后,根据需要返回图片。 Eclipse的模拟相机根本无法正常工作。如果我没记错,你可以启用相机,但这完全是一个不同的讨论。