标签: android-camera

如何使相机可以使用连拍模式

我正在尝试用相机的连拍模式构建一个小型照片应用程序.主要思想是每0.3秒拍摄一张图片,并将图片存储在一个数组中,直到拍完最后一张照片.应指定要​​拍摄的照片数量.

我每2秒只拍一张照片.最短的间隔.然后,当应该将图片写入存储时,应用程序会崩溃.

有人知道如何实现这个吗?这是我的代码:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;

public class CamaeaView extends Activity implements SurfaceHolder.Callback, OnClickListener {

    static final int FOTO_MODE = 1;
    private static final String TAG = "Test";
    Camera mCamera;
    boolean mPreviewRunning = false;
    private Context mContext …
Run Code Online (Sandbox Code Playgroud)

java android android-camera

11
推荐指数
1
解决办法
8354
查看次数

Android相机表面视图

我正在尝试为相机创建一个表面视图,以便在相机视图中呈现在表面上.目前我在相机视图中看到的只是一个黑屏视图.我试图在谷歌和这里看,但到目前为止,我还没有找到我想要的东西.任何人都可以建议我一些想法.

android android-camera

11
推荐指数
1
解决办法
2万
查看次数

Android模拟器相机自定义图像

有人知道有可能在模拟器相机启动时打开一些个人照片吗?

例如,我有一个基于图像分析的应用程序,我想当我点击相机按钮时相机打开而不是默认的Android模拟器运动图像.我希望它打开一些我设置为默认图像的图像.因此,当我选择拍照时,它只显示该图像,当我拍摄照片时,该图像将保存到图库,而不是Android默认图像.

Tnx :)

android overriding image android-emulator android-camera

11
推荐指数
5
解决办法
5978
查看次数

android静音相机快门声?

我正在使用这个

camera.takePicture(null, rawCallback, jpegCallback);

但是有些设备会在相机拍摄图像时发出声音.

请任何人帮忙,我怎样才能将相机快门声静音?

android android-camera

11
推荐指数
3
解决办法
2万
查看次数

takePicture因堆相关错误而失败

第一件事:在2个不同的HTC Desires上发生以下错误,一个是2.3.3,另一个是4.0.4.

尝试调用时,我收到以下错误消息.takePicture:

E/MemoryHeapBase(104): error opening /dev/pmem_camera: No such file or directory
E/QualcommCameraHardware(104): failed to construct master heap for pmem pool /dev/pmem_camera
E/QualcommCameraHardware(104): initSnapshot X failed with pmem_camera, trying with pmem_adsp
Run Code Online (Sandbox Code Playgroud)

在此错误之后永远不会调用相应的PictureCallback.

我能找到的唯一解释是a)没有调用startPreview; b)尝试拍摄太快(在调用图片回调之前); c)未设置正确的使用/权限

我在这里,在我的FullscreenActivity的onResume()中执行a):

//open the camera resource
cam = Camera.open();

Camera.Parameters params = cam.getParameters();
//change Parameters
params.setJpegQuality(100);//best quality
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
//params.setZoom(2);
List<Size> supportedPreviewSizes = cam.getParameters().getSupportedPreviewSizes();
params.setPreviewSize(supportedPreviewSizes.get(0).width, supportedPreviewSizes.get(0).height);
cam.setParameters(params);

SurfaceView sv = (SurfaceView)this.findViewById(R.id.surfaceView1);
SurfaceHolder mHolder = sv.getHolder(); 
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
mHolder.setSizeFromLayout();
mHolder.addCallback(this);

try {
    cam.setPreviewDisplay(mHolder);
} catch (IOException e) …
Run Code Online (Sandbox Code Playgroud)

java android android-camera

11
推荐指数
1
解决办法
915
查看次数

Camerainfo.orientation给出了错误的答案

Android提供此代码,使相机预览面朝上显示所有相机和屏幕方向:

