2016-12-16 4 views
0

기기의 카메라 플래시를 켤 수있는 앱을 만들려고합니다. 코드에서 오류를 표시하지 않지만 내 기기에서 앱을 실행하는 중에 충돌이 발생합니다. 보고 버그는 Unable to start activity이고 어떤 것은 Fail to connect Camera Services입니다. 나는 안드로이드 개발에 새로운 경험이 있기 때문에 충분한 지식이 없습니다. 나는 이것에 관한 몇 가지 질문을 이미 보았지만 유용한 정보를 찾을 수 없었다. 모든 대답은 대략 내가 이미 한 매니 페스트 파일에 사용 권한을 추가하는 것을 제안했습니다. 매니페스트 파일의Android : 활동을 시작할 수 없거나 카메라 서비스에 연결하지 못했습니다.

내용 : 주 활동 자바의

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.joshiyogesh.flashlight"> 
    <uses-permission android:name="android.permission.CAMERA"/> 
    <uses-feature android:name="android.hardware.camera"/> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     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> 

내용 :

package com.example.joshiyogesh.flashlight; 

import android.content.pm.PackageManager; 
import android.graphics.Color; 
import android.hardware.Camera; 
import android.hardware.Camera.Parameters; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

    Button btn; 
    android.hardware.Camera camera; 
    Camera.Parameters parameters; 
    boolean isFlash = false; 
    boolean isOn = false; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button)findViewById(R.id.button2); 
     if(getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) 
     { 
      camera = Camera.open(); 
      parameters = camera.getParameters(); 
      isFlash = true; 
     } 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      if(isFlash){ 
       if(!isOn){ 
        btn.setText("Off"); 
        btn.setBackgroundColor(Color.GREEN); 
        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
        camera.setParameters(parameters); 
        camera.startPreview(); 
        isOn = true; 
       } 
       else{ 
        btn.setText("ON"); 
        btn.setBackgroundColor(Color.RED); 
        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
        camera.setParameters(parameters); 
        camera.stopPreview(); 
        isOn = false; 
       } 
      } 

      else{ 
       Toast.makeText(MainActivity.this,"Camera Not detecting",Toast.LENGTH_LONG).show(); 

      } 

      } 
     }); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     if(camera!=null){ 
      camera.release(); 
      camera = null; 
     } 
    } 
} 

I have uploaded image of report bug of my mobile device

+0

답변을 이미지로 게시해야합니까? –

+0

메인 페스트 파일 게시 –

+0

올바르게 작성했는지 확인하십시오. http://stackoverflow.com/a/26842715/5156075 –

답변

0

내가 카메라를 열려면 코드를 게시하도록하겠습니다, 귀하의 필요에 따라 변경하십시오.

이 시도 :

static Camera camera = null; 

을 다음과 같은 선언 : 또한 그것을

camera.release(); 

: 카메라를 사용한 후에

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

    remoteViews.setViewVisibility(R.id.button1, View.GONE); 
    remoteViews.setViewVisibility(R.id.button2, View.VISIBLE); 
    localAppWidgetManager.updateAppWidget(componentName, remoteViews); 
    } else { 
    clickOn = true; 
    camera.stopPreview(); 
    camera.release(); 
    camera = null; 

    remoteViews.setViewVisibility(R.id.button1, View.VISIBLE); 
    remoteViews.setViewVisibility(R.id.button2, View.GONE); 
    localAppWidgetManager.updateAppWidget(componentName, remoteViews); 
}  
} catch(Exception e) { 
    Log.e("Error", ""+e); 
} 

를 문에 따라 그것을 해제하는 것을 잊지 마세요 런타임에 카메라를 열 수있는 권한이 앱에 부여되지 않은 것일 수 있습니다. 안드로이드 6.0에서는 특정 작업을 수행 할 런타임 권한이 필요하기 때문입니다. 당신이 안드로이드 6.0 (산들 바람) 이상을 사용하는 경우

그래서, 권한이에 따라 사용 가능 또는 사용되지 않았는지 확인하십시오 : 카메라

사용 권한이 비활성화 될 수 있고 응용 프로그램 설정에서 활성화해야합니다. 설정 -> 앱 -> [귀하의 앱] -> 권한.

그게 나를 위해 일한 것입니다. 희망이 도움이 당신이 너무 :

편집 및 오류 로그 캣을 얻을 수 있도록 catch 블록에 e.printstacktrace()을 사용하십시오.

0

카메라를 놓을 때 문제가 있다고 생각합니다. releasemethodonStop에 기록 했으므로 앱을 종료해야만 카메라가 해제됩니다. 버튼 click method에서 플래시를 끌 때 카메라를 release으로 시도하십시오.

+0

나는 그것을했다.. 아직 해결할 수 없었다. –

0

나는 어디가 잘못 됐어. 위에 적힌 코드는 오른쪽입니다. 유일한 문제는 marshmallow를 사용하여 장치를 통해 카메라 권한을 얻을 수있는 권한을 부여해야한다는 것입니다.

관련 문제