使用相机捕获图像并在ImageView中显示,强制关闭应用程序。试过现有的答案,似乎没有用

时间:2017-04-24 00:48:00

标签: android android-studio imageview

对于某个应用,我的团队目前正在开展工作,我想用相机拍照并在同一屏幕的ImageView中显示。

为此,我尝试在Stackoverflow上使用已经回答的问题,但它似乎不起作用。我用过这个>> Capture Image from Camera and Display in Activity

但每当我运行应用程序并单击ImageView或按钮时,app force退出。我真的不知道为什么应用程序会强行克隆。

以下是我在我的活动java文件中使用的代码:

package com.me.backtrack.backtrack;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.hardware.Camera;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class CameraActivity extends AppCompatActivity {
    private static final int CAMERA_REQUEST = 1888;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_camera);
        this.imageView = (ImageView)this.findViewById(R.id.camera_preview);
        Button photoButton = (Button) this.findViewById(R.id.button_capture);
        photoButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(cameraIntent, CAMERA_REQUEST);
            }
        });
    }


    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            imageView.setImageBitmap(photo);
        }
    }
}

以下是我的XML布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="com.me.backtrack.backtrack.CameraActivity">


    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="587dp"
        android:layout_margin="10dp"
        android:orientation="vertical"
        android:weightSum="10"
        tools:layout_constraintTop_creator="1"
        tools:layout_constraintRight_creator="1"
        android:layout_marginStart="9dp"
        android:layout_marginEnd="9dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginTop="8dp"
        tools:layout_constraintLeft_creator="1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginLeft="9dp"
        android:layout_marginRight="9dp">

        <ImageView
            android:id="@+id/camera_preview"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="9"
            android:onClick="onClickCamera"/>

        <Button
            android:id="@+id/button_capture"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="Capture"
            android:onClick="onClickCapture"/>

    </LinearLayout>

</android.support.constraint.ConstraintLayout>

我对Android开发还很陌生,我尝试了很多方法来解决这个问题,看起来我并没有采用正确的方式。

如果您需要更多信息,请与我们联系

提前致谢!

更新:添加崩溃日志:

04-23 22:16:42.152 1577-1589/system_process I/ActivityManager: START u0 {cmp=com.me.backtrack.backtrack/.CameraActivity} from uid 10071 on display 0
04-23 22:16:42.785 1577-1600/system_process I/ActivityManager: Displayed com.me.backtrack.backtrack/.CameraActivity: +612ms
04-23 22:16:48.368 1577-1795/system_process W/ActivityManager:   Force finishing activity com.me.backtrack.backtrack/.CameraActivity
04-23 22:16:48.547 1577-2121/system_process I/ActivityManager: Killing 3043:com.google.android.apps.wallpaper/u0a60 (adj 906): empty #17
04-23 22:16:48.561 1577-1920/system_process D/ActivityManager: cleanUpApplicationRecord -- 3043
04-23 22:16:48.733 1577-3868/system_process I/OpenGLRenderer: Initialized EGL, version 1.4
04-23 22:16:48.734 1577-3868/system_process D/OpenGLRenderer: Swap behavior 1
04-23 22:16:48.885 1577-1591/system_process W/ActivityManager: Activity pause timeout for ActivityRecord{5aa8eed u0 com.me.backtrack.backtrack/.CameraActivity t43 f}
04-23 22:16:48.895 1577-3868/system_process E/EGL_emulation: tid 3868: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
04-23 22:16:48.895 1577-3868/system_process W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x997bf7c0, error=EGL_BAD_MATCH
04-23 22:16:58.383 1577-1591/system_process W/ActivityManager: Launch timeout has expired, giving up wake lock!
04-23 22:16:58.947 1577-1591/system_process I/ActivityManager: Killing 3112:com.android.chrome/u0a30 (adj 906): empty #17
04-23 22:16:59.011 1577-1588/system_process D/ActivityManager: cleanUpApplicationRecord -- 3112
04-23 22:16:59.011 1577-1588/system_process W/ActivityManager: Scheduling restart of crashed service com.android.chrome/org.chromium.chrome.browser.customtabs.CustomTabsConnectionService in 1000ms
04-23 22:16:59.733 1577-1587/system_process I/art: Background sticky concurrent mark sweep GC freed 49633(2MB) AllocSpace objects, 9(272KB) LOS objects, 26% free, 10MB/14MB, paused 5.007ms total 66.404ms
04-23 22:17:00.051 1577-1591/system_process I/ActivityManager: Start proc 4042:com.android.chrome/u0a30 for service com.android.chrome/org.chromium.chrome.browser.customtabs.CustomTabsConnectionService
04-23 22:17:00.374 1577-2515/system_process I/ActivityManager: Killing 3134:com.google.process.gapps/u0a41 (adj 906): empty #17
04-23 22:17:00.384 1577-2260/system_process D/ActivityManager: cleanUpApplicationRecord -- 3134

UPDAT:添加清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.me.backtrack.backtrack">

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

    <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.CAMERA" />
    //Camera Permissions
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    //For Local Storage
    <uses-feature android:name="android.hardware.camera"></uses-feature>
    //To access camera
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_logo_white"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".LoginActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SignUpActivity" />
        <activity android:name=".HomeActivity" />
        <activity android:name=".SettingsActivity" />
        <activity
            android:name=".MainSettingsActivity"
            android:label="@string/title_activity_main_settings"
            android:parentActivityName=".HomeActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.me.backtrack.backtrack.HomeActivity" />
        </activity>
        <activity android:name=".TagViewActivity" />
        <activity android:name=".CreateTrackActivity"></activity>
        <activity android:name=".TrackViewActivity"></activity>
        <activity android:name=".CameraActivity"></activity>
    </application>

</manifest>

0 个答案:

没有答案