安卓相机预览

2024-01-17

我有个问题。 我正在尝试开发一个使用相机的程序,一切都在我的设备中运行,但就像你们很多人都知道的那样CameraPreview并非在所有设备上都以相同的方式工作,因此我尝试集成谷歌在此地址中提供的代码:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

我面临的问题是我不知道如何集成到我的项目中,这是我的代码以及我所做的但没有超出的内容:

Preview mPreview;
private Camera mCamera;

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

        mPreview = new Preview(this);

        //ContentView----------------------------------------------------------
        setContentView(R.layout.main);

        mSurfaceView = (SurfaceView)findViewById(R.id.camera_surface);

        mPreview.surfacemetod(mSurfaceView);

   @Override
   protected void onResume() {
      // TODO Auto-generated method stub
      super.onResume();    

      mCamera = Camera.open();
      mPreview.setCamera(mCamera);

然后是预览类:

class Preview extends ViewGroup implements SurfaceHolder.Callback {
private final String TAG = "Preview";

SurfaceView mSurfaceView;
SurfaceHolder mHolder;
Size mPreviewSize;
List<Size> mSupportedPreviewSizes;
Camera mCamera;

Preview(Context context) {
    super(context);

    mSurfaceView = new SurfaceView(context);
    addView(mSurfaceView);

}

public void surfacemetod(SurfaceView surface){

    //mSurfaceView = new SurfaceView(context);
    //addView(mSurfaceView);

    // Install a SurfaceHolder.Callback so we get notified when the
    // underlying surface is created and destroyed.
    mHolder = mSurfaceView.getHolder();
    mHolder.addCallback(this);
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

public void setCamera(Camera camera) {
    mCamera = camera;
    if (mCamera != null) {
        mSupportedPreviewSizes = mCamera.getParameters().getSupportedPreviewSizes();
        requestLayout();
    }
}

这段代码之后是上面链接中的所有方法,为了节省空间我没有复制。

问题是,当我运行代码时 mPreviewSize.with 和 mPreviewSize.height

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
    // Now that the size is known, set up the camera parameters and begin
    // the preview.
    Camera.Parameters parameters = mCamera.getParameters();
    parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
    requestLayout();

    mCamera.setParameters(parameters);
    mCamera.startPreview();
}

为空,我得到强制关闭

本质上看起来它没有进入 OnMeasure 来解决它们。 任何想法?

这是日志:

02-16 13:54:26.068: ERROR/AndroidRuntime(24374): FATAL EXCEPTION: main

02-16 13:54:26.068: ERROR/AndroidRuntime(24374): java.lang.NullPointerException

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at com.dashboard.camera.lite.Preview.surfaceChanged(Preview.java:162)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.SurfaceView.updateWindow(SurfaceView.java:554)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.SurfaceView.dispatchDraw(SurfaceView.java:341)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.View.draw(View.java:6796)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.widget.FrameLayout.draw(FrameLayout.java:354)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.View.draw(View.java:6796)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.widget.FrameLayout.draw(FrameLayout.java:354)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1894)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewRoot.draw(ViewRoot.java:1432)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1174)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1752)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.os.Handler.dispatchMessage(Handler.java:99)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.os.Looper.loop(Looper.java:123)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at android.app.ActivityThread.main(ActivityThread.java:4627)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at java.lang.reflect.Method.invokeNative(Native Method)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at java.lang.reflect.Method.invoke(Method.java:521)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

02-16 13:54:26.068: ERROR/AndroidRuntime(24374):     at dalvik.system.NativeStart.main(Native Method)

