2017-07-08 2 views
0

En essayant de développer une application de lampe de poche comme ma première "vraie" application, et presque tout a fonctionné. Mais chaque fois que je veux éteindre ma lampe de poche, mon application se bloque. Code et Logcat journal suit:Android Studio: la lampe de poche tombe en panne lors de la désactivation

package com.leuchtstein.flashlight; 

import android.hardware.Camera; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 

import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 
public boolean stat = false; 
TextView text; 
Camera camera; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     text = (TextView) findViewById(R.id.textView); 
    } 

public void triggerlight(View view) { 

    if (stat == false) { 
     camera = Camera.open(); 
     Camera.Parameters parameters = camera.getParameters(); 
     parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
     camera.setParameters(parameters); 
     camera.startPreview(); 

     text.setText("ON"); 
     stat = true; 


    } else { 
     camera = Camera.open(); 
     Camera.Parameters parameters = camera.getParameters(); 
     parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
     camera.setParameters(parameters); 
     camera.stopPreview(); 
     camera.release(); 

     text.setText("OFF"); 
     stat = false; 


    } 



} 


} 

activity_main.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.leuchtstein.flashlight.MainActivity"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="16dp" 
     android:text="@string/desc_textview" 
     android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" 
     app:layout_constraintHorizontal_bias="0.95" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="triggerlight" 
     android:text="Turn on/off" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView" 
     app:layout_constraintVertical_bias="0.387" /> 
</android.support.constraint.ConstraintLayout> 

Logcat:

https://pastebin.com/tNyF6GvX 

Merci à l'avance, leuchtstein.

EDIT: Oui, j'ai la fonction utilise-autorisation:

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


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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Répondre

2

Utilisez la permission suivante dans

AndroidManifest.xml

fichier

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

Et suivez ce fil pour plus d'informations fail-to-connect-to-camera-service