Articles of android camera

SurfaceView与纹理视图相机?

我想在我的应用程序中join相机function,这将允许视图本身的布局转换,更改其大小,预览大小以及高效地处理方向更改。 我应该使用TextureView还是SurfaceView ? 决定决定..

Android:BroadcastReceiver意图检测相机拍摄的照片?

我正在开发一个Android应用程序,每次使用手机拍摄新图像时都需要执行一个操作。 我不想在应用程序中拍摄图像,而是在相机应用程序拍摄图像并将其保存到SD卡时执行一些操作。 现在,我得到了一个BroadcastReceiver,目前正在侦听“android.intent.action.CAMERA_BUTTON”。 但是,这似乎并没有被调用,当我想要它。 我尝试在自己的电话上用BroadcastReceiver的OnReceive方法的第一行中的换行符来debugging应用程序,但它永远不会到达该代码。 有谁知道我应该听的正确意图是什么? 还是使用BroadcastReceiver甚至不是最好的方式来做到这一点? (例如,有没有更好的方法来完成这一点,比如听一个新的图像保存到卡上)? 谢谢! 更新:我的手机上有一个轨迹球(HTC Eris),那么以这种方式拍摄照片可能不会作为“相机button”发送? 如果是这样,有没有一个“相机button”,而是像一个轨迹球的手机的解决方法?

如何查找相机是否在使用?

有什么方法可以findAndroid 相机是否在代码中使用?

设置Android照片EXIF方向

我写了一个Android活动,以编程方式捕获照片。 我想用正确的EXIF方向数据将图像保存为JPEG格式(就像原生Android Camera应用程序自动执行一样)。 这里是实际拍摄照片的方法(我删除了try / catch块): private void takePhoto() { camera = Camera.open(); SurfaceTexture dummySurfaceTexture = new SurfaceTexture(0); camera.setPreviewTexture(dummySurfaceTexture); camera.startPreview(); camera.takePicture(null, null, jpgCallback); } …和callback: private Camera.PictureCallback jpgCallback = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { releaseCamera(); savePhoto(data); }; 照片拍摄正确,但我的问题是,EXIF数据显示方向设置为“图像方向:顶部,左手”,无论设备的方向如何,所以当我上传照片时,它看起来倒过来或旋转。 我是否真的需要手动捕捉设备方向(滚动,俯仰,方位angular)并自己写EXIF方向? 相机应用程序如何自动正确地写入这些数据? 有谁知道正确设置此属性的方法吗? 编辑:我不能使用屏幕方向作为活动被locking到肖像模式。

带相机意图的照片,并在imageView或textView中显示?

