안드로이드 스튜디오로 간단하게 플래시가 나오게 작업을 해보았습니다.

그런데 정상작동을 안합니다. 오류도 없고..

이리저리 다 해봤는데 모르겠네요.. 


나중에 해결되면 업데이트 하려고 블로그에 백업해 놓습니다. ^^

혹시 아시는 분 댓글 달아주세용...


조사해본 결과로 카메라 관련 퍼미션은 아래의 내용 정도로 모두 되는 것 같습니다.


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

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

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

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


소스는 아래와 같은데. 작동은 안됩니다.

참~ 이상하군용 @_@


package com.example.cholm.flashlight;

import androidx.appcompat.app.AppCompatActivity;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private Button onOffButton;
private Camera _camara;
private Camera.Parameters parameters;
private boolean isFlashOn = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onOffButton = (Button) findViewById(R.id.button);
onOffButton.setOnClickListener(this);
}


public void getCamera(){
if(_camara == null){
try{
_camara=Camera.open();
parameters= _camara.getParameters();
}
catch (Exception ex)
{
Toast.makeText(this, ex.toString(), Toast.LENGTH_LONG).show();
}

}
}

@Override
public void onClick(View view){
if(view == onOffButton){
if(isFlashOn){
turnoffFlash();
}
else
{
getCamera();
tuneOnFlash();
}
}
}

public void tuneOnFlash()
{
try{
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
_camara.setParameters(parameters);
_camara.startPreview();
isFlashOn=true;
onOffButton.setText("OFF");
}
catch (Exception ex){
Toast.makeText(this, ex.toString(), Toast.LENGTH_LONG).show();
}
}

public void turnoffFlash(){
try{
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
_camara.setParameters(parameters);
_camara.stopPreview();
isFlashOn=false;
onOffButton.setText("ON");
}
catch (Exception ex){
Toast.makeText(this, ex.toString(), Toast.LENGTH_LONG).show();
}
}

@Override
public void onStop(){
super.onStop();
if(_camara!=null){
_camara.release();
_camara = null;
parameters = null;
}
}

@Override
public void onRestart(){
super.onRestart();
}
}

대체 이유가 뭘까....

+ Recent posts