package com.example.led_vlc;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MainActivity extends Activity {
private Camera camera;
private final Context context = this;
class LightThread extends Thread {
final Parameters p = camera.getParameters();
int num;
public void num(int i){
num = i;
}
public void run() {
int i, j;
for (i=0; i<10; i++) {
for(j=0; j<10; j++){
if(j<num) {
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();
Log.i("info", "torch is turn on!");
}
else {
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();
Log.i("info", "torch is turn off!");
}
SystemClock.sleep(50);
}
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final PackageManager pm = context.getPackageManager();
if (!isCameraSupported(pm)) {
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("No Camera");
alertDialog.setMessage("The device's doesn't support camera.");
alertDialog.setButton(RESULT_OK, "OK",
new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog,
final int which) {
Log.e("err", "The device's doesn't support camera.");
}
});
alertDialog.show();
}
camera = Camera.open();
}
public void OnButtonClicked(View view)
{
PackageManager pm = context.getPackageManager();
LightThread LT = new LightThread ();
if(LT != null) {
LT.interrupt();
Log.i("info", "먼춰라 멈춰라 제발 멈춰");
}
Log.i("info", "여기는??");
if (isFlashSupported(pm)) {
switch(view.getId()) {
case R.id.button1:
LT.num(1);
LT.start();
break;
case R.id.button2:
LT.num(2);
LT.start();
break;
case R.id.button3:
LT.num(3);
LT.start();
break;
case R.id.button4:
LT.num(4);
LT.start();
break;
case R.id.button5:
LT.num(5);
LT.start();
break;
case R.id.button6:
LT.num(6);
LT.start();
break;
case R.id.button7:
LT.num(7);
LT.start();
break;
case R.id.button8:
LT.num(8);
LT.start();
break;
case R.id.button9:
break;
}
}
else {
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("No Camera Flash");
alertDialog
.setMessage("The device's camera doesn't support flash.");
alertDialog.setButton(RESULT_OK, "OK",
new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog,
final int which) {
Log.e("err",
"The device's camera doesn't support flash.");
}
});
alertDialog.show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private boolean isFlashSupported(PackageManager packageManager) {
// TODO Auto-generated method stub
if (packageManager
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
return true;
}
return false;
}
private boolean isCameraSupported(PackageManager packageManager) {
// TODO Auto-generated method stub
if (packageManager
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
return true;
}
return false;
}
}
안녕하세요
후방카메라 flash의 깜빡임을 제어 하기 위한 안드로이드 앱을 만들고 있습니다.
8개의 버튼을 사용해 서로 다른 주기의 깜빡임을 주고 있습니다.
그런데 1번 버튼을 누르고 2번 버튼을 누르면 1번이 죽고 2번으로 깜빡임이 나와야 되는게 정상인데
두가지 깜빡임이 동시에 나타나고 있습니다.
이것저것 알아보니 thread.join(), thread.interrupt() 함수를 사용해서 쓰레드를 종료할 수 있다고 하는데
도저히 코드를 고쳐봐도 종료 되지가 않습니다.
위의 코드를 어떻게 바꾸면 제대로 동작을 할까요...ㅠㅠ
부탁드리겠습니다.