标签: android-camera-intent

Android 如何将捕获的视频设置为 .mp4 而不是 .3gp

我使用默认相机来捕获视频:

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,MAX_DURATION);
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, MAX_SIZE_BYTES);
startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);    
Run Code Online (Sandbox Code Playgroud)

如何将文件容器设置为 .mp4 而不是 .3gp?

android-camera android-camera-intent android-mediarecorder

5
推荐指数
1
解决办法
1404
查看次数

从相机应用程序返回时重新创建活动

此问题仅出现在两款较旧的三星 Galaxy 机型上,但仍然非常容易重现。

我有一个简单的应用程序,可以显示通过设备的相机应用程序拍摄的照片。它有一个按钮来启动该应用程序,并在 AsyncTask 中处理结果以将其下采样到 ImageView 中。

从相机应用程序返回时的活动流程会出现问题:由于某种原因,活动被创建,处理导致 AsyncTask 中的结果onActivityResult()被销毁,然后立即重新创建。一旦 AsyncTask 完成,它就会保存对不正确/旧活动的引用。

将一些调试语句放入各种生命周期回调中会发现这种奇怪的行为:

06-02 16:01:53.509: I/myapp(4437): onCreate com.myapp.PhotoActivity_@488cbef8
06-02 16:01:53.509: I/myapp(4437): onResume com.myapp.PhotoActivity_@488cbef8
06-02 16:01:58.298: I/myapp(4437): onPause com.myapp.PhotoActivity_@488cbef8
06-02 16:01:59.470: I/myapp(4437): onStop com.myapp.PhotoActivity_@488cbef8
[a photo is taken in the camera app]
06-02 16:02:10.196: I/myapp(4437): onCreate com.myapp.PhotoActivity_@4874f8b8
06-02 16:02:10.251: I/myapp(4437): onActivityResult com.myapp.PhotoActivity_@4874f8b8
06-02 16:02:10.259: I/myapp(4437): onResume com.myapp.PhotoActivity_@4874f8b8
06-02 16:02:10.712: I/myapp(4437): onPause com.myapp.PhotoActivity_@4874f8b8
06-02 16:02:10.720: I/myapp(4437): onStop com.myapp.PhotoActivity_@4874f8b8
06-02 16:02:10.923: I/myapp(4437): onCreate com.myapp.PhotoActivity_@48817118
06-02 16:02:10.931: I/myapp(4437): onResume com.myapp.PhotoActivity_@48817118
06-02 …
Run Code Online (Sandbox Code Playgroud)

android activity-lifecycle android-camera-intent android-lifecycle

5
推荐指数
1
解决办法
3774
查看次数

onActivityresult 中的结果代码和数据为空

我有一个代码,我将从相机捕获的图像设置为矢量,然后使用图像适配器显示捕获的图像。但是我在 OnActivityResut 中得到的结果代码为 0,数据为 null。下面是启动相机的代码,它有效,即我使用相机单击图像

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(cameraIntent, CAMERA_REQUEST); 
Run Code Online (Sandbox Code Playgroud)

然后我使用 OnActivityResult 如下

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {  
        if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) 
        {  
            ImageView photo = (ImageView) data.getExtras().get("data"); 
            m_oVectorOfImages.add(photo);
            m_oImageAdapter.notifyDataSetChanged();
        }  
    }
Run Code Online (Sandbox Code Playgroud)

我能知道为什么 resultcode 为 0 而 data 为 null 吗?

android android-intent android-camera android-camera-intent android-activity

5
推荐指数
0
解决办法
2067
查看次数

如何使用Android相机拍摄低分辨率图片

我想使用 Android 相机拍摄照片并将其保存到我的 SD 卡中。我知道这很容易,但我想以低分辨率存储图像,而不告诉用户手动设置并设置低分辨率。

camera android surfaceview android-camera android-camera-intent

5
推荐指数
1
解决办法
9321
查看次数

android.hardware.camera2.CameraAccessException

我在尝试使用camera2 api从CameraManager实例获取相机ID列表时收到此错误消息:

UnhandledException:android.hardware.camera2.CameraAccessException

这是我的代码

    CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    String cameraId = manager.getCameraIdList()[0];
Run Code Online (Sandbox Code Playgroud)

我在第二行收到错误消息。我已经在清单中设置了相机权限,甚至确保我的物理手机已打开、连接并设置为开发人员模式(尽管我认为这不会产生任何影响),但想不出其他任何事情这与我在网上看到的所有简单示例不同。

下面是完整的 MainActivity 代码:

任何建议表示赞赏...

import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.camera2.CameraManager;
import android.hardware.camera2.CameraAccessException;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.internal.app.ToolbarActionBar;
import android.support.v7.widget.CardView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toolbar;

import com.google.zxing.integration.android.IntentIntegrator;

import org.joda.time.DateTime;

import java.util.ArrayList;
import java.util.List;

import Model.Consumer;
import Model.Plan;
import Model.Product;
import Model.ProductInfo;
import Model.Retailer;
import Model.Transaction;


