【问题标题】:Take photo programmatically in Android在 Android 中以编程方式拍照
【发布时间】:2014-05-15 05:19:26
【问题描述】:

我正在开发一个使用摄像头的 Android 应用程序......我的应用程序的要求是:

我想在不干扰前台应用程序的情况下捕获图片并将此图像以 png 格式存储在设备存储中。

【问题讨论】:

标签: android image android-camera


【解决方案1】:

HI 使用以下代码:

在您的按钮点击事件中添加以下代码:

    Intent intent = new Intent(
            android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    File folder = new File(Environment.getExternalStorageDirectory() + "/"
            + getResources().getString(R.string.app_name));

    if (!folder.exists()) {
        folder.mkdir();
    }
    final Calendar c = Calendar.getInstance();
    String new_Date = c.get(Calendar.DAY_OF_MONTH) + "-"
            + ((c.get(Calendar.MONTH)) + 1) + "-" + c.get(Calendar.YEAR)
            + " " + c.get(Calendar.HOUR) + "-" + c.get(Calendar.MINUTE)
            + "-" + c.get(Calendar.SECOND);
    Strin imageUrl = String.format(
            Environment.getExternalStorageDirectory() + "/"
                    + getResources().getString(R.string.app_name)
                    + "/%s.png", "image(" + new_Date + ")");
    DealershipApplication.setVehicleImage(imageUrl);

    File photo = new File(imageUrl);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.putExtra("exit", "false");
    intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,
            ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
    YourActivity.this.startActivityForResult(intent, REQUEST_CODE);

在您的 manifest.xml 中添加此权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />

<uses-feature android:name="android.hardware.camera" />

<uses-permission android:name="android.permission.FLASHLIGHT" />

<uses-feature
    android:name="android.hardware.camera.flash"
    android:required="false" />

<activity
    android:name="com.android.camera.Camera"
    android:clearTaskOnLaunch="true"
    android:configChanges="orientation|keyboardHidden"
    android:screenOrientation="portrait"
    android:taskAffinity="android.task.camera"
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
</activity>

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

如果您有任何疑问,请告诉我。

【讨论】:

  • 你在那个问题中的意思。我的意思和回答并不重要。
  • 当然重要的是你回答什么。你的回答不符合问题。您复制了基本的图像捕获代码,而问题是如何没有 UI 拍照。你的回答没有回答这个问题。
【解决方案2】:

在这种情况下,您必须调用 Intent for Camera 以及打开图库,然后您需要选择图像,您将在onActivityResult() 中获得它的回调,在那里您将获得选择的图像路径,使用选择的图片路径,解码得到图片位图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2012-09-23
    相关资源
    最近更新 更多