- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近我编写了一个 Android 应用程序,它需要从内置相机拍摄照片并将其取回我的应用程序。我使用了众多教程中的一个,一切正常。但后来我在不同的设备上测试了它,但没有任何效果。似乎有问题,那么我如何确保我可以在每台设备上拍照? (看我的回答,这更像是一个教程)
最佳答案
我使用了众多教程中的一个,一切正常。但后来我在不同的设备上测试了它,但没有任何效果。起初我很惊讶,但后来我决定深入探讨这个话题。我意识到很多这样的教程会导致一个大问题。所以我决定与您分享我的经验。
让我从大多数教程使用的通用方法开始。
首先你选择一个像这样的requestID:
private static final int CAMERA_PIC_REQUEST = 1337;
然后你创建一个Intent并启动相机Activity
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
要取回图片,您可以使用 onActivityResult 函数并从接收到的 Intent 数据中读取图片
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK && data != null) {
// do something like
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
}
}
看起来不错吧?很好,但现在是棘手的部分。
如 android 文档中所写, Intent 数据只会返回一个 sacled down 或者可以说是拍摄照片的小版本,而某些设备根本不会返回任何东西!甚至可能发生数据不为空但您收到“传递结果 ResultInfo 失败”异常的情况。
那现在呢?解决方案非常简单。你只需告诉相机将图片保存到 SD 卡并返回一个 URI 到这个文件。下面,我将向您展示上面编辑的代码。
我们创建一个静态请求 ID 和一个 URI
private static final int CAMERA_PIC_REQUEST = 1337;
private static Uri outputFileUri;
我们创建了相机 Activity ,但这次我们传递了一个额外的参数(我们的 URI)
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
现在我们使用与上面相同的方法来处理图像,但我们使用我们的 URI 而不是使用 Intent 数据
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
// do something to get the bitmap from the uri for example
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), outputFileUri);
}
使用此解决方案,您可以确保在每台设备上都能获得照片。但是要小心,因为您得到的是全尺寸位图,可能需要缩小位图以避免内存不足错误。如果您不想将照片保存在用户的 SD 卡上,只需删除该文件即可。
感谢阅读!
关于Android:从相机获取图片 - 小心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303937/
最近我编写了一个 Android 应用程序,它需要从内置相机拍摄照片并将其取回我的应用程序。我使用了众多教程中的一个,一切正常。但后来我在不同的设备上测试了它,但没有任何效果。似乎有问题,那么我如何确
开发工具:VS2010,MVC4.0,SQLSERVER2008 服务器:Windows server 2012,IIS8,SQLSERVER2012 1、发布后,每个页面第一次打开都很卡,5
这个真的让我很反感。我有一个表单,由应用程序的主要表单生成并拥有,用于搜索记录。表单布局在停靠的 TableLayoutPanel 中,结合了绝对和百分比大小的行/列,以便我的标签在数据输入和结果控件
我正在尝试做这样的事情: #include #include int main() { int l[] = {1,2,3,4}; vector vi(4); copy(l,
我正在使用 Magento 的功能来插入和更新查询。我的要求是在执行这些类型的查询时要处理 SQL 注入(inject)。但我无法找到 Magento 是如何做到这一点的。我正在提供一个起始样本。请给
用换行符分割字符串会导致麻烦的错误。请看我的回答。 原始问题 - 由于无法在日志中看到不可见字符而导致的 XY 问题。 public void DoCommand(String cmd) {
我是一名优秀的程序员,十分优秀!