简体   繁体   中英

Camera shutting down VM - java.lang.RuntimeException: setParameters failed

This is my error:

12-03 20:25:30.767  19809-19809/com.app.test E/AndroidRuntime? FATAL EXCEPTION: main
    Process: com.app.test, PID: 19809
    java.lang.RuntimeException: setParameters failed
            at android.hardware.Camera.native_setParameters(Native Method)
            at android.hardware.Camera.setParameters(Camera.java:1878)
            at com.app.test.CameraManager.TakePicture(CameraManager.java:107)
            at com.app.test.DesignerFragment.CameraAction(DesignerFragment.java:808)
            at com.app.test.MainActivity.CameraAction(MainActivity.java:1031)
            at com.app.test.MainActivity$3.onClick(MainActivity.java:297)
            at android.view.View.performClick(View.java:5198)
            at android.view.View$PerformClick.run(View.java:21147)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5417)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

This is my manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.app.test"
    android:versionCode="43"
    android:versionName="3.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="21" />

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

    <!--  <uses-permission android:name="android.permission.CAMERA" />
      <uses-feature android:name="android.hardware.camera" android:required="false" />
      -->

    <uses-feature android:name="android.hardware.camera" android:required="false"/>

    <!--<uses-feature android:name="android.hardware.camera.front" android:required="false" />-->

    <uses-feature android:name="android.hardware.camera.front" android:required="false"/>

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.location" />
    <uses-feature android:name="android.hardware.camera.setParameters" />

    <!--
      IMPORTANT: Change "com.parse.starter.permission.C2D_MESSAGE" in the lines below
      to match your app's package name + ".permission.C2D_MESSAGE".
    -->

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <uses-permission android:name="android.permission.FLASHLIGHT"
        android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
        android:protectionLevel="normal"/>
    <uses-feature android:name="android.hardware.camera.flash"/>

    <!--
      IMPORTANT: Change "com.parse.tutorials.pushnotifications.permission.C2D_MESSAGE" in the lines below
      to match your app's package name + ".permission.C2D_MESSAGE".
    -->
    <permission
        android:name="com.app.test.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.app.test.permission.C2D_MESSAGE" />

    <application
        android:name="com.app.application.GlobalApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.parse.ui.ParseLoginActivity.PARSE_LOGIN_ENABLED"
            android:value="true" />

        <!-- Google Analytics Version v4 needs this value for easy tracking -->
        <!--
            <meta-data android:name="com.google.android.gms.analytics.globalConfigResource"
            android:resource="@xml/global_tracker" />
        -->


        <!--
            <meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        -->

        <activity
            android:name="com.parse.ui.ParseLoginActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop" >
            <meta-data
                android:name="com.parse.ui.ParseLoginActivity.PARSE_LOGIN_ENABLED"
                android:value="true" />
            <!-- <meta-data -->
            <!-- android:name="com.parse.ui.ParseLoginActivity.PARSE_LOGIN_EMAIL_AS_USERNAME" -->
            <!-- android:value="true"/> -->
            <meta-data
                android:name="com.parse.ui.ParseLoginActivity.FACEBOOK_LOGIN_ENABLED"
                android:value="true" />
            <meta-data
                android:name="com.parse.ui.ParseLoginActivity.TWITTER_LOGIN_ENABLED"
                android:value="true" />
        </activity>

        <!-- <activity -->
        <!-- android:name="com.app.test.MainActivity" -->
        <!-- android:configChanges="keyboardHidden|orientation|screenSize" -->
        <!-- android:label="@string/app_name" -->
        <!-- android:screenOrientation="portrait" > -->
        <!-- </activity> -->

        <activity
            android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <meta-data
            android:name="com.parse.APPLICATION_ID"
            android:value="@string/parse_app_id" />
        <meta-data
            android:name="com.parse.CLIENT_KEY"
            android:value="@string/parse_client_key" />
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />
        <meta-data
            android:name="com.app.test.notification_icon"
            android:resource="@drawable/ic_launcher" />

        <activity
            android:name=".DispatchActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".IntroActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".UserSettingsActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@style/PreferenceScreen" >
        </activity>
        <activity
            android:name=".EditProfileActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:parentActivityName=".EditProfileActivity"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".ChangePasswordActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:parentActivityName=".ChangePasswordActivity"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".PaymentDetailsActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:parentActivityName=".PaymentDetailsActivity"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".MainActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>
        </activity>
        <activity
            android:name=".PurchaseActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.app.gallery.GalleryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.app.feed.FeedActivityV2"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.app.feed.SearchActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:parentActivityName="com.app.feed.FeedActivityV2"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:name="com.app.feed.SuggestedUserActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:parentActivityName="com.app.feed.FeedActivityV2"
            android:screenOrientation="portrait">
        </activity>

        <activity
            android:name="com.app.comments.CommentsActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:parentActivityName="com.app.feed.FeedActivityV2"
            android:screenOrientation="portrait" >
        </activity>

        <activity
            android:name="com.app.notifications.NotificationsActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:parentActivityName="com.app.feed.FeedActivityV2"
            android:screenOrientation="portrait" >
        </activity>

        <service
            android:name="com.paypal.android.sdk.payments.PayPalService"
            android:exported="false" />

        <activity android:name="com.paypal.android.sdk.payments.PaymentActivity" />
        <activity android:name="com.paypal.android.sdk.payments.LoginActivity" />
        <activity android:name="com.paypal.android.sdk.payments.PaymentMethodActivity" />
        <activity android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity" />
        <activity android:name="com.paypal.android.sdk.payments.PayPalFuturePaymentActivity" />
        <activity android:name="com.paypal.android.sdk.payments.FuturePaymentConsentActivity" />
        <activity android:name="com.paypal.android.sdk.payments.FuturePaymentInfoActivity" />
        <activity android:name="com.paypal.android.sdk.payments.PayPalProfileSharingActivity" />
        <activity android:name="com.paypal.android.sdk.payments.ProfileSharingConsentActivity" />
        <activity
            android:name="io.card.payment.CardIOActivity"
            android:configChanges="keyboardHidden|orientation" />
        <activity android:name="io.card.payment.DataEntryActivity" />

        <provider
            android:name="com.app.utility.ContentProvider"
            android:authorities="com.app"
            android:enabled="true"
            android:exported="true" >
        </provider>

        <activity
            android:name=".PaymentProcessingActivity"
            android:label="@string/title_activity_payment_processing" >
        </activity>
        <activity
            android:name="com.app.utility.WrapperWeb"
            android:label="@string/title_activity_wrapper_web" >
        </activity>

        <service android:name="com.parse.PushService" />

        <!-- Custom Receiver -->
        <receiver
            android:name=".Receiver"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.parse.push.intent.RECEIVE" />
                <action android:name="com.parse.push.intent.DELETE" />
                <action android:name="com.parse.push.intent.OPEN" />
            </intent-filter>
        </receiver>
        <!-- End Custom Receiver -->

        <receiver android:name="com.parse.ParseBroadcastReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>
        <receiver
            android:name="com.parse.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <!-- IMPORTANT: Change "com.parse.tutorials.pushnotifications" to match your app's package name. -->
                <category android:name="com.app.test" />
            </intent-filter>
        </receiver>

        <!-- replace @drawable/push_icon with your push icon identifier -->
        <meta-data
            android:name="com.parse.push.notification_icon"
            android:resource="@drawable/ic_stat_ic_notification" />

        <activity
            android:name="com.app.feed.FeedActivitySingle"
            android:label="@string/title_activity_feed_activity_single"
            android:parentActivityName="com.app.gallery.GalleryActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.app.gallery.GalleryActivity" />
        </activity>
    </application>

</manifest>

I've been wracking my head as to why this doesn't work. The front camera shuts down the app every time I launch it. What could be going wrong? What is wrong with my manifest?

Can you post the code that launches the Camera? What I can see right now is that you declare a permission that does not exist:

<uses-permission android:name="android.hardware.camera.autofocus" />

There are some features declaration that have typos:

<used-feature android:name="android.hardware.location" />
<used-feature android:name="android.hardware.camera.setParameters" />

You can try fixing these for a start, see if it helps. You can see the list of all features available for declaration here

I made sure all my permissions were set to false under required:

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

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
<uses-feature android:name="android.hardware.camera.setParameters" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />

<uses-permission android:name="android.permission.FLASHLIGHT"
    android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
    android:protectionLevel="normal"/>

<uses-feature android:name="android.hardware.camera.flash" android:required="false" />

I also fixed some typos as suggested above by k3v1n3ud3.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM