标签: android-camera

相机意图/活动 - 避免保存到图库

我正在使用Camera Activity来捕捉图片.我用MediaStore.EXTRA_OUTPUT额外参数调用它.图像被正确保存到提供的路径,把它保存到图库文件夹,所以我可以在"图库"应用程序中查看图像 - 我可以避免这种情况吗?

...
File file = new File(Environment.getExternalStorageDirectory(), "Test.jpg" );
iImageOutputUri = Uri.fromFile( file );

// Start camera intent to capture image
Intent intent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, iImageOutputUri );
startActivityForResult( intent, CAPTURE_IMAGE );
...
Run Code Online (Sandbox Code Playgroud)

谢谢

android android-gallery android-camera

13
推荐指数
1
解决办法
4226
查看次数

用android ndk拍照 - 相机api

是否有使用Android NDK拍照的标准API?

或者是否真的有必要通过Java来实现这一目标?

camera android android-ndk android-camera

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

Android相机录制视频但播放颠倒

我使用下面的代码录制视频并且录制完美,但是当它播放视频时,它会颠倒播放.

mrec.setOrientationHint(180)之前尝试过设置,mrec.prepare();但没用.任何提示?

import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import android.app.Activity;
import android.hardware.Camera;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;

/**
 * @author SANA HASSAN
 */
public class CameraSurfaceView extends Activity {

    private Preview mPreview;
    private MediaRecorder mrec = new MediaRecorder();
    private int cameraId = 0;
    private Camera mCamera;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        mPreview = new Preview(this);
        setContentView(mPreview); …
Run Code Online (Sandbox Code Playgroud)

android android-camera

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

在Android上使用Camera API尽快拍照

场景:

我需要尽快拍照并将其保存到SD卡.如果我能在0.2秒左右拍摄照片并保存它,那将是非常棒的.

到目前为止我做了什么:

像往常一样,我创建了一个SurfaceView来处理Camera预览并初始化相机对象.图像的质量不需要非常高,这就是为什么我没有使用尽可能大的分辨率而且也不需要自动对焦的原因.我设置这样的参数:

 Parameters parameters = camera.getParameters();
 parameters.set("jpeg-quality", 70);

 parameters.setPictureFormat(ImageFormat.JPEG);
 List<Camera.Size> sizes = parameters.getSupportedPictureSizes();
 Size size = sizes.get(Integer.valueOf((sizes.size()-1)/2)); //choose a medium resolution
 parameters.setPictureSize(size.width, size.height);
 camera.setParameters(parameters);
 camera.setDisplayOrientation(90);

 List<Size> sizes2 = parameters.getSupportedPreviewSizes();
 Size size2 = sizes.get(0);

 parameters.setPreviewSize(size2.width, size2.height);
 camera.setPreviewDisplay(holder);
 camera.startPreview();
Run Code Online (Sandbox Code Playgroud)

我将图像保存到SD卡非常简单:

PictureCallback handlePictureStorage = new PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            FileOutputStream outStream = null;

            try {
                outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis()));
                outStream.write(data);
                outStream.close();       
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } …
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-camera

13
推荐指数
1
解决办法
8155
查看次数

设置相机大小 - 参数与意图?

我目前正在使用意图拍照,如下所示:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
intent.putExtra("return-data", true);
startActivityForResult(intent, CAMERA_REQUEST);
Run Code Online (Sandbox Code Playgroud)

但我真的需要将图像大小设置为尽可能接近正方形.所以在研究之后,你似乎需要做这样的事情:

Camera camera = Camera.open();
Parameters params = camera.getParameters();
List<Camera.Size> sizes = params.getSupportedPictureSizes();

// Once you will see the supported Sizes, you can define them with the method :

setPictureSize(int width, int height);
Run Code Online (Sandbox Code Playgroud)

我的问题是,这些是一起工作还是一个或两个?哪种方法最适合我的需求?

同样,我有96px到96px的盒子用于用户个人资料图片.用户拍摄照片后,我希望图像无需拉伸即可填满整个盒子.是在拍摄照片时设置尺寸的最佳方法,还是在事后改变imageViewbitmap(或......?)?或者,我应该让用户裁剪图片,我可以定义裁剪区域尺寸吗?

编辑:请参阅赏金以获取更新的问题.

android android-camera

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

如何找到Android手机的相机图像文件夹?