public static void setCameraDisplayOrientation(Activity activity,
         int cameraId, android.hardware.Camera camera) {
     android.hardware.Camera.CameraInfo info =
             new android.hardware.Camera.CameraInfo();
     android.hardware.Camera.getCameraInfo(cameraId, info);
     int rotation = activity.getWindowManager().getDefaultDisplay()
             .getRotation();
     int degrees = 0;
     switch (rotation) {
         case Surface.ROTATION_0: degrees = 0; break;
         case Surface.ROTATION_90: degrees = 90; break;
         case Surface.ROTATION_180: degrees = 180; break;
         case Surface.ROTATION_270: degrees = 270; break;
     }

     int result;
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
         result = (info.orientation + degrees) % 360;
         result = (360 - result) % 360;  // compensate …
Run Code Online (Sandbox Code Playgroud)

android android-camera

11
推荐指数
0
解决办法
1736
查看次数

强行关闭后Android相机锁定

我有一个应用程序,我使用设备相机.

现在我只在正常流量下释放相机.

@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
    if(camera != null) {
        camera.stopPreview();
        camera.release();
    } 
} 
Run Code Online (Sandbox Code Playgroud)

因此,应用程序以意外的方式退出相机模式 - 即强制关闭(由于OutOfMemoryError) - 相机被锁定.释放它的唯一方法是重启设备.

申请开始后,我得到: RuntimeException: Fail to connect to camera service

我怎么能确定,相机在任何情况下都会被释放?

android android-camera

11
推荐指数
1
解决办法
4892
查看次数

有没有一种程序化的方法来检测相机是否有光学变焦?

似乎有一些Android设备有光学变焦,例如

  • 三星S4 Zoom(OS 4.2)
  • Altek A14和A16(OS 2.3.5)

有没有办法以编程方式检测这个?

由于相机通常需要几秒钟来初始化,在我的应用程序中有一些流程我启动相机预期用户即将使用它(因此应用程序感觉更快,当他们实际按下我的应用内相机按钮) .如果相机具有光学变焦,那么我不想这样做,因为镜头滑出并使用户烦恼.

如果我必须将这些设备列入黑名单,是否有人知道所有带有光学变焦的Android设备的列表,最好是使用他们的Build.MANUFACTURERBuild.PRODUCT字符串?

如果它有帮助,这里是我最近购买的S4 Zoom的Camera.Parameters:

