【问题标题】:camera preview not working(CWAC-Camera library)相机预览不起作用(CWAC-相机库)
【发布时间】:2015-04-07 20:22:42
【问题描述】:

我是 android 的新手,想使用相机的东西,所以我正在尝试使用 CWAC 相机库。我正在使用简单的相机片段,它会显示全屏相机预览。但是相机预览是不可见的。任何人都可以建议什么我应该做些什么来纠正它。这是我的代码:

FullCameraFragment.java

package com.mission.fourinc.cwac;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.commonsware.cwac.camera.CameraFragment;
import com.commonsware.cwac.camera.CameraView;
import com.commonsware.cwac.camera.SimpleCameraHost;

/**
 * Created by sanjaytalreja on 4/7/15.
 */
public class FullCameraFragment extends CameraFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View cameraView=super.onCreateView(inflater, container, savedInstanceState);
        View rootView = inflater.inflate(R.layout.fragment_cameramain, container, false);
        ((ViewGroup)rootView.findViewById(R.id.camera)).addView(cameraView);
        return rootView;
    }

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

        setHost(new SimpleCameraHost(getActivity()));
    }
}

cameramain.java

    package com.mission.fourinc.cwac;

    import android.support.v4.app.FragmentActivity;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBar;
    import android.support.v4.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.os.Build;

    import com.commonsware.cwac.camera.CameraFragment;


    public class cameramain extends FragmentActivity {

        FullCameraFragment fcm=null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_cameramain);
            fcm=(FullCameraFragment)getFragmentManager().findFragmentById(R.id.camera_preview);

            }
        }

fragment_cameramain.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"

    tools:context=".cameramain$FullCameraFragment">

    <FrameLayout
        android:id="@+id/camera"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_below="@+id/camera"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="180dp" />

</RelativeLayout>

activity_cameramain.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container"
    android:layout_width="match_parent" android:layout_height="match_parent"
    tools:context=".cameramain" tools:ignore="MergeRootFrame"
    >
<fragment
        android:id="@+id/camera_preview"
        android:name="com.mission.fourinc.cwac.FullCameraFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    </FrameLayout>

【问题讨论】:

    标签: android android-camera commonsware-cwac cwac-camera


    【解决方案1】:

    在其他可能的问题中,您将原生 API 级别 11 片段与 Android 支持包反向移植片段混合在一起。那是行不通的。

    具体来说,FullCameraFragment 继承自 com.commonsware.cwac.camera.CameraFragment,而 com.commonsware.cwac.camera.CameraFragment 本身继承自 android.app.Fragment。您的cameramain 继承自FragmentActivity,它不适用于android.app.Fragment,而是android.support.v4.app.Fragment。那是行不通的。

    最简单的解决方案是让 cameramain 继承自 Activity,并使用原生 API 级别 11+ 片段。

    【讨论】:

    • 感谢您的回复,根据您的解决方案,我更改了继承的东西。现在我扩展了 Activity 而不是 FragmentActivity 但相机预览仍然不可见!
    • @SanjuTalreja:你有一个零高度的预览。 android:layout_weight 不适用于RelativeLayout 的孩子。
    • 谢谢你。它现在工作正常:)为你美丽的图书馆一颗大心脏:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2017-09-22
    • 1970-01-01
    • 2018-02-19
    相关资源
    最近更新 更多