public class MainActivity extends AppCompatActivity {

private android.support.v7.widget.Toolbar toolbar;

private RecyclerView recList; …
Run Code Online (Sandbox Code Playgroud)

android android-camera-intent

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

使用意图 ACTION_IMAGE_CAPTURE 时如何将方向锁定为纵向?

我知道我可以在清单中设置活动的方向,但是当此活动调用MediaStore.ACTION_IMAGE_CAPTURE打开相机并拍照时,用户仍然可以以横向模式拍照。我可以将相机应用程序本身的方向锁定为纵向吗?

这是示例代码:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
startActivityForResult(intent, TAKE_PICTURE);
Run Code Online (Sandbox Code Playgroud)

我想阻止用户拍摄任何风景照片。

任何帮助将不胜感激。

编辑:发现该主题的另一个问题尚未得到解答: How to lock the Camera app Direction Called through Intent in android?

android android-camera-intent

5
推荐指数
1
解决办法
2853
查看次数

如何将照片相机应用程序保存在公共目录中

我想实现以下目标:

  1. 从 MyApp 中,通过以下方式启动手机的相机应用程序intent
  2. 手机的相机应用程序将照片保存在公共目录(DCIM 或 DCIM/Camera)中
  3. 保存的照片具有我选择的文件名。
  4. 保存的照片可在图库应用程序中找到
  5. 我的应用程序在相机应用程序将焦点返回到 MyApp 后编辑 Exif。

在我的 MainActivity 中,我使用布尔值在USE_ANDROID_EXTERNAL_STORAGE_PUBLIC_DIRECTORY以下之间切换:

  • 将照片文件保存到ExternalFilesDir(在我的例子中:/storage/emulated/0/Android/data/pub.openbook.labellor/files/Pictures)
  • 将照片文件保存到Public Directory(在我的例子中为/storage/emulated/0/DCIM)

相机应用程序将成功地将照片文件保存在ExternalFilesDir中,但无法将文件保存到其公共目录中。由于这种情况发生在相机应用程序中,我无法对此进行调试。

我的问题:

  • 是否可以将相机应用程序保存到公共目录 DCIM?
  • 如果是这样,怎么办?
  • 如何使我的照片在图库应用程序中可见?

(我的函数galleryAddPic()完成时没有崩溃,但没有达到目的。照片在图库应用程序中仍然不可见。)

我正在与:

  • AndroidStudio 4.0.1
  • SDK平台Android 10.0+(R),API 30
  • 我的测试设备有android.os.Build.VERSION.SDK_INT23
package pub.openbook.labellor;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.FileProvider;

import android.os.Environment; …
Run Code Online (Sandbox Code Playgroud)

java camera android android-camera-intent

5
推荐指数
1
解决办法
2545
查看次数

红米 7A 启动相机拍照时应用程序崩溃

当我在红米7A上启动相机拍照时,我的应用程序自动崩溃。以下是崩溃日志:

   E/CAM_CameraIntentManager: checkCallerLegality: Unknown caller: com.qikcircle.eclinic
Run Code Online (Sandbox Code Playgroud)

请帮助它确实没有显示到底是什么问题。

我的活动代码

class CaptureImageActivity : AppCompatActivity() {

    private lateinit var mToolbar: Toolbar
    private lateinit var mImage: ImageView
    private var mBitmap: Bitmap? = null

    private val getCameraAndStoragePermission = registerForActivityResult(
            ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
        if (hasAllPermissionsGranted(permissions)) {
            dispatchTakePictureIntent()
        } else {
            Toast.makeText(
                    this,
                    resources.getString(R.string.allow_camera_permission),
                    Toast.LENGTH_SHORT)
                    .show()
            finish()
        }
    }

    private val takePicture =
            registerForActivityResult(ActivityResultContracts.TakePicture()) { success ->
        if (success) {
            photoURI.let {
                mBitmap = getBitmap(this, photoURI)
                mImage.setImageBitmap(mBitmap)
                goBack()
            }
        } else {
            Toast.makeText(
                    this,
                    resources.getString(R.string.something_went_wrong),
                    Toast.LENGTH_SHORT) …
Run Code Online (Sandbox Code Playgroud)

android android-camera android-camera-intent kotlin redmi-device

5
推荐指数
1
解决办法
3198
查看次数

制作照片后,无法从相机接收Intent.extras()

我发现这是捕捉照片和接收全尺寸照片而不是缩略图的常见问题(根据:http://developer.android.com/training/camera/photobasics.html).拍摄照片和接收缩略图很容易,但教程的其余部分似乎不完整且无法正常工作.有人轻松解决了吗?

public class TakePhoto extends Activity{

static final int REQUEST_IMAGE_CAPTURE = 1;
static final int REQUEST_TAKE_PHOTO = 1;
private String mCurrentPhotoPath;
private ImageView mImageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.take_photo);

    mImageView = (ImageView) findViewById(R.id.imageView);

    dispatchTakePictureIntent();

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        mImageView.setImageBitmap(imageBitmap);
    }
}

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = …
Run Code Online (Sandbox Code Playgroud)

android android-camera-intent android-bundle

4
推荐指数
1
解决办法
4672
查看次数

Android:拍照意图删除确认对话框

可以禁用/删除此照片确认对话框:

在此处输入图片说明

我需要以某种方式跳过此对话框,但仍要使用Intent。我找到了这个android:在没有“保存” /“删除”确认的情况下拍摄相机图片,但我不想使用SurfaceView

android android-intent android-camera android-camera-intent

4
推荐指数
1
解决办法
2392
查看次数