安卓|如何通过意图打开摄像头并显示拍摄的图像
原文:https://www . geeksforgeeks . org/Android-如何通过意图和显示捕获的图像打开相机/
先决条件:
这篇文章的目的是展示如何从一个应用程序中打开相机,点击图像,然后在同一个应用程序中显示这个图像。本文开发了一个 android 应用程序来实现这一点。在媒体商店类的 ACTION_IMAGE_CAPTURE 意图的帮助下,从我们的应用程序内部打开摄像头。
例如:
此图像显示了摄像机点击并在图像视图中设置的图像。当应用程序打开时,它会显示“相机”按钮来打开相机。当按下时,动作 _ 图像 _ 捕获意图由媒体存储类启动。捕获图像后,它会显示在 imageview 中。
如何创建一个应用程序来打开相机通过意图和显示捕获的图像
第一步:首先创建一个新的安卓应用。这将创建一个 XML 文件“activity_main.xml”和一个 Java 文件“MainActivity”。Java”。请参考先决条件以了解有关此步骤的更多信息。
步骤 2: 打开“activity_main.xml”文件,并在相对布局中添加以下小部件:
- 打开摄像机的按钮
- 显示捕获图像的图像视图
此外,为每个组件分配 ID 以及其他属性,如下图和代码所示。组件上分配的标识有助于在 Java 文件中轻松找到和使用该组件。
语法:
android:id="@+id/id_name"
这里给定的标识如下:
- 相机按钮:相机按钮
- ImageView:单击 _image
这一步将使应用程序的用户界面。
第三步:现在,在 UI 之后,这一步将创建 App 的后端。为此,打开“MainActivity.java”文件,并使用 findViewById()方法实例化在 XML 文件(Camera Button,ImageView)中制作的组件。此方法借助于分配的标识将创建的对象绑定到用户界面组件。
一般语法:
组件类型对象=(组件类型)findviewbyid(r . id . idfthek 组件);
所用组件的语法:
Button camera _ open _ id =(Button)findwiewbyid(r . id . camera _ Button); ImageView click _ image _ id =(ImageView)findwiewbyid(r . id . click _ image);
步骤 4: 该步骤包括设置相机按钮和图像视图的操作。这些操作如下:
- 首先定义变量 pic_id,它是被点击图像的请求 id。具体如下:
私有静态最终 int pic_id = 123
- 在“相机”按钮上添加监听器。这将用于在用户点击按钮时打开相机。具体如下:
camera _ open _ id . setnccklistener(新视图)。onclick listener(){ }
- 现在创建 MediaStore 提供的 ACTION_IMAGE_CAPTURE 意图。这一意图将有助于打开相机捕捉图像。用请求的 pic_id 开始意图。具体如下:
意向相机 _ 意向=新意向(MediaStore。ACTION _ IMAGE _ CAPTURE); startActivityForResult(camera _ intent,pic _ id);
- 现在使用 onActivityResult()方法获取结果,这里是捕获的图像。具体如下:
受保护的无效活动结果(int requestCode,int resultCode,Intent data) { }
- 然后在图像视图中将作为相机意图的结果而接收的图像设置为显示。
位图照片=(位图)数据. getextras()。get(" data "); 点击 _image_id.setImageBitmap(照片);
第 5 步:现在运行应用程序,操作如下:
- 当应用程序打开时,它会显示一个“相机”按钮。点击它打开相机。
- 捕获图像并显示捕获的图像。
Camera 应用的 MainActivity.java 和 activity_main.xml 完整代码如下。
文件名:activity_main.xml
可扩展标记语言
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- add Camera Button to open the Camera-->
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_marginLeft="140dp"
android:id="@+id/camera_button"
android:text="Camera" />
<!-- add ImageView to display the captured image-->
<ImageView
android:layout_marginTop="70dp"
android:layout_width="350dp"
android:layout_marginLeft="15dp"
android:layout_height="450dp"
android:id="@+id/click_image"
android:layout_marginBottom="10dp"/>
</RelativeLayout>
文件名:MainActivity.java
Java 语言(一种计算机语言,尤用于创建网站)
package org.geeksforgeeks.navedmalik.camera;
import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
// Define the pic id
private static final int pic_id = 123;
// Define the button and imageview type variable
Button camera_open_id;
ImageView click_image_id;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// By ID we can get each component
// which id is assigned in XML file
// get Buttons and imageview.
camera_open_id = (Button)findViewById(R.id.camera_button);
click_image_id = (ImageView)findViewById(R.id.click_image);
// Camera_open button is for open the camera
// and add the setOnClickListener in this button
camera_open_id.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
// Create the camera_intent ACTION_IMAGE_CAPTURE
// it will open the camera for capture the image
Intent camera_intent
= new Intent(MediaStore
.ACTION_IMAGE_CAPTURE);
// Start the activity with camera_intent,
// and request pic id
startActivityForResult(camera_intent, pic_id);
}
});
}
// This method will help to retrieve the image
protected void onActivityResult(int requestCode,
int resultCode,
Intent data)
{
// Match the request 'pic id with requestCode
if (requestCode == pic_id) {
// BitMap is data structure of image file
// which stor the image in memory
Bitmap photo = (Bitmap)data.getExtras()
.get("data");
// Set the image in imageview for display
click_image_id.setImageBitmap(photo);
}
}
}
输出:
版权属于:月萌API www.moonapi.com,转载请注明出处