{preferred-preview-size-for-video=704x528, factory-af-led-lv-limit=-1,-1, zoom=0, factory-af-scan-limit=-1,-1, max-num-detected-faces-hw=0, continuous-mode=off, zoom-supported=true, metering=center, whitebalance=auto, scene-mode=auto, jpeg-quality=1, factory-testno=0, factory-af-diff-check=-1,-1, preview-format-values=yuv420sp,yuv420p, best-mode=off, red-eye-fix=fail, jpeg-thumbnail-quality=100, preview-format=yuv420sp, low-light-mode=off, zoom-action=zoom-stop, face-detection=off, video-size-values=1920x1080,1280x720,800x450,768x512,640x480,320x240,176x144, factory-zoom-slope-check-data=-1,-1, preview-size=960x540, focal-length=4.300000, flash-charging=0, factory-cap-range=-1,-1, factory-iris-range=-1,-1, flash-mode-values=off,auto,red-eye,on,fillin,slow,red-eye-fix, preview-frame-rate-values=30,15, factory-af-scan-range=-1,-1, max-num-metering-areas=0, preview-frame-rate=30, focus-mode-values=auto,infinity,macro,fixed,face-detection,continuous,continuous-picture,continuous-video,manual,multi,touch,object-tracking, jpeg-thumbnail-width=224, video-size=0x0, scene-mode-values=auto,portrait,landscape,night,beach,snow,sunset,fireworks,sports,party,candlelight,dusk-dawn,fall-color,back-light,text, preview-fps-range-values=(7000,30000), jpeg-thumbnail-size-values=224x126,160x120,192x128,0x0, zoom-ratios=100,120,140,160,180,220,310,420,560,790,1000, preview-size-values=960x540,768x512,704x576,704x528,640x524,640x480,320x240, smart-scene-detection=0, factory-zoom-range-check-data=-1,-1, factory-af-led-range=-1,-1,-1,-1, picture-size-values=4608x2592,3264x2448,4608x3456,4608x3072,4096x2304,3960x2640,3648x2736,2592x1944,2304x1728,1984x1488,1920x1080,1024x768,960x720,640x480, preview-fps-range=7000,30000, auto-whitebalance-lock=false, min-exposure-compensation=-6, antibanding=off, max-num-focus-areas=1, vertical-view-angle=46.3, factory-wb-value=-1,-1,-1,-1, zoom-ring=-1, horizontal-view-angle=67, video-stabilization-supported=false, jpeg-thumbnail-height=126, continuous-fps=, focus-mode=auto, factory-sc-speedtime=-1,-1, factory-gyro-range-data=-1,-1,-1,-1, auto-whitebalance-lock-supported=true, video-frame-format=yuv420sp, max-num-detected-faces-sw=0, …
Run Code Online (Sandbox Code Playgroud)

android android-camera

11
推荐指数
1
解决办法
2411
查看次数

android.hardware.Camera $ EventHandler.handleMessage

我正在编写一个程序,我正在拍照,然后想要将图片存储到SD卡中,最后尝试调整现有图像的大小(然后用旧图像重写).

我的代码几乎可以在所有设备上正常工作,但仅在三星设备上遇到此问题.

当我捕捉图像时,我无法将图像存储到SD卡中

logcat的:

12-05 18:23:15.407: E/AndroidRuntime(2378): FATAL EXCEPTION: main
12-05 18:23:15.407: E/AndroidRuntime(2378): java.lang.NullPointerException
12-05 18:23:15.407: E/AndroidRuntime(2378):     at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:461)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at com.example.kdh.TakePhotoActivity$1.onPictureTaken(TakePhotoActivity.java:325)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at android.hardware.Camera$EventHandler.handleMessage(Camera.java:789)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at android.os.Looper.loop(Looper.java:137)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at android.app.ActivityThread.main(ActivityThread.java:4921)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at java.lang.reflect.Method.invokeNative(Native Method)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at java.lang.reflect.Method.invoke(Method.java:511)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803)
12-05 18:23:15.407: E/AndroidRuntime(2378):     at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

码:

private void createCamera() {
                // Create an instance …
Run Code Online (Sandbox Code Playgroud)

camera android bitmap android-hardware android-camera

11
推荐指数
2
解决办法
573
查看次数

摄像机结果始终返回RESULT_CANCELED

我想用相机拍照.我只是暂时需要它们,所以我做了以下事情:

private void takePicture() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    if (intent.resolveActivity(this.getActivity().getPackageManager()) != null) {
        try {
            this.imageFile = File.createTempFile("CROP_SHOT", ".jpg", this.getActivity().getCacheDir());

            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(this.imageFile));
            intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);

            this.startActivityForResult(intent, Globals.REQUEST_TAKE_PHOTO);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的RESULT_CANCELED是我的结果代码onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.v("PictureEdit", "onActivityResult");

    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode == Activity.RESULT_OK) {
        if(requestCode == Globals.REQUEST_TAKE_PHOTO) {
            Log.v("PictureEdit", "onActivityResult take photo");

            this.startCropImage(Uri.fromFile(this.imageFile));
        } else if (requestCode == Globals.REQUEST_PICK_PHOTO) {
            Log.v("PictureEdit", "onActivityResult pick photo"); …
Run Code Online (Sandbox Code Playgroud)

android android-camera

11
推荐指数
1
解决办法
4627
查看次数