iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么用Android Camera实现预览框显示
  • 888
分享到

怎么用Android Camera实现预览框显示

2023-06-30 14:06:15 888人浏览 独家记忆
摘要

这篇文章主要介绍了怎么用Android Camera实现预览框显示的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Android Camera实现预览框显示文章都会有所收获,下面我们一起

这篇文章主要介绍了怎么用Android Camera实现预览框显示的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Android Camera实现预览框显示文章都会有所收获,下面我们一起来看看吧。

Android要预览Camer界面其实非常简单,只需要几句话就行。

首先要再AndroidManifest.xml中添加权限

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

创建一个xml包含控件TextureView

比如activity_main.xml:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="Http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextureView        android:id="@+id/textureView"        android:layout_width="match_parent"        android:layout_height="match_parent" />    <Button        android:id="@+id/btnStop"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_margin="0.8dp"        android:text="stop preview"        android:layout_alignParentBottom="true"        android:layout_alignParentEnd="true"/>    <Button        android:id="@+id/btnStart"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_margin="0.8dp"        android:text="start preview"        android:layout_alignParentBottom="true"        android:layout_toStartOf="@id/btnStop"/></RelativeLayout>

在Activity创建使用Camera

(1)使用Camera.open(0)获取Camera对象
(2)Camera进行参数设置,最后执行camera.startPreview
(3)关闭预览框的时候释放一下对象就行

比如下面的MainActivity.java代码:

package com.lwz.camera;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import android.Manifest;import android.content.Context;import android.content.pm.PackageManager;import android.graphics.SurfaceTexture;import android.hardware.Camera;import android.os.Bundle;import android.util.Log;import android.view.Display;import android.view.TextureView;import android.view.View;import android.view.WindowManager;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private static final String TAG = "Camera2Test";    private TextureView mTextureView; //预览框对象    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.e(TAG, "onCreate!");        setContentView(R.layout.activity_main);        intiView();        initEvent();    }    private void intiView() {        mTextureView = (TextureView) findViewById(R.id.textureView);    }    private void initEvent() {        //预览按钮点击监听        findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Log.i(TAG, "btnStart!");                startPreview();            }        });        //停止预览按钮点击监听        findViewById(R.id.btnStop).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Log.i(TAG, "btnStop!");                stopPreview();            }        });        //预览框状态监听        mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {            @Override            public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) {                Log.i(TAG, "onSurfaceTextureAvailable width = " + width + ",height = " + height);                //当SurefaceTexture可用的时候,可以设置相机参数并打开相机                handleRequestCamera(surface);                //handleRequestCamera(mTextureView.getSurfaceTexture()); //如果和mTextureView是同一个类内,效果和上面是一样的            }            @Override            public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surface, int width, int height) {                Log.i(TAG, "onSurfaceTextureSizeChanged width = " + width + ",height = " + height);            }            @Override            public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) {                Log.i(TAG, "onSurfaceTextureDestroyed!");                return false;            }            @Override            public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) {                //正常预览的时候,会一直打印                //Log.i(TAG, "onSurfaceTextureUpdated!");            }        });    }    Camera mCameram; //可以用来对打开的摄像头进行关闭,释放    int mCameraId = 0;    private void handleRequestCamera(SurfaceTexture texture) {        Log.i(TAG, "handleRequestCamera");        //简单的判断权限        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(this, new String[]{"android.permission.CAMERA"}, 100);            Log.e(TAG, "openCamera no Permission!");            Toast.makeText(this, "无摄像头权限", Toast.LENGTH_LONG).show();            return;        }        try {            //0/1/2            mCameram = Camera.open(mCameraId);//手机上可以用来切换前后摄像头,不同的设备要看底层支持情况            Log.i(TAG, "handleRequestCamera mCameraId = " + mCameraId);            Camera.Parameters parameters = mCameram.getParameters();            parameters.setPreviewSize(720, 1280);//            parameters.setPreviewSize(1280, 720);//不同的设备屏幕尺寸不同,有的设备设置错误的尺寸会崩溃            mCameram.setParameters(parameters);            mCameram.setPreviewTexture(texture);            mCameram.startPreview();        } catch (Exception error) {            Log.e(TAG, "handleRequestCamera error = " + error.getMessage());        }    }        private void startPreview() {        Log.i(TAG, "startPreview");        SurfaceTexture mSurfaceTexture = mTextureView.getSurfaceTexture();        handleRequestCamera(mSurfaceTexture);    }        private void stopPreview() {        if (mCameram != null) {            mCameram.stopPreview();            mCameram.release();            mCameram = null;        }    }    @Override    protected void onDestroy() {        super.onDestroy();        stopPreview();//界面退出要释放对象    }}

需要注意的是,调用Camera.open之前,要确保预览框已经准备好了,
即onSurfaceTextureAvailable方法已经回调,正常界面显示的时候,都是没有问题的,
但是如果在代码中,View或者Activity创建的时候调用Camera.open,这时候是无法预览界面的,
如果需要代码多处,调用Camera.open,正常做法可以设置一个全局变量,判断SurfaceTexture是否可用。

