相关疑难解决方法(0)

从相机拍摄照片无需预览

我正在编写一个Android 1.5应用程序,它在启动后启动.这是一个Service,应该拍照没有预览.此应用程序将记录某些区域的光密度.我能够拍照,但照片是黑色的.

经过长时间的研究,我遇到了一个关于它的bug线程.如果您不生成预览,则图像将为黑色,因为Android相机需要预览才能设置曝光和对焦.我创建了一个SurfaceView和听众,但onSurfaceCreated()事件永远不会被解雇.

我想原因是,表面没有在视觉上创造.我还看到了静态调用相机的一些例子,MediaStore.CAPTURE_OR_SOMETHING它们拍摄照片并用两行代码保存在所需的文件夹中,但它也没有拍照.

我是否需要使用IPC并bindService()调用此功能?或者是否有另一种方法来实现这一目标?

android android-service android-camera

57
推荐指数
7
解决办法
7万
查看次数

使用camera2 API无需预览即可捕获图片

我想要实现的是捕获图片而不显示预览,直接将输出发送到ImageReader.我使用Camera2Basic示例作为起点.但是,我的调用ImageReader永远不会被调用,因此没有图像被发送到它Surface.我真的需要先显示预览吗?

这是摄像机代码,它按照异步回调的流程排序:

private ImageReader imageReader;
private Handler backgroundHandler;
private HandlerThread backgroundThread;
private String cameraId;
private CameraDevice cameraDevice;
private CameraCaptureSession cameraCaptureSession;
    @Override
    public void onCreate() {
        setupCamera2();
    }

    private void setupCamera2() {
        CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);

        try {

            for (String cameraId : manager.getCameraIdList()) {
            CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);

            if (characteristics.get(CameraCharacteristics.LENS_FACING) != CameraCharacteristics.LENS_FACING_FRONT) {
                continue;
            }

            this.cameraId = cameraId;

            int[] picSize = Settings.getPictureSize();
            int picWidth = picSize[0];
            int picHeight = picSize[1];

            imageReader = …
Run Code Online (Sandbox Code Playgroud)

camera android

20
推荐指数
3
解决办法
4万
查看次数

无需用户互动即可自动拍照

我用这段代码从相机中捕捉图像.

package android.takeowneship;


import java.io.File;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.ImageView;
import android.widget.Toast;


public class camera extends Activity{


    private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;

    Uri imageUri;
    private ImageView imageView;

     @Override
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

          //define the file-name to save photo taken by Camera activity
            String fileName = "new-photo-name.jpg";
            //create parameters for Intent with filename
            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.TITLE, fileName);
            values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture …
Run Code Online (Sandbox Code Playgroud)

camera android android-camera-intent

15
推荐指数
1
解决办法
3万
查看次数

android - 使用没有surfaceview或textureview的相机

我一直试图弄清楚是否有办法使用相机拍摄视频/图片而不定义surfaceview或textureview.我找到了这个链接:使用没有表面视图的Android相机

我在我的nexus平板电脑上使用了这个技巧和textureview,但没有运气!此外,http://handycodeworks.com/?p = 19表示此方法不适用于所有设备.

有没有人知道是否有办法做到这一点?或者它只是android框架根本不支持的东西,GUI必须在布局中有一些表面/纹理元素?然后唯一的选择就是操纵布局,使其在屏幕上根据应用程序要求不可见.

编辑1:如上面链接http://handycodeworks.com/?p=19中所述,我尝试了以下代码:

public class CameraCapture {

  // I pass the getApplicationContext() from the main activity.
  public void startCameraCapture(Context contx) {
    SurfaceView sv = new SurfaceView(contx);
    mCamera = Camera.open();
    mCamera.setPreviewDisplay(sv.getHolder());
    mCamera.setPreviewCallback(new PreviewCallback() {
      @Override
      public void onPreviewFrame(byte[] data, Camera camera) {
        Log.v("TAG", "on preview frame called");
      }
    Thread.sleep(1000);
    mCamera.startPreview();
}
Run Code Online (Sandbox Code Playgroud)

但是,onPreviewFrame()从未被调用过.我错过了什么吗?

编辑2:

是否可以在本机代码中执行?使用OpenCV捕获视频/使用没有GUI元素的相机(surfaceview/textureview)?我查看了这个链接:http://docs.opencv.org/trunk/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#application-development-with-static-initialization.但是,它们还显示示例代码,其中包含在主布局xml文件中定义的某些摄像机视图元素.

android opencv android-intent android-layout android-camera

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

Android - 无预览拍照

我试图在没有预览的情况下拍摄照片,当我的应用程序开始运行时立即拍摄,然后将图片保存在根文件夹中的新文件夹 - "pictures123"中.有人可以告诉我我的代码有什么问题吗?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    File directory = new File(Environment.getExternalStorageDirectory() + "/pictures123/");

    if (!directory.exists()) {
        directory.mkdir();
    }

    Camera camera = Camera.open(0);
    Camera.Parameters parameters = camera.getParameters();
    parameters.setPictureFormat(ImageFormat.JPEG);
    camera.setParameters(parameters);
    SurfaceView mview = new SurfaceView(getBaseContext());
    camera.setPreviewDisplay(mview.getHolder());
    camera.setPreviewDisplay(null);
    camera.startPreview();
    camera.takePicture(null,null,photoCallback);
    camera.stopPreview();
}

Camera.PictureCallback photoCallback=new Camera.PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {

        try {
            String root = Environment.getExternalStorageDirectory().toString();
            File myDir = new File(root + "/pictures123");
            File file = new File (myDir, "pic1.jpeg");
            FileOutputStream out = new FileOutputStream(file); …
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-camera

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