你能传递日志吗? 我预测您的 mPreview.width/height 有问题 - 它可能是一些不正确的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓相机预览 的相关文章

  • 如何在android中实现触摸平滑图像橡皮擦?

    我已经从 API 演示中看到了finturePaint java 我想实现触摸平滑橡皮擦 通过在android中触摸移动来擦除部分图像 FingerPaint 告诉我要实现这个 mPaint setXfermode new PorterDu
  • Android 中多个蓝牙连接的自定义 UUID

    我有一个 Android 设备作为服务器连接到多个蓝牙 Android 客户端 我了解 UUID 的概念以及它的独特之处 我的问题是 我可以为连接到我的服务器的所有客户端使用相同的 UUID 吗 如果没有 我如何以编程方式为我的客户端生成
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • 如何在android中显示保存在sdcard文件夹中的图像[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 当我正在显
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • 如何在 Linux 内核中定义并触发我自己的新软中断?

    我想在 Linux 内核中创建自己的软中断 这是正确的方法吗 In the init我想触发该模块的softirq我将添加一个调用 394 void open softirq int nr void action struct softir
  • 如何使用 Google Maps for Android V2 处理地图移动结束?

    我想在地图中心更改后立即对地址进行地理编码 如何使用新的 Android 版 Google 地图 V2 处理地图移动 我说的是用户用手指拖动地图的情况 查看新的地图 API Override public void onMapReady G
  • 通过 WhatsApp 发送消息

    由于我发现了一些较旧的帖子 表明 Whatsapp 不支持此功能 我想知道是否发生了变化 以及是否有办法打开与我通过意图发送的号码进行 Whatsapp 聊天 UPDATE请参阅https faq whatsapp com en andro
  • 自定义首选项中的android首选项水平分隔线?

    我创建了自己的自定义首选项对象来扩展首选项 我创建它们只是因为这些自定义数据类型没有首选项 一切正常 但我的自定义首选项没有相同的外观 因为它们缺少系统首选项对象具有的水平分隔线 我已经查找了创建水平分隔线的代码 但我找不到它是在哪里完成的
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • Android 中如何通过彩信发送图片?

    我正在开发多媒体应用程序 我正在通过相机捕获一张图像 并希望将该图像和文本发送到其他号码 但我不知道如何通过彩信发送图像 MMS 只是一个 http post 请求 您应该使用执行请求额外的网络功能 final ConnectivityMa
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • 上网本上可以进行Android开发吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用我的上网本进行 Android 开发 但是当我尝试使用 Eclipse 运行 SDK 时 没有加载任何内容 上网本对于 Android 开发来
  • Android - 以编程方式选择菜单选项

    有没有办法以编程方式选择菜单选项 基本上 我希望视图中的按钮能够执行与按特定菜单选项相同的操作 我正在考虑尝试调用 onOptionsItemSelected MenuItem item 但我不知道要为菜单项添加什么 是的 有一种方法可以选
  • 没有用于警告的设置器/字段 Firebase 数据库检索数据填充列表视图

    我只是想将 Firebase 数据库中的数据填充到我的列表视图中 日志显示正在检索数据 但适配器不会将值设置为列表中单个列表项中的文本 它只说 没有二传手 场地插入值 这让我觉得我的设置器没有正确制作 但 Android Studio 自动
  • 通过系统应用程序以编程方式静默安装 apk(无需 root)

    我有带有 android sharedUserId android uid system UID 1000 的系统级应用程序 设备未root INSTALL PACKAGES 权限包含在清单中 我可以静默安装下载的 apk 吗 我已经发现这
  • 插件“Android Bundle Support”不兼容

    大家好 自从上次更新以来 当我启动 android studio 时 我遇到了一个非常奇怪的错误 我有这个错误 插件错误 插件 Android Bundle Support 不兼容 直到构建 AI 195 SNAPSHOT 我在网上找不到任
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始

随机推荐

  • Hive INSERT OVERWRITE DIRECTORY 命令输出不由分隔符分隔。为什么?

    我正在加载的文件由 空格 分隔 下面是文件 该文件驻留在 HDFS 中 001 000 001 000 002 001 003 002 004 003 005 004 006 005 007 006 008 007 099 007 1 gt
  • python中的逐元素张量乘法

    我正在尝试使用 python 解决计算代数中的问题 基本上给出了两组 比如说A a b and B e 我需要逐个元素地计算张量积并得到最终的集合C a tensor e b tensor e 含有这些元素的产物 我可以使用带有数字的数组进
  • 如何在gitlab ci中引用作业规则中的变量?

    我需要在 gitlab ci 作业规则中重用变量 include template Workflows Branch Pipelines gitlab ci yml staging variables variables CONFIG NA
  • 为什么 Vite 会创建两个 TypeScript 配置文件:tsconfig.json 和 tsconfig.node.json?

    我正在使用Vite来创建一个新的 React TypeScript 项目 https vitejs dev guide scaffolding your first vite project 创建项目后 根文件夹中有两个 TypeScrip
  • 将字典转换为 url 参数字符串?

    有没有办法将代码中的字典转换为url参数字符串 e g An example list of parameters Dictionary
  • Xcode 8 要求注册设备以创建配置文件

    我正在尝试发布一个应用程序进行测试 而无需在我的 Mac 中连接设备 我创建了一个开发者帐户 在 itunes 中创建了一个应用程序 生成了捆绑包 ID 使用开发者帐户登录到 xcode 生成了经销商证书 当我尝试存档应用程序时 出现错误
  • @ViewBag 在当前上下文中不存在

    我知道网上已经有一些解决方案 但在尝试了所有解决方案后 我对自己感到困惑 我只是想澄清我尝试过的解决方案 确保Microsoft AspNet Web Optimization or System Web Optimization有没有 我
  • 将焦点交给浏览器

    我正在研究键盘辅助功能 我有一个位于页面内的 Flash 对象 为了防止焦点被困在其中 我添加了可以进行对话的选项卡侦听器ExternalInterface一些 JavaScript 函数 JavaScript 会查找下一个可用元素tabI
  • PostgreSQL 9.3:如何将大写 UUID 插入表中

    我有下表 其中只有 1 列id这是类型UUID Table uuidtest create table uuidtest id uuid 插入 我已经使用生成了uuiduuid generate v4 并且也做了大写 并将其插入表中 Try
  • CascadeType.ALL、cascade = CascadeType.REMOVE 和 orphanRemoval 之间有什么区别

    我搜索了答案 但无法正确找到答案 有什么区别CascadeType ALL 级联 CascadeType REMOVE orphanRemoval当我们设置FetchType EAGER on OneToMany关系 有一次我在删除记录时遇
  • 自动完成未触发

    下面看起来一切都很好 我已经提供了 3 个部分 如果查询的话 服务工作正常
  • 在 Lua 中弹出数组的第一个元素

    我有一个数组x在卢阿 我想设置head x 1 and rest 数组的其余部分 以便rest 1 x 2 rest 2 x 3 etc 我怎样才能做到这一点 注意 我不在乎原始数组是否发生变异 在 Javascript 中我会这样做hea
  • jQuery 选择插件:自定义/格式化选择中选项的文本

    我在 jquery 中使用一个名为 selected 的插件 用于具有自动完成功能的选择框 http harvesthq github com chosen http harvesthq github com chosen 在哪里可以设置选
  • 抑制可忽略不计的复杂 numpy 特征值?

    我正在计算协方差矩阵的特征值 该矩阵是实数且对称正半定的 因此 特征值和特征向量应该都是实数 但是numpy linalg eig https docs scipy org doc numpy reference generated num
  • 将 List 转换为 List

    理解了这个概念翻译 https groups google com forum msg servicestack BF egdVm3M8 0DXLIeDoVJEJ 使用它来将 DataModel 类型转换为表示层的 DTO 类型 这样效果很
  • 扩展 CLPlacemark 会导致 EXC BAD ACCESS

    虽然发现了类似的问题here https stackoverflow com questions 20204417 exc bad access after populating nsmutablearray with custom cla
  • 如何使用 SwiftUI 在 NavigationView 中正确包含“添加项目”按钮?

    我需要一个 加号 按钮NavigationView s List navigationBarItems 在导航栏右侧 我想在列表中添加一行 使用导航层次结构中的后续视图输入其名称等 但首先 我什至无法让按钮正确导航 当我在预览画布中点击它时
  • 我们应该如何管理jdk8流的空值

    我知道这个话题可能有点in advance因为 JDK8 尚未发布 至少现在还没有发布 但我正在阅读一些有关 Lambda 表达式的文章 特别是与称为 Stream 的新集合 API 相关的部分 这是中给出的示例Java 杂志文章 http
  • 如何在gradle中下载依赖项

    我有一个自定义编译任务 task compileSpeedTest type JavaCompile classpath files build source fileTree src test java speed destination
  • 安卓相机预览

    我有个问题 我正在尝试开发一个使用相机的程序 一切都在我的设备中运行 但就像你们很多人都知道的那样CameraPreview并非在所有设备上都以相同的方式工作 因此我尝试集成谷歌在此地址中提供的代码 http developer andro