关于“怎么用Android Camera实现预览框显示”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么用Android Camera实现预览框显示”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么用Android Camera实现预览框显示

本文链接: https://www.lsjlt.com/news/329729.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Android Camera实现预览框显示
    这篇文章主要介绍了怎么用Android Camera实现预览框显示的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Android Camera实现预览框显示文章都会有所收获,下面我们一起...
    99+
    2023-06-30
  • 怎么用Android Camera实现最简单的预览框显示
    本篇内容介绍了“怎么用Android Camera实现最简单的预览框显示”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Androi...
    99+
    2023-06-30
  • Android Camera1实现预览框显示
    本文实例为大家分享了Android Camera1实现预览框显示的具体代码,供大家参考,具体内容如下 Android要预览Camer界面其实非常简单,只需要几句话就行。 1、首先要再...
    99+
    2022-11-13
  • AndroidCamera2实现最简单的预览框显示
    本文实例为大家分享了Android Camera2实现预览框显示的具体代码,供大家参考,具体内容如下 Android要预览Camer2界面比Camera1稍微复杂一点,但是也是不难的...
    99+
    2022-11-13
  • Android怎么使用Toast显示消息提示框
    可以使用以下代码在Android中使用Toast显示消息提示框:```Toast.makeText(context, "消息内容",...
    99+
    2023-08-15
    Android Toast
  • android怎么实现点击按钮显示文本框信息
    要实现点击按钮显示文本框信息,你可以按照以下步骤进行操作:1. 在你的布局文件(XML文件)中,添加一个按钮和一个文本框(EditT...
    99+
    2023-09-27
    Android
  • Android怎么实现图片预览与保存功能
    这篇“Android怎么实现图片预览与保存功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android怎么实现图片预览与...
    99+
    2023-06-30
  • android弹出提示框怎么实现
    要在Android中实现弹出提示框,你可以通过以下几种方式实现:1. 使用AlertDialog:AlertDialog是Andro...
    99+
    2023-10-08
    android
  • Android中怎么利用ViewPager实现图片滑动预览效果
    本篇文章给大家分享的是有关Android中怎么利用ViewPager实现图片滑动预览效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。xml代码:<xml ve...
    99+
    2023-05-30
    android viewpager
  • Vue怎么使用pdfobject实现预览pdf
    本篇内容主要讲解“Vue怎么使用pdfobject实现预览pdf”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue怎么使用pdfobject实现预览pdf”吧!安装 pnpm add...
    99+
    2023-07-05
  • android状态栏显示短信怎么实现
    要在Android的状态栏中显示短信,你需要创建一个BroadcastReceiver来接收短信,并在接收到短信时将其显示在状态栏上...
    99+
    2023-08-12
    android
  • Android应用中怎么实现一个图片预览缩放功能
    Android应用中怎么实现一个图片预览缩放功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体实现方法如下<&#63;xml version="1....
    99+
    2023-05-31
    android roi
  • android怎么实现在图标上显示数字
    这篇文章主要介绍了android怎么实现在图标上显示数字的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android怎么实现在图标上显示数字文章都会有所收获,下面我们一起来看看吧。效果图:动态显示当天的号数。主...
    99+
    2023-06-30
  • 怎么在Android中利用FloatingActionButton实现显示与隐藏
    本篇文章为大家展示了怎么在Android中利用FloatingActionButton实现显示与隐藏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。FloatingActionButton简介Floa...
    99+
    2023-05-30
    android floatingactionbutton
  • html怎么实现只显示表格的外边框
    这篇文章主要介绍“html怎么实现只显示表格的外边框”,在日常操作中,相信很多人在html怎么实现只显示表格的外边框问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html怎么...
    99+
    2022-10-19
  • Android怎么实现未读消息小红点显示
    今天小编给大家分享一下Android怎么实现未读消息小红点显示的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用 fragm...
    99+
    2023-06-29
  • Android怎么实现显示和隐藏密码功能
    这篇文章主要介绍“Android怎么实现显示和隐藏密码功能”,在日常操作中,相信很多人在Android怎么实现显示和隐藏密码功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android怎么实现显示和隐藏密...
    99+
    2023-07-02
  • Win10预览版14328开始菜单所有应用列表显示空白怎么办?
    对于Win10 PC预览版开始菜单中点击“所用应用”出现空白的Bug可能各位Insider已经见怪不怪了,这个问题在微软最近推送的14328版本中依然没有解决。 软媒魔方电脑大师 V6.25 绿色...
    99+
    2023-05-20
    Win10 预览版14328
  • Vue怎么使用vue-pdf实现PDF文件预览
    这篇文章主要介绍了Vue怎么使用vue-pdf实现PDF文件预览的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue怎么使用vue-pdf实现PDF文件预览文章都会有所收获,下面我们一起来看看吧。先看下效果&n...
    99+
    2023-07-05
  • Android中怎么实现图片压缩并加载显示
    这篇文章将为大家详细讲解有关Android中怎么实现图片压缩并加载显示,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。解析:图片压缩的关键就是options.inSampleSize ...
    99+
    2023-05-30
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作