Articles of 相机

Android相机预览尺寸问题

我的应用程序使用表面支架打开相机。 相机将以默认预览尺寸打开。 在某些设备上,默认预览大小会捕获比屏幕上实际可见的图像更多的图像。 为了避免这种情况,我开始自己设置预览大小。 标准是从可用的尺寸列表中选择预览尺寸,该尺寸最接近屏幕的宽度。 这在大多数情况下效果很好。 但我经常偶然发现一些不喜欢我选择的预览尺寸的设备。 1)Nexus 4没有捕获我选择的预览尺寸之一的图像。 2)Samsung S 4沿拍摄的图像提供线条(噪声)。 所以我想了解我是否正在做任何违反标准的事情。 以下是我的问题: – 1)我正在使用表面支架打开相机。 有没有其他方法可以在我的应用程序中使用相机硬件。 2)我从可用尺寸列表中选择预览尺寸。 在选择任何尺寸之前,我应该寻找哪些具体的东西? 选择尺寸的逻辑如下: – private Camera.Size getBestPreviewSize(int width, int height) { List sizes = camera.getParameters().getSupportedPreviewSizes(); if (sizes == null) return null; Size optimalSize = null; double minDiff = Double.MAX_VALUE; int targetHeight = height; int targetWidth = width; int […]

Android – 如何从相机或图库拍摄照片

我想让用户从相机或设备中的现有图片(图库或其他)拍摄照片。 我怎样才能做到这一点? 我已经实现了下面的解决方案,这似乎工作正常,但文档很混乱,所以我想知道是否有更好的解决方案。 另外,看看这个相关的post。 在那里,您将看到如何获取图像路径或位图: 以编程方式从Android的内置Gallery应用程序中获取/选择图像 因此,在我的解决方案中,您将创建一个TakePictureHelper对象并执行以下操作。 假设您显示一个对话框,用户可以选择“相机”或“其他”。 当用户选择一个选项时,您可以调用takeFromCamera()或takeFromOther() 。 当拍摄(或不拍摄)照片时,将调用onActivityResult()方法。 在那里你会调用retrievePicture ,它将返回图片的Uri,如果没有拍照,则返回null。 如果我不清楚,请告诉我你的想法,分享想法或问我任何事情。 非常感谢你! import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; public class TakePictureHelper { public final static int REQUEST_CAMERA = 1; public final static int REQUEST_OTHER = 2; private Uri cameraImageUri; /** * Request […]

android phonegap相机和图片上传

自从星期五以来,我一直在尝试做这项工作,搜索谷歌和这里。 我的最终目标是能够拍摄多张带有标题和描述的照片,并将它们上传到服务器,然后显示在网页上。 到目前为止我所拥有的是:能够为一个图像提供标题和描述,浏览图库,查找图像并选择它。 但是,当我这样做时,图像会立即与表单一起上传。 我希望能够使用提交按钮执行此操作。 我还有一个按钮来拍摄图像,并显示页面上的图像预览。 但是当我用相机拍摄图像时,我不知道如何上传我的表格。 我能够使用div和innerHTML调用在屏幕上打印图像数据……但老实说,我已经迷失了,甚至不知道从哪里开始发布特定的代码片段。 我将发布目前存在的整个页面…. File Transfer Example var pictureSource; // picture source var destinationType; // sets the format of returned value // Wait for Cordova to load // document.addEventListener(“deviceready”, onDeviceReady, false); // Cordova is ready // function onDeviceReady() { pictureSource=navigator.camera.PictureSourceType; destinationType=navigator.camera.DestinationType; } function browse(){ navigator.camera.getPicture(uploadPhoto, function(message) { alert(‘get picture failed’); […]

如何在android中获取相机拍摄的照片的默认目录?

我希望在android中获取相机制作的照片的默认目录。 我认为代码A可以做到这一点, /storage/sdcard0/DCIM显示在日志中, 但事实上,我的相机拍摄的照片存储在文件夹/storage/extSdCard/DCIM 如何在android中获取相机拍摄的照片的默认目录? 谢谢! 代码A. File dir10 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); Log.e(“MainActivity”, “getExternalStoragePublicDirectory() 10:” + dir10.toString()); 更多 看来相机拍摄的照片的默认存储位置是由用户设置的,有时是存储卡,有时是SD卡。 我希望知道用户为相机制作的商店照片选择了哪个存储位置。

Android Camera Preview在相机之间切换

嗨伙计们,我试图在显示相机预览时切换设备的前后相机。 我正在关注普通商品提供的样品。 下面是我正在使用的代码,每当我点击翻转按钮时,表面视图变黑,我不知道我哪里出错了。 请帮我解决这个问题。 我搜索了这个,我没有得到任何合适的答案,因为有些人试图重新启动当前活动,但我不想这样。 希望有更好的回应。 提前致谢。 package com.commonsware.android.camera; import android.app.Activity; import android.hardware.Camera; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.Toast; import android.widget.ToggleButton; public class PreviewDemo extends Activity { private SurfaceView preview = null; private SurfaceHolder previewHolder = null; private Camera camera = null; private boolean inPreview = false; […]

如何从呼叫意图回去

我打电话给相机拍照。 但拍完照片后我无法回到原来的活动。 有什么问题? 谢谢。 public void addEntry(View view) { String EntryName=RegisterName.toString(); Toast.makeText(this, EntryName, Toast.LENGTH_LONG); Intent addEntryintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File file = new File(getFilesDir(),EntryName); registeryFileUri = Uri.fromFile(file); addEntryintent.putExtra(MediaStore.EXTRA_OUTPUT, registeryFileUri); startActivityForResult(addEntryintent,TAKE_PICTURE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == TAKE_PICTURE) { if (data != null) { Toast.makeText(this, “Successfully Registered!”, Toast.LENGTH_LONG); […]

Camera 2 – API – 使用前置摄像头时图像捕获无效?

在我的相机应用程序中,我有一个按钮可以将相机面向前方或后方更改,我可以使用后置相机捕捉并保存图像,但是当我切换到前置相机时,我无法捕捉图像。 这就是我将相机切换到前面或后面的方式。 ImageView switch_camera =(ImageView) rootview.findViewById(R.id.imageView7); switch_camera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // facing = characteristics.get(CameraCharacteristics.LENS_FACING); if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) { //isfrontcam=true; try { //manager.openCamera(getBackFacingCameraId(manager), mStateCallback, mBackgroundHandler); closeCamera(); openCamera(mTextureView.getWidth(), mTextureView.getHeight(),”0″); Log.e(“opening “,”BackCam”); facing = 1; } catch (SecurityException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } […]

Android:取消注册相机按钮

我试图将一些动作绑定到相机按钮: videoPreview.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN) { switch(keyCode) { case KeyEvent.KEYCODE_CAMERA: //videoPreview.onCapture(settings); onCaptureButton(); … } } return false; } }); 然后按下按钮,应用程序崩溃,因为原始Camera应用程序启动。 有没有人知道如何在按下相机按钮时防止相机应用程序启动?

Android相机预览看起来很奇怪

我正在实现一个相机应用程序,当我查看预览(特别是前置摄像头)时,图像非常胖。 看起来图像水平拉伸。 我使用优化的相机大小跟踪sdk示例,但它没有帮助。 如何调整相机设置以便像其他相机应用程序一样进行预览? 谢谢。 我的代码如下。 public class CameraActivity extends Activity implements SurfaceHolder.Callback, Camera.ShutterCallback, Camera.PictureCallback { Camera m_camera; SurfaceView m_surfaceView; int m_numOfCamera; int m_defaultCameraId; int m_currentCamera; int m_surfaceWidth; int m_surfaceHeight; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera); getActionBar().setDisplayHomeAsUpEnabled(true); m_surfaceView = (SurfaceView)findViewById(R.id.cameraPreview); m_surfaceView.getHolder().addCallback(this); m_camera = Camera.open(); m_numOfCamera = Camera.getNumberOfCameras(); CameraInfo cameraInfo = new CameraInfo(); for […]

onPreviewframe只调用一次

我正在开发相机应用程序,你需要提取每帧预览的一些数据,所以我试图用onPreviewFrame来做,问题是我的代码onPreviewFrame只调用一次而调试我没有得到错误所以我不知道该怎么办 这是我的代码 public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private static final String TAG = “CameraPreview”; private SurfaceHolder mHolder; private Camera mCamera; public byte[] buffer;//for previewcallback public CameraPreview(Context context, Camera camera) { super(context); Log.d(“Function”, “CameraPreview constructor iniciado”); mCamera = camera; // Install a SurfaceHolder.Callback so we get notified when the // underlying surface is […]