我正在为Android开发相机应用程序.

一个要求是将拍摄的照片保存到设备的默认相机照片文件夹中,即Android本机相机存储的文件夹.

我怎么能弄清楚原生相机存放照片的位置 - 我的理解是,不同品牌(三星,HTC,摩托罗拉,索尼......)和型号(Galaxy Tab,Galaxy S4 ......)可能会有所不同. .)

android android-gallery android-camera android-sdk-2.3

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

在Android中的三星设备上的摄像头捕获方向

我正在创建一个相机应用程序.捕获时的图像显示在网格视图中.现在,代码在除三星设备之外的所有设备上都能正常工作.

我正面临着方向问题.当我以纵向模式拍摄图像时,图像在网格视图中显示时会旋转.我没有保留任何旋转代码.其次,使用EXIF我在网格视图中获得了正确的图像,但是当设备方向改变时,图像再次以旋转的方式旋转.

附加图片: 在此输入图像描述

在此输入图像描述

对不起图像的分辨率.请知道它们是否不正确.将再次上传.我知道SO上有很多这样的帮助.但我想我在某个地方被困住了.

我指的是以下链接:

http://blog.andolaso​​ft.com/2013/06/how-to-show-captured-images-dynamically-in-gridview-layout.html

android screen-orientation android-camera android-camera-intent android-orientation

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

Android相机意图FileUriExposedException for SDK> = 24

我使用此代码从相机获取图片并将其放在imageview上:

  private void openCamera()
{
    mMediaUri =getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

    Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    photoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mMediaUri);
    startActivityForResult(photoIntent, REQUEST_TAKE_PHOTO);
   // dialog.dismiss();


}


private Uri getOutputMediaFileUri(int mediaTypeImage)
{
    //check for external storage
    if(isExternalStorageAvaiable())
    {
        File mediaStorageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);

        String fileName = "";
        String fileType = "";
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new java.util.Date());

        fileName = "IMG_"+timeStamp;
        fileType = ".jpg";

        File mediaFile;
        try
        {
            mediaFile = File.createTempFile(fileName,fileType,mediaStorageDir);
            Log.i("st","File: "+Uri.fromFile(mediaFile));
        }
        catch (IOException e)
        {
            e.printStackTrace();
            Log.i("St","Error creating file: " + mediaStorageDir.getAbsolutePath() +fileName +fileType);
            return null;
        } …
Run Code Online (Sandbox Code Playgroud)

android android-contentprovider android-camera

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

Android - 录制视频时在前后摄像头之间切换

我正在尝试实现自定义相机来录制视频.我已经关注了这个样本,它运行正常.

现在,我想通过按钮点击添加"切换摄像头"功能.即使在录制视频时,也应该能够在前/后摄像头之间切换.

因此,请帮助我知道它是否可能?

1.如果是,那么如何?

如果没有那么请建议一些解决方法?

一些示例代码或链接将非常有用......

注意:我一直在谷歌上搜索它,发现一些StackOverFlow的答案就像

Android Camera2 API切换后置摄像头

Android:单击按钮时切换相机

但是,当录制视频时,这些都没有提供切换相机的便利.

请帮忙.

代码与此示例相同.这是Camera2 API.

video android android-layout android-camera android-camera2

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

使用Android Camera2 API进行人脸检测和绘制圆圈

目前我正在尝试将Camera2.Face转换为实际视图的rect,以便在Camera2 API检测到的脸部上绘制圆圈.

我可以通过以下代码获取面数及其数据到Callback中:

private CameraCaptureSession.CaptureCallback mCaptureCallback
= new CameraCaptureSession.CaptureCallback() {
    private void process(CaptureResult result) {
        Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE);
        Face [] faces = result.get(CaptureResult.STATISTICS_FACES);
        if(faces != null && mode != null)
            Log.e("tag", "faces : " + faces.length + " , mode : " + mode ); 
    }

    @Override
    public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request, CaptureResult partialResult) {
        process(partialResult);
    }

    @Override
    public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
        process(result);
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试使用下面的代码将Face rect转换为实际的视图坐标(似乎它不起作用):

/**
* Callback from the CameraCaptureSession.CaptureCallback …
Run Code Online (Sandbox Code Playgroud)

android face-detection android-camera android-camera2

13
推荐指数
1
解决办法
3793
查看次数