我有一个关于如何使用相机意图(或相机API)拍摄图像的问题,然后将图像放入一个imageView中,以便在我的应用程序中显示。 这是我迄今为止。 我设置了一个button Button btnPicture = (Button) findViewById(R.id.btn_picture); btnPicture.setOnClickListener(this); 我设置了一个Camera方法 private void Camera() { Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, TAKE_PICTURE_CODE); intent.setAction(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(intent, REQUEST_CODE); } 而这就是我迷失的地方。 我正在处理我拍摄的图像。 private void processImage(Intent intent) { setContentView(R.layout.imagelayout); ImageView imageView = (ImageView)findViewById(R.id.image_view); cameraBitmap = (Bitmap)intent.getExtras().get("data"); imageView.setImageBitmap(cameraBitmap); } 我的意图是显示您在image_view中采取的图像。 我没有收到错误,没有任何反应。 当我拍照时,我被要求拍摄另一张照片,或者在我使用设备后退button后,应用程序closures。 看来我完全被我的应用程序拿走了,返回是个大问题。 有什么build议么? 我错过了什么? 哦,这是我的onActivityResult protected void onActivityResult(int requestCode, int […]

安卓相机的人像定位

我在我的应用程序中使用相机。 我只是用intent启动相机 Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(cameraIntent, 101); 捕获的图像自动进入landscape view 。 如何让camera以portrait view捕捉图像

在SurfaceView加载Camera Preview时显示我的布局

我有一个简单的屏幕,一个开始button。 当按下“开始”button时,我想要使用SurfaceView转到新的屏幕以显示相机。 一切工作正常,但相机需要一段时间来加载,这给了我一个黑屏。 我想要加载新的布局。 而且,它已经加载后启动相机… 因此,我做的所有相机加载在后台线程,但仍然,我得到一个黑屏…这是我的布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/RelativeLayout1" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/blue_bg"> <SurfaceView android:id="@+id/surface_camera" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:layout_below="@id/scan_header" android:layout_above="@id/scan_footer"> </SurfaceView> </RelativeLayout> 这里是我的活动,加载新视图的方法: private void setContent() { setContentView(R.layout.scan) Thread t = new Thread() { public void run() { final SurfaceView mSurfaceView = (SurfaceView)findViewById(R.id.surface_camera); final SurfaceHolder mSurfaceHolder = mSurfaceView.getHolder(); try { cameraView […]

如何从相机裁剪图像

我如何裁剪照相机图像。 现在它正在显示作物的图像,并在点击“ 保存 ”button之后select了剪切部分。 其显示为“ 节能形象 ”。 之后,什么都没有发生。 这是我的代码。 button点击: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString()); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 0); intent.putExtra("aspectY", 0); intent.putExtra("outputX", 200); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, CAMERA_PIC_REQUEST); onActivityResult: Bundle extras = data.getExtras(); Bitmap bitmap = (Bitmap) extras.get("data"); if (bitmap != null) { Img_View.setImageBitmap(bitmap); }

startPreview函数很慢,任何工作?

问题: 我正在做一个应用程序,需要在拍摄图像时从相机快速响应的android,我注意到从应用程序的一个缓慢的行为,经过测量的时间后,我注意到,函数startPreview()是负责的问题。 代码预览: 这是代码的必要部分(与问题有关)。 预览 Google 类(自定义预览): 在应用程序开始时调用surfaceChanged,我设置了一些摄像机参数,然后调用startPreview public class PreviewGoogle extends ViewGroup implements SurfaceHolder.Callback { private final String TAG = "myapp1"; Camera mCamera; public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { try { // Now that the size is known, set up the camera parameters and begin // the preview. Camera.Parameters […]

setOrientationHint在一些手机的前置摄像头(HTC)上逆时针旋转video

问题:某些Android设备(问题底部列出)在使用前置摄像头拍摄的video的setOrientationHint(int degrees)function时会出现意外的行为。 预期的行为是video顺时针旋转,但这些设备逆时针旋转video。 我的目标:在相机设置或硬件方向内识别variables,使我可以预知何时会发生这种情况。 具体来说, 我想避免在我的代码中特别套住这些手机! 更多解释:我使用标准的MediaRecorder对象录制video,在准备录制时,使用setOrientationHint()设置video的方向。 在setOrientationHint()的文档中,为degrees参数指定了以下内容: 度 – 以度数顺时针旋转的angular度。 支持的angular度是0,90,180和270。 该function旨在添加包含旋转angular度的合成matrix,以便video播放器可按预期显示video。 所以,我所做的是使用CameraInfo类获取相机硬件的方向, CameraInfo其用作setOrientationHint fn中的degrees参数。 (我已经尝试使用AOSP作为指导,对此代码进行修改,但是我得到了完全相同的结果。) 一个真实的例子:三星Galaxy S3前置摄像头(以及其他大多数其他摄像头)的硬件方向将为270,因此在录制时使用此方式,并且所得video显示正确。 HTC Vivid同样会为相同的相机返回270的硬件方向,但只有在setOrientationHint fn中使用90 degrees作为degrees参数时才能正确显示。 如果我像其他手机一样使用270的硬件定位,则video将会颠倒。 注意: setOrientationHint()函数包含一个警告: 请注意,某些video播放器可能会在播放期间忽略video中的构图matrix。 但是,这不是发生的事情,因为我可以很容易地解决这个问题,如果我假装它,把90而不是270。 我曾见过的手机具体展示了这个问题:运行Android 4.0.3的HTC Vivid(PH39100),运行Android 4.0.3的HTC EVO 4G(PG86100),运行Android 2.3.4的HTC Thunderbolt(ADR6400L)。 注意他们都是HTC手机。 也许有人在HTC错误顺时